<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 第十九章 面向對象的工具 學習要點: 1.OOP 的魔術方法 2.類函數和對象函數 3.OOP 的反射API PHP通過類和方法等語言結構支持面向對象編程。同時也通過對象相關的函數和 內置類為面向對象提供廣泛支持。 **一.OOP的魔術方法** PHP引入了__autoload()內置方法來自動包含類文件。__autoload()應該被寫成單個參 數的方法。當PHP引擎遇到試圖實例化未知類的操作時,會調用__autoload()方法,并將類 名當作字符串參數傳遞給它。 ``` function __autoload($_className) { require $_className . '.class.php'; } $demo = new Computer (); ``` PHP采用了__call()內置方法來屏蔽對象調用方法時產生的錯誤。當對象調用一個不存 在的方法時,會自動調用__call()方法。 ``` private function __call($_methodName,$args) { echo $_methodName.'方法不存在'; print_r($args); } $computer->go('我',1,'知道'); ``` PHP使用__toString()內置方法來打印對象的引用。沒有使用__toString()的對象是產生 一個錯誤,當打印對象的時候會自動調用__toString()方法。 ``` class Computer { private function __toString() { return '打印對象'; } } echo new Computer (); ``` PHP可以在類中定義一個__clone()內置方法來調整對象的克隆行為。當一個對象被克 隆的時候自動執行__clone()方法,而復制的對象可以在其方法體內進行調整。 ``` class Computer { public $_name; public function __clone() { $this->_name = 'ibm'; } } $computer1 = new Computer (); $computer1->_name = 'dell'; $computer2 = clone $computer1; echo $computer2->_name; ``` **二.類函數和對象函數** PHP提供了一系列強大的函數來檢測類和對象。以便在第三方系統,運行時知道正在 使用的是哪個。 1.class_exists()函數接受表示類的字符串,檢查并返回布爾值。如果類存在,返回true, 否則返回false。 ``` echo class_exists('Computer'); ``` 2.get_class()函數獲取對象的類名,如果不是對象,則返回false。 ``` echo get_class($computer); ``` 3.get_class_methods()函數獲取類中的方法(公共的),以數組的形式返回出來。 ``` print_r(get_class_methods($computer)); ``` 4.get_class_vars()函數獲取類中的字段(公共的),以數組的形式返回出來 ``` print_r(get_class_vars('Computer')); ``` 5.get_parent_class()函數獲取子類的父類,如果沒有返回false。 ``` echo get_parent_class('NoteComputer'); ``` 6.interface_exists()函數確定接口是否存在,如果存在返回true,否則返回false。 ``` echo interface_exists('Computer'); ``` 7.is_a()函數確定對象是否是類或者是否是這類的父類時,返回ture,否則返回false。 ``` echo is_a($computer,'Computer'); ``` 8.is_subclass_of()函數確定對象是否是類的子類,是返回ture,否則返回false。 ``` echo is_subclass_of($notecomputer,'Computer'); ``` 9.method_exists()函數確定對象的方法是否存在,是返回ture,否則返回false。 ``` echo method_exists($computer,'_run'); ``` **三.OOP的反射API** PHP5的類和對象函數并沒有告訴我們類內部的所有一切,而只是報告了它們的公共成 員。要充分了解一個類,需要知道其私有成員和保護成員,還要知道其方法所期望的參數。 對此,使用反射API。 1.獲得反射API的轉儲信息 ``` $rc = new ReflectionClass('Computer'); Reflection::export($rc); ``` 2.獲得PHP內置的類庫的信息 ``` Reflection::export(new ReflectionClass('Reflection')); ``` 3.獲取類里的某個元素 ``` $_rc = new ReflectionClass('Computer'); echo $_rc->getFileName(); echo $_rc->getName(); ``` **注:文章出自李炎恢PHP視頻教程,本文僅限交流使用,不得用于商業用途,否則后果自負。**
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看