yii2 学习中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii2 学习中相关的知识,希望对你有一定的参考价值。
属性:
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 学习中的主要内容,如果未能解决你的问题,请参考以下文章
Angular.js 学习二---$scope和$rootScope,Angular模块的run方法,依赖注入中代码压缩