PHP物件導向--一些魔方方法____PHP

來源:互聯網
上載者:User
</pre><pre name="code" class="php"><?phpdate_default_timezone_set("PRC");/** * 魔術方法3之屬性重載 * 1. 在給不可訪問屬性賦值時,__set() 會被調用。 * 2. 讀取不可訪問屬性的值時,__get() 會被調用。 * 3. 當對不可訪問屬性調用 isset() 和empty()時,__isset() 會被調用。 * 4. 當對不可訪問屬性調用 unset() 時,__unset() 會被調用 */class MagicTest{  public $name;  public function __tostring(){    return "This is the Class MagicTest.\n";  }  public function __invoke($x){    echo "__invoke called with parameter " . $x . "\n";  }  public function __call($name, $arguments){    echo "Calling " . $name . " with parameters: " . implode(', ', $arguments) . "\n";  }  public static function __callStatic($name, $arguments){    echo "Static calling " . $name . " with parameters: " . implode(', ', $arguments) . "\n";  }  // 通過這兩個方法可以實現動態對象屬性  public function __get($name){    return "Getting the property " . $name;  }  public function __set($name, $value){    echo "Setting the property " . $name . " to value ". $value. "\n";  }  public function __isset($name){    echo "__isset invoked\n";    return false;  }  public function __unset($name){    echo "unsetting property " . $name;  }  public function __clone(){//深拷貝    }}$obj =  new MagicTest();echo $obj->name . "\n";  //對象中不存在name屬性,讀取不存在屬性,__get方法被調用$obj->name = "Name Value";//對象中不存在name屬性,設定不存在屬性,__set方法被調用echo '$obj->name is set? '. isset($obj->name) . "\n";//對象不存在name屬性,__isset方法調用echo '$obj->name is empty?' . empty($obj->name) . "\n";//對象不存在name屬性,__isset方法調用unset($obj->name);//對象不存在name屬性, __unset方法調用$p1 = new MagicTest();$p1->name = "p1";echo $p1->name."\n";$p2 = clone $p1;//深拷貝,如果有寫__clone魔法,則該__clone方法調用。$p2->name = "p2";echo $p1->name."\n";echo $p2->name."\n";//可以看出到p2不影響p1;$?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.