java - php中同時使用多個use匯入命名空間時的問題

來源:互聯網
上載者:User

這是模型類定義代碼

 5, 'totalCount' => $query->count(), ]); $countries = $query->orderBy('name') ->offset($pagination->offset) ->limit($pagination->limit) ->all(); return $this->render('index', [ 'countries' => $countries, 'pagination' => $pagination, ]); }}

**這是調用模型類的控制器代碼
請問模型類裡面明明namespace是app\models,那麼為什麼控制器裡面要use app\models\Country而不是use app\models呢?
這是因為在他之前還有其他use語句還是因為什嗎?我看了很多關於php命名空間的教程都沒講到過這個問題,求各位大神解答。**

回複內容:

這是模型類定義代碼

 5, 'totalCount' => $query->count(), ]); $countries = $query->orderBy('name') ->offset($pagination->offset) ->limit($pagination->limit) ->all(); return $this->render('index', [ 'countries' => $countries, 'pagination' => $pagination, ]); }}

**這是調用模型類的控制器代碼
請問模型類裡面明明namespace是app\models,那麼為什麼控制器裡面要use app\models\Country而不是use app\models呢?
這是因為在他之前還有其他use語句還是因為什嗎?我看了很多關於php命名空間的教程都沒講到過這個問題,求各位大神解答。**

php的命名空間是不支援*這種方式的,c#中支援use app.models.*就可以引入model下所有的類,但是php是不支援的(詳情要去看autoload方法,看完就明白了),必須要引入到具體的類

namespace Your\Namespace\Name;use It\Is\Class\Name; //調用這個類,而不是調用一個命名空間use It\Is\Class\MyClass AS OuterClass; //因為MyClass和聲明的類重名,使用AS定義別名/** * 全名 \Your\Namespace\Name\MyClass * extend Name 等價於 extend \It\Is\Class\Name,如果你不寫use It\Is\Class\Name;這句的話 */class MyClass extend Name {    use Alert; //調用方法        public function demo() {        $obj = new OuterClass(); //相當於 new \It\Is\Class\MyClass()        $obj = new Object(); //代表 \Your\Namespace\Name\Object;        $obj = new Demo\Object(); //代表 Your\Namespace\Name\Demo\Object;        //根據以上兩句你應該明白了,namespace是指明該檔案所處的命名空間,如果按照你的理解 use 後面是命名空間的話,那麼當前檔案就同時隸屬於不同的命名空間了,會發生混亂。    }}trait Alert { //全名為\Your\Namespace\Name\Alert    public function vardump() {        var_dump($this);    }}$obj = new MyClass();$obj->vardump();

注意:
php中use是可以引入命名空間或者介面
所以,這裡直接引入一個類要方便些。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.