变量与魔术方法

在php后端代码中,经常需要使用自定义魔术方法,魔术方法的调用,调用方式有两种:
1. 直接以函数的方式调用,

//返回一个 ActiveQuery 实例
$this->getImageFile()

2.以属性的方式调用

//返回一个对象数组或者空数组
$this->imageFile

例如:
//定义魔术方法以及同名变量

//与魔术方法同名的变量
public $imageFile; 

//魔术方法
public function getImageFile(){
    return $this->hasOne(UploadFile::className(), ['id' => 'image_file_id']);
}
//使用魔术方法
public function getImageUrl(){
    if($this->imageFile){
        return $this->imageFile->signUrl;
    }
}

对于第一种方式调用不存在问题,但是第二种方式则存在问题。

若类中存在同名的变量,而又想通过以属性的方式调用魔术方法来实现相关功能时,程序无法调用魔术方法。

$this->imageFile

因为,变量的优先级高于魔术方法,在调用魔术方法时,实际上是调用了该类的一个变量,因此无法实现魔术方法的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值