91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中十六個魔術方法分別是什么

發布時間:2021-03-11 11:45:17 來源:億速云 閱讀:140 作者:小新 欄目:編程語言

這篇文章主要介紹PHP中十六個魔術方法分別是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

No.1 __construct()

定義:類的構造函數
解釋:對象創建后第一個被自動調用的方法,通常被用來執行一些有用的初始化任務,例如在創建對象時對成員屬性賦予初始值。
例子:
Class Person{
    public $name;
    public $age;
    public $sex;

    public function __construct($name = '', $sex = '男', $age = 28) {
        $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
    }}注意:如果子類中定義了構造函數則不會調用其父類的構造函數。要執行父類的構造函數,需要在子類的構造函數中調用 parent::__construct()
NO.2 __destruct() [不常見]
定義:類的析構函數
解釋:與構造函數相反,在類銷毀之前執行一些操作,比如關閉文件、釋放結果等。
例子:
主動調用 unset( $obj )主動調用 $obj = NULL程序自動結束
NO.3 __call()
定義:在對象中調用一個不存在的方法時 自動調用
解釋:為了避免當調用的方法不存在時產生錯誤,而意外的導致程序中止,可以使用 __call() 方法來避免。
NO.4 __callStatic()
定義:同上 不同在于調用靜態方法時 自動調用
NO.5 __get()
定義:可以在對象的外部獲取私有成員屬性的值
例子:private $name;function __construct($name="", $age=1){
    $this->name = $name;}public function __get($propertyName){   
    return $this->$propertyName;}// 通過Person類實例化的對象,并通過構造方法為屬性賦初值$Person = new Person("小明", 60);// 直接訪問私有屬性name,自動調用了__get()方法可以間接獲取echo "姓名:" . $Person->name . "<br>";
No.6 __set()
定義:與__get()類似 為私有屬性賦值
例子:public function __set($propertyName, $value){
    $this->$propertyName = $value;}
No.7 __isset()
定義:在類外部 判斷屬性isset()例子:public function __isset($content) {
    echo "當在類外部使用isset()函數測定私有成員{$content}時,自動調用<br>";
    echo  isset($this->$content);}echo isset($person->name);
No.8 __unset()
定義:在類外部刪除私有變量時自動調用
No.9 __sleep()
定義:執行serialize時會被自動調用
例子:public function __sleep(){
    $this->name = base64_encode($this->name);
    return ['name', 'age'];}echo serialize($person);
No.10 __wakeup()
定義:與__sleep類似 在執行unserialize()時被自動調用
No.11 __toString()
定義:當類被當成字符串輸出時如何響應 例如 echo $obj; 應該顯示些什么。

注意:此方法必須返回一個字符串,否則將發出一條 `E_RECOVERABLE_ERROR` 級別的致命錯誤。

警告:不能在 __toString() 方法中拋出異常。這么做會導致致命錯誤。
NO.12 __invoke()
定義:當嘗試以調用函數的方式調用一個對象生效
例子:public function __invoke() {
    echo '拿我當函數用,我就會被自動調用';}$person = new Perseon();$person();
No.13 __set_state()
定義:調用var_export導出類時,該方法自動被調用。
No.14 __clone()
定義:當對象復制完成時調用
例子:public function __clone(){
    echo __METHOD__."你正在克隆對象<br>";
    $this->name = 'new name';
    $this->age = 18;}$copy_of_object = clone $object;
No.15 __autoload()
定義:嘗試加載未定義的類
例子:function  __autoload($className) {  
    $filePath = “project/class/{$className}.php”;  
    // 判斷文件是否可讀
    if (is_readable($filePath)) {  
        require($filePath);  
    }  }  if (條件A) {  
    $a = new A();  
    $b = new B();  
    $c = new C();  
    // … 業務邏輯  } else if (條件B) {  
    $a = newA();  
    $b = new B();  
    // … 業務邏輯  }注意:這里可以只用require,因為一旦包含進來后,php引擎再遇到類A時,將不會調用__autoload,而是直接使用內存中的類A,不會導致多次包含。

擴展:<?phpclass autoloader {
  public static $loader;
  public static function init() {
    if (self::$loader == NULL)
      self::$loader = new self ();
    return self::$loader;
  }
  public function __construct() {
    spl_autoload_register ( array ($this, 'model' ) );
    spl_autoload_register ( array ($this, 'library' ) );
  }
  public function model($class) {
    $class = preg_replace ( '/_model$/ui', '', $class );
    set_include_path ( get_include_path () . PATH_SEPARATOR . '/model/' );
    spl_autoload_extensions ( '.model.php' );
    spl_autoload ( $class );
  }
  public function library($class) {
    set_include_path ( get_include_path () . PATH_SEPARATOR . '/lib/' );
    spl_autoload_extensions ( '.library.php' );
    spl_autoload ( $class );
  }}//callautoloader::init ();?>
No.16 __debugInfo()
定義:打印所需調試信息
例子:public function __debugInfo(){
    return [
        'message' => "姓名:".$this->name . " 年齡:".$this->age    ];}$person = new Person('tongfei', 28);var_dump($person);

以上是“PHP中十六個魔術方法分別是什么”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

休宁县| 夹江县| 通辽市| 文昌市| 色达县| 灵丘县| 青海省| 开封市| 谢通门县| 开鲁县| 淄博市| 涟源市| 安多县| 曲松县| 仁布县| 黔南| 台东市| 塘沽区| 元谋县| 白玉县| 屯留县| 新郑市| 从江县| 河间市| 苏州市| 星子县| 宁德市| 大悟县| 乐平市| 定远县| 新河县| 新宾| 沐川县| 易门县| 邵东县| 建德市| 缙云县| 伊通| 沈丘县| 福鼎市| 宁南县|