在laravel模型中创建常量,同时在数组中使用其他常量作为键

在laravel模型中创建常量,同时在数组中使用其他常量作为键,laravel,Laravel,我想在laravel模型中创建一个多维数组常量。数组键应该是同一个模型或另一个模型中定义的另一个常量。比如说 const MASTER_PRODUCT_COMMERCIAL_VEHICLE = 'PR00000001'; const MASTER_PRODUCT_LOAN_AGAINST_PROPERTY = 'PR00000002'; const TENURE_LIMIT = [ 'PR00000001' => // want to define

我想在laravel模型中创建一个多维数组常量。数组键应该是同一个模型或另一个模型中定义的另一个常量。比如说

const MASTER_PRODUCT_COMMERCIAL_VEHICLE = 'PR00000001';
const MASTER_PRODUCT_LOAN_AGAINST_PROPERTY = 'PR00000002';

const TENURE_LIMIT = [
                  'PR00000001' =>  // want to define const MASTER_PRODUCT_COMMERCIAL_VEHICLE here
                      [
                         'min' => '12', 
                         'max'=>'60'
                      ],
                  'PR00000002' =>  // want to define const MASTER_PRODUCT_LOAN_AGAINST_PROPERTY here
                      [
                         'min' => '180', 
                         'max'=>'240'
                      ]
                ];

您可以使用
self
引用同一类上的常量

classmymodel扩展了模型{
const MASTER_PRODUCT_COMMERCIAL_VEHICLE='PR00000001';
const MASTER_PRODUCT_LOAN_针对财产='PR00000002';
常数任期限制=[
self::MASTER\u PRODUCT\u COMMERCIAL\u VEHICLE=>[
…你的数据。。。
],
self::主产品贷款针对物业=>[
…你的数据。。。
],
];
}
如果它们在不同的类上,只需使用类名而不是“self”:

类常量{
const MASTER_PRODUCT_COMMERCIAL_VEHICLE='PR00000001';
const MASTER_PRODUCT_LOAN_针对财产='PR00000002';
}
使用App\Constants;//这里放置常量类的路径
类MyModel扩展了模型{
常数任期限制=[
常量::主车\产品\商用车=>[
…你的数据。。。
],
常量::主产品贷款与财产=>[
…你的数据。。。
],
];
}

我的答案与@gbalduzzi非常相似,只是我想更具体地指定如何访问数组(&而且我几乎完成了我的答案:)

您可以创建一个类来定义所有常量。 比如说ProductConstant.php

class ProductConstant{
    const MASTER_PRODUCT_COMMERCIAL_VEHICLE = 'PR00000001';
    const MASTER_PRODUCT_LOAN_AGAINST_PROPERTY = 'PR00000002';
   
    const TENURE_LIMIT = [
                          self::MASTER_PRODUCT_COMMERCIAL_VEHICLE => [
                               'min' => '12', 
                               'max'=>'60' 
                           ],
                          self::MASTER_PRODUCT_LOAN_AGAINST_PROPERTY => [
                               'min' => '180', 
                               'max'=>'240'
                           ]
                        ];
}
然后你可以在其他课堂上使用它

use App\ProductConstant;

$minmaxarray = ProductConstant::TENURE_LIMIT[ProductConstant::MASTER_PRODUCT_COMMERCIAL_VEHICLE];
//will give ['min' => '12', 'max'=>'60' ] as output.

您必须创建一个函数并调用该函数以获取变量,如下所示:

class A{
    const MASTER_PRODUCT_COMMERCIAL_VEHICLE = 'PR00000001';
    const MASTER_PRODUCT_LOAN_AGAINST_PROPERTY = 'PR00000002';
    public static function tenure_limit()
       {
           return [
                           static::MASTER_PRODUCT_COMMERCIAL_VEHICLE =>
                               [
                                   'min' => '12',
                                   'max'=>'60'
                               ],
                           static::MASTER_PRODUCT_LOAN_AGAINST_PROPERTY =>
                               [
                                   'min' => '180',
                                   'max'=>'240'
                               ]
                       ];
       }
}
然后像这样使用:

A::tenure_limit();

我同意,这是访问阵列的一种好方法