如何从同一个类访问类变量

时间:2015-10-23 08:52:09

标签: php class oop variables

在此片段中:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product_variant extends Model
{

    protected $primaryKey='variant_id';

    public $translationForeignKey = $this->primaryKey;
}

此规则不起作用:

public $translationForeignKey = $this->primaryKey;

我们如何访问与此类相同范围的变量?

2 个答案:

答案 0 :(得分:2)

在构造函数中设置值或创建getter以返回值。

//选项1

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product_variant extends Model
{

    protected $primaryKey='variant_id';

    public $translationForeignKey = '';

    // option 1
    public function __construct()
    {
        $this->translationForeignKey = $this->primaryKey;
    }

}

//选项2,你甚至不需要这个方法中的其他属性,除非它的值在执行期间可能会改变

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product_variant extends Model
{

    protected $primaryKey='variant_id';

    // option 2
    public function getTranslationForeignKey()
    {
         return $this->primaryKey;
    }

}

答案 1 :(得分:1)

在定义类时,您只能为类属性指定常量值。这里不允许使用变量。

您需要在构造函数中执行赋值部分。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product_variant extends Model
{

    protected $primaryKey='variant_id';

    public $translationForeignKey;

    public function __construct() 
    {
        $this->translationForeignKey = $this->primaryKey;
    }
}