首页 > 其他 > 详细

yii2 学习中

时间:2016-02-13 23:11:08      阅读:216      评论:0      收藏:0      [点我收藏+]

属性:

public function __get($name)              // 这里$name是属性名
{
    $getter = ‘get‘ . $name;              // getter函数的函数名
    if (method_exists($this, $getter)) {
        return $this->$getter();          // 调用了getter函数
    } elseif (method_exists($this, ‘set‘ . $name)) {
        throw new InvalidCallException(‘Getting write-only property: ‘
            . get_class($this) . ‘::‘ . $name);
    } else {
        throw new UnknownPropertyException(‘Getting unknown property: ‘
            . get_class($this) . ‘::‘ . $name);
    }
}

// $name是属性名,$value是拟写入的属性值
public function __set($name, $value)
{
    $setter = ‘set‘ . $name;             // setter函数的函数名
    if (method_exists($this, $setter)) {
        $this->$setter($value);          // 调用setter函数
    } elseif (method_exists($this, ‘get‘ . $name)) {
        throw new InvalidCallException(‘Setting read-only property: ‘ .
            get_class($this) . ‘::‘ . $name);
    } else {
        throw new UnknownPropertyException(‘Setting unknown property: ‘
            . get_class($this) . ‘::‘ . $name);
    }
}

 

someObject->foo实际是调用someObject->getFoo()

someObject->foo = $some_value 实际是 someObject->setFoo($some_value)

如下的Post类,实现了可读可写的属性title:

class Post extends yii\base\Object    // 第一步:继承自 yii\base\Object
{
    private $_title;                 // 第二步:声明一个私有成员变量

    public function getTitle()       // 第三步:提供getter和setter
    {
        return $this->_title;
    }

    public function setTitle($value)
    {
        $this->_title = trim($value);
    }
}

这样好处多多

Component继承于yii\base\object, 具有以下三个重要特征

  属性

  事件

  行为

事件:

yii\base\Component::on() 就是用来绑定的

$person = new Person;

// 使用PHP全局函数作为handler来进行绑定
$person->on(Person::EVENT_GREET, ‘person_say_hello‘);

// 使用对象$obj的成员函数say_hello来进行绑定
$person->on(Person::EVENT_GREET, [$obj, ‘say_hello‘]);

// 使用类Greet的静态成员函数say_hello进行绑定
$person->on(Person::EVENT_GREET, [‘app\helper\Greet‘, ‘say_hello‘]);

// 使用匿名函数
$person->on(Person::EVENT_GREET, function ($event) {
    echo ‘Hello‘;
});

 

行为:

行为是把一个类绑定到另一个类, 让第二个类有第一个类的属性和方法. 即:不改变现有类的情况下, 对类的功能进行扩充

使用行为的大致流程

  • 从 yii\base\Component 派生自己的类,以便使用行为;
  • 从 yii\base\Behavior 派生自己的行为类,里面定义行为涉及到的属性、方法;
  • 将Component和Behavior绑定起来;
  • 像使用Component自身的属性和方法一样,尽情使用行为中定义的属性和方法。 

 

 

 

 

 

 

 

 

 

在http://www.digpage.com/index.html中学习yii2

yii2 学习中

原文:http://www.cnblogs.com/derrck/p/5188369.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!