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

                # 四、命名空間的USE 和 require include require\_once include\_once詳解 > ## 命名空間的USE 和 require include require\_once include\_once詳解 include是包含的意思,找不到文件時,會報warning的錯誤,然后程序繼續往下執行 require是必須的意思,找不到文件時,會報fatal error (致命錯誤),程序停止往下執行 這兩個引入,在加once后,在引入的時候會判斷是否存在,不存在才會引入 我們來幾個例子說明: ``` ##### a.php //我們在 a.php文件寫入一個函數,輸出:我被引入了 function test(){ echo "我被引入了!"; } //并且調用了函數 test(); ##### b.php //我們在b.php 先 include a.php include "a.php"; #此時,輸出:我被引入了, ``` 說明,我們在include的時候,會將被引入的腳本加載到當前腳本,說白了也就是兩個腳本合并為一個腳本了! 我們再試試如果沒這個腳本呢: ``` ##### a.php //我們在 a.php文件寫入一個函數,輸出:我被引入了 function test(){ echo "我被引入了!"; } //并且調用了函數 test(); ##### b.php //我們在b.php 先 include ccc文件夾下的 a.php include "ccc/a.php"; echo 222; #此時,輸出:警告 222 ``` 我們include的文件,根本不存在,因為我們就沒有 ccc這個文件夾,所以,引入是失敗的,所以驗證了上述說的:include引入不存在的文件會發出警告,但是不影響程序運行, 因為我們執行b.php腳本的時候,輸出了 222 我們接下來測試once的情況 我們不需要修改a.php,只需要對b.php稍作修改即可 ``` <pre class="calibre10">``` include 'a.php'; include_once "a.php"; echo 222; ``` 我們在b.php引入了兩次a.php,腳本輸出內容為: 我被引入了!222 為什么我們引入兩次,卻輸出了一次呢,這就是once的作用了,如果你把once寫在include前面,那么,就會輸出兩次了(本例不能這樣執行,因為已經存在test函數,如果引入兩次,函數名重復就報錯了!可以將a.php只輸出一串字符串作為引入測試腳本),因為在once 之前,a.php不存在,則會被引入,而include并不會判斷是否存在 接下來我們測試下 require 的 ``` ###我們這次為了方便測試,直接將a.php改為以下內容 echo "我被引入了!"; #####我們再次修改b.php require "a.php"; echo 222; ``` 此時,這個腳本輸出的內容為: 我被引入了!222 最上面說過, require 引入不存在的文件,會直接報錯,不會繼續執行腳本了,是真的嗎?我們先測試下 ``` ##我們無需修改a.php ###我們修改下b.php require "ccc/a.php"; echo 222; ``` 我們 require 了ccc文件夾下的b.php,這個文件不存在,當我們執行我們的b.php腳本時,報錯了 ![](https://box.kancloud.cn/f54f10b4af40490571ae09da8cc1c87e_1283x265.png) 第一個是警告:內容為無法打開這個文件,不存在這樣的文件夾或者文件 第二個就是錯誤:這是一個致命錯誤,打開文件失敗,也就是無法引入,此時的錯誤警告級別為致命錯誤,這樣的錯誤是無法繼續執行腳本的!只有警告和提示的級別才會繼續執行腳本! 所以也就驗證了我們上面所說的 剩下的我們就不測試了,大家可以親自測試下 那我們說下USE 和他們的區別 我們先看一個例子 ``` ###這是a.php <?php namespace test; /** * Created by PhpStorm. * User: Wei * Date: 2017/5/23 * Time: 9:34 */ class a{ public function test(){ echo "這是 a 類下的 test方法"; } } ####這是b.php <?php /** * Created by PhpStorm. * User: Wei * Date: 2017/5/23 * Time: 9:35 */ require "a.php"; $test = new \test\a(); $test->test(); ``` 我們只是引入了這個類,并且實例化后執行了test類中的test方法,這也就是我們之前命名空間教程中提到的完全限定名稱的使用 我們修改下,使用use 來使用 ``` ###我們只修改了b.php use test; $test = new \test\a(); $test->test(); //此代碼有個警告 ``` 我們在執行這個代碼的時候,發現有個警告和一個錯誤 為什么報錯了呢?我們一步一步看! 第一步,報錯為這個使用是不符合規則的,因為這個類不存在,必須存在的類才可以use 第二步:我們在實例化a類時,去檢測這個類是否存在,存在才會被實例化,然而這個有個致命錯誤:找不到這個類 發現了么?這個類沒有被引入,可能有些人比較含糊,我是不是在命名空間下使用use 就會引入這個類了呢? 我們繼續寫例子,作說明 ``` ###我們仍然只修改b.php <?php namespace test; /** * Created by PhpStorm. * User: Wei * Date: 2017/5/23 * Time: 9:35 */ use test\a; $test = new a(); $test->test() ``` 司機們,這個會正確執行嗎? 當然是不會了,又報錯了,而且這個錯誤跟上面的第二個錯誤是一樣的,致命錯誤 還會找不到這個類,為什么呢? 司機們要了解,use 使用,并不會引入任何文件,只是申明這個類的別名,后面跟的是他的別名規則.所以,在使用use的時候必須要引入! 所以,稍加修改,即可 ``` ### b.php <?php namespace test; use test\a; include "a.php"; $test = new a(); $test->test(); ###這樣就可以正確執行了 ``` 此時,細心的司機發現,use 其實是并沒有被使用的,因為她們是同一個命名空間,去掉命名空間或者不同命名空間,use才可用! 到這里基本上都分析完畢了!
                  <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>

                              哎呀哎呀视频在线观看