<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 類的自動加載 在編寫面向對象(OOP)程序時,很多開發者為每個類新建一個 PHP 文件。這會帶來一個煩惱:每個腳本的開頭,都需要包含(include)一個長長的列表(每個類都有個文件)。 在 PHP 5 中,已經不再需要這樣了。[spl\_autoload\_register()](https://www.php.net/manual/zh/function.spl-autoload-register.php)函數可以注冊任意數量的自動加載器,當使用尚未被定義的類(class)和接口(interface)時自動去加載。通過注冊自動加載器,腳本引擎在 PHP 出錯失敗前有了最后一個機會加載所需的類。 > **Tip** 盡管 [\_\_autoload()](https://www.php.net/manual/zh/function.autoload.php) 函數也能自動加載類和接口,但更建議使用 [spl\_autoload\_register()](https://www.php.net/manual/zh/function.spl-autoload-register.php) 函數。 [spl\_autoload\_register()](https://www.php.net/manual/zh/function.spl-autoload-register.php) 提供了一種更加靈活的方式來實現類的自動加載(同一個應用中,可以支持任意數量的加載器,比如第三方庫中的)。因此,不再建議使用 [\_\_autoload()](https://www.php.net/manual/zh/function.autoload.php) 函數,在以后的版本中它可能被棄用。 > **Note**: > 在 PHP 5.3 之前,\_\_autoload 函數拋出的異常不能被 [catch](https://www.php.net/manual/zh/language.exceptions.php) 語句塊捕獲并會導致一個致命錯誤(Fatal Error)。 自 PHP 5.3 起,能夠 thrown 自定義的異常(Exception),隨后自定義異常類即可使用。 \_\_autoload 函數可以遞歸的自動加載自定義異常類。 > **Note**: > > 自動加載不可用于 PHP 的 CLI [交互模式](https://www.php.net/manual/zh/features.commandline.php)。 > **Note**: > 如果類名比如被用于 [call\_user\_func()](https://www.php.net/manual/zh/function.call-user-func.php),則它可能包含一些危險的字符,比如 *../*。 建議您在這樣的函數中不要使用用戶的輸入,起碼需要在 [\_\_autoload()](https://www.php.net/manual/zh/function.autoload.php) 時驗證下輸入。 **Example #1 自動加載示例** 本例嘗試分別從 MyClass1.php 和 MyClass2.php 文件中加載 *MyClass1* 和 *MyClass2* 類。 ``` <?php spl_autoload_register(function?($class_name)?{ ????require_once?$class_name?.?'.php'; }); $obj??=?new?MyClass1(); $obj2?=?new?MyClass2(); ?> ``` **Example #2 另一個例子** 本例嘗試加載接口 *ITest*。 ``` <?php spl_autoload_register(function?($name)?{ ????var_dump($name); }); class?Foo?implements?ITest?{ } /* string(5)?"ITest" Fatal?error:?Interface?'ITest'?not?found?in?... */ ?> ``` 以上例程會輸出: ~~~ Want to load NonLoadableClass. Unable to load NonLoadableClass. ~~~ **Example #4 自動加載在 PHP 5.3.0+ 中的異常處理 - 沒有自定義異常機制** 本例將一個異常拋給不存在的自定義異常處理函數。 ``` <?php spl_autoload_register(function?($name)?{ ????echo?"Want?to?load?$name.\n"; ????throw?new?MissingException("Unable?to?load?$name."); }); try?{ ????$obj?=?new?NonLoadableClass(); }?catch?(Exception?$e)?{ ????echo?$e->getMessage(),?"\n"; } ?> ``` 以上例程會輸出: ~~~ Want to load NonLoadableClass. Want to load MissingException. Fatal error: Class 'MissingException' not found in testMissingException.php on line 4 ~~~
                  <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>

                              哎呀哎呀视频在线观看