Laravel访问常量,带有常量

问题描述 投票:0回答:1

我在Laravel中定义了常量,如下所示

class urlConstants
{
const url_01= [ 'id' => 1 , 'text' => 'xxxxxx' ] ; 
const url_02= [ 'id' => 2 , 'text' => 'bbbbbb' ] ; 
..
const url_99= [ 'id' => 99 , 'text' => 'ccccc' ] ; 
}

现在我想做的是在urlConstants中定义新数组,其中包括如下所示的另一个数组

 class urlConstants
    {
    const url_01= [ 'id' => 1 , 'text' => 'xxxxxx' ] ; 
    const url_02= [ 'id' => 2 , 'text' => 'bbbbbb' ] ; 
    ..
    const url_99= [ 'id' => 99 , 'text' => 'ccccc' ] ;

     // I KNOW I CAN DO SOMETHING LIKE BELOW
    const commonArray = [ 1 , 2 , 99 ]; 
    //
    }

但是我想知道还有其他方法可以访问此变量,而不仅仅是像下面这样输入整数

 class urlConstants
    {
    const url_01= [ 'id' => 1 , 'text' => 'xxxxxx' ] ; 
    const url_02= [ 'id' => 2 , 'text' => 'bbbbbb' ] ; 
    ..
    const url_99= [ 'id' => 99 , 'text' => 'ccccc' ] ;

     // 
    const commonArray = [ url_01['id'] , url_01['id'] , url_01['id'] ]; 
    //
    }
arrays laravel constants
1个回答
0
投票

我认为您不需要定义常量commonArray,您可以定义静态方法

调用其他常量constant()

public static function commonArray() {
    $common_array = array();
    $nums = range(1, 99);
    foreach($nums as $n) {
        $const_name = 'self::url_'. str_pad($n, 2, '0', STR_PAD_LEFT); // this will return self::url_01, self::url_02,...
        $common_array []= constant($const_name); // call the const url_01, url_02...
    }
    return $common_array;    
}

因此您可以通过以下方式调用此commonArray:

urlConstants::commonArray();
© www.soinside.com 2019 - 2024. All rights reserved.