Yii2的深入学习–yii\base\Object 类
之前我们说过 Yii2 中大多数类都继承自 yii\base\Object,今天就让我们来看一下这个类。
Object 是一个基础类,实现了属性的功能,其基本内容如下:
<?<span style="color: #000000">phpnamespace yii\base;</span><span style="color: #0000ff">use</span><span style="color: #000000"> Yii;</span><span style="color: #008000">/*</span><span style="color: #008000">* * Object 是一个基础类,实现了属性的功能 * Yii最基础的类,大多数类都继承了该类 </span><span style="color: #008000">*/</span><span style="color: #0000ff">class</span> <span style="color: #0000ff">Object</span> <span style="color: #0000ff">implements</span><span style="color: #000000"> Configurable{ </span><span style="color: #008000">/*</span><span style="color: #008000">* * 获取静态方法调用的类名。返回类的名称,如果不是在类中调用则返回 FALSE。 </span><span style="color: #008000">*/</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">function</span><span style="color: #000000"> className() { </span>...<span style="color: #000000"> } </span><span style="color: #008000">/*</span><span style="color: #008000">* * Constructor. </span><span style="color: #008000">*/</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span> __construct(<span style="color: #800080">$config</span> =<span style="color: #000000"> []) { </span>...<span style="color: #000000"> } </span><span style="color: #008000">/*</span><span style="color: #008000">* * 初始化对象 </span><span style="color: #008000">*/</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span><span style="color: #000000"> init() { } </span><span style="color: #008000">/*</span><span style="color: #008000">* * 魔术方法,实现 getter </span><span style="color: #008000">*/</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span> __get(<span style="color: #800080">$name</span><span style="color: #000000">) { </span>...<span style="color: #000000"> } </span><span style="color: #008000">/*</span><span style="color: #008000">* * 魔术方法,实现 setter </span><span style="color: #008000">*/</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span> __set(<span style="color: #800080">$name</span>, <span style="color: #800080">$value</span><span style="color: #000000">) { </span>...<span style="color: #000000"> } </span><span style="color: #008000">/*</span><span style="color: #008000">* * 魔术方法,实现 isset,基于 getter 实现,有 getter 方法的属性才算存在 </span><span style="color: #008000">*/</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span> __isset(<span style="color: #800080">$name</span><span style="color: #000000">) { </span>...<span style="color: #000000"> } </span><span style="color: #008000">/*</span><span style="color: #008000">* * 魔术方法,实现 unset,基于 setter 实现,有 setter 方法的属性才能 unset 掉 </span><span style="color: #008000">*/</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span> __unset(<span style="color: #800080">$name<span>!本文来源gaodai#ma#com搞*!代#%^码网5</span><pre>搞gaodaima代码
) { … } /** * Calls the named method which is not a class method. */ public function __call($name, $params) { … } /** * 检查对象或类是否具有 $name 属性,如果 $checkVars 为 true,则不局限于是否有 getter/setter */ public function hasProperty($name, $checkVars = true) { … } /** * 检查对象或类是否能够获取 $name 属性,如果 $checkVars 为 true,则不局限于是否有 getter */ public function canGetProperty($name, $checkVars = true) { … } /** * 检查对象或类是否能够设置 $name 属性,如果 $checkVars 为 true,则不局限于是否有 setter */ public function canSetProperty($name, $checkVars = true) { … } /** * 检查对象或类是否具有 $name 方法 */ public function hasMethod($name) { … }}