代码之家  ›  专栏  ›  技术社区  ›  Siraj Alam

无法将php变量放入php数组[duplicate]

  •  0
  • Siraj Alam  · 技术社区  · 8 年前

    我有下面的代码,其中出现错误“PHP致命错误:常量表达式包含无效操作”。当我在构造函数中定义变量时,它工作得很好。我使用的是Laravel框架。

    <?php
    
    namespace App;
    
    class Amazon
    {
        protected $serviceURL = config('api.amazon.service_url');
    
        public function __construct()
        {
        }
    
    }
    

    我看到了这个问题: PHP Error : Fatal error: Constant expression contains invalid operations 但我的代码并没有声明任何东西是静态的,所以这并没有回答我的问题。

    0 回复  |  直到 7 年前
        1
  •  65
  •   prateekkathal    9 年前

    如上所述 here

    类成员变量称为“属性”。您也可能会看到他们使用其他术语,如“属性”或“字段”,但在本参考中,我们将使用“属性”。它们是通过使用关键字public、protected或private中的一个来定义的,后跟一个普通变量声明。这个声明可能包含一个初始化,但这个初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,并且不能依赖于运行时信息才能进行计算。

    实现这一目标的唯一方法是:-

    <?php
    
    namespace App;
    
    class Amazon
    {
      protected $serviceURL;
    
      public function __construct()
      {
        $this->serviceURL = config('api.amazon.service_url');
      }
    }
    
        2
  •  2
  •   Manan    9 年前

    不允许以这种方式初始化类属性。必须将初始化移到构造函数中。

        3
  •  0
  •   4givN    8 年前

    我使用的另一个工作选择是与 boot( ) 拉维尔口若悬河:

    <?php
    
    namespace App;
    
    class Amazon {
        protected $serviceURL;
    
        protected static function boot()
        {
            parent::boot();
    
            static::creating(function ($model){
                $model->serviceURL = config('api.amazon.service_url');
            });
        } }