深入讲解PHP的Yii框架中的属性(Property)

Yii框架中,属性(Property)用于定义实例变量和 getter/setter 方法。它有以下特点:1. 定义属性时,需要指定其类型。Yii支持的类型有:

– string/integer/boolean: 标量类型

– float/double: 浮点类型

– array: 数组

– object: 对象

– className: 指定类名

– interfaceName: 指定接口名

2. 属性可以指定默认值,在实例化类时如果没有传入该属性值,将使用默认值。

3. 根据属性类型,Yii会自动生成getter和setter方法。如属性类型为string,会生成getString()和setString()方法。

4. 可以手动指定getter和setter方法名称。如:

public $name;
public function getName()  //自定义getter名称
{
    return $this->name; 
}
public function setName($value)  //自定义setter名称
{
    $this->name = $value;
} 

5. 可以指定属性为只读(readonly)或只写(writeonly),此时将只生成getter 或 setter方法。

6. 获取属性信息可以使用 Property::getInfo() 方法。

7. 属性值可以通过 魔术方法__get() 和 __set() 进行获取和设置。一个简单的示例:

class User extends \yii\base\Model
{
    public $name;   //string类型,生成getString()和setName()方法
    
    public $age = 25;  //integer类型,指定默认值为25
    
    public float $height;   //float类型
    
    public $addresses = [];  //array类型
    
    public \yii\web\IdentityInterface $identity; //interfaceName类型
    
    public function getInfo() //自定义getter名称
    {
        return $this->name . ', ' . $this->age; 
    }
}

通过 $user = new User(); 实例化后,可以如此访问属性:

– $user->name

– $user->age

– $user->height

– $user->addresses

– $user->identity

– $user->getInfo()

– $user->setName(‘John’)

– etc.Yii框架中的属性为我们简化了属性的get/set方法定义,让代码更清晰简洁。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论