代码之家  ›  专栏  ›  技术社区  ›  Nipun Tharuksha

带in常数的Laravel访问常数

  •  0
  • Nipun Tharuksha  · 技术社区  · 5 年前

    我在拉威尔定义常量如下

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

    现在我要做的是在urlcontents中定义一个新的数组,其中包括下面这样的另一个数组

     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'] ]; 
        //
        }
    
    0 回复  |  直到 5 年前
        1
  •  2
  •   TsaiKoga    5 年前

    我想你不需要定义常量 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)['id']; // call the const url_01, url_02...
        }
        return $common_array;    
    }
    

    urlConstants::commonArray();