<?php
class Magic_Methods
{
protected $meta;
public function __construct()
{
$this->meta = (object) array(
'test' => 1
);
}
public function __isset($nam
現在我有一個BaseObject對數據庫執行ORM。我依靠私有$ data和magic setter和getter來創建對象作爲私有對象成員(動態地)。在子類中,如果我想更改行爲來設置單個對象成員,則必須覆蓋父設置器並查找關鍵字。我的問題是,如果有更好的方法來做到這一點,我可以只覆蓋單個對象的成員通過__setter寧願去 基本對象映射它映射到數據庫和動態創建一堆私人則params的 class
在__construct中設置屬性時調用了神奇方法__set嗎? class MyClass
{
public function __construct()
{
$this->property = 'something';
}
public function __set($name,$value)
{
$this->{$n
除了爲了正確性而繞過任何實例屬性之外,隱式特殊方法查找通常也會繞過對象的元類的方法__getattribute__()。 The docs提到的特殊方法,如__hash__,__repr__和__len__,而我的經驗還包括__iter__爲Python 2.7知道。 引述an answer to a related question: 「魔術__methods__()被特殊處理:它們在內部分配給