php中同时使用多个use导入命名空间时的问题

<?php


namespace app\models;


use yii\db\ActiveRecord;


class Country extends ActiveRecord

{

}

这是模型类定义代码


<?php


namespace app\controllers;


use yii\web\Controller;

use yii\data\Pagination;

use app\models\Country;


class CountryController extends Controller

{

    public function actionIndex()

    {

        $query = Country::find();


        $pagination = new Pagination([

            'defaultPageSize' => 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命名空间的教程都没讲到过这个问题,求各位大神解答。**


芜湖不芜
浏览 1323回答 3
3回答

慕码人2483693

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定义别名/**&nbsp;* 全名 \Your\Namespace\Name\MyClass&nbsp;* extend Name 等价于 extend \It\Is\Class\Name,如果你不写use It\Is\Class\Name;这句的话&nbsp;*/class MyClass extend Name {&nbsp; &nbsp; use Alert; //调用方法&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; public function demo() {&nbsp; &nbsp; &nbsp; &nbsp; $obj = new OuterClass(); //相当于 new \It\Is\Class\MyClass()&nbsp; &nbsp; &nbsp; &nbsp; $obj = new Object(); //代表 \Your\Namespace\Name\Object;&nbsp; &nbsp; &nbsp; &nbsp; $obj = new Demo\Object(); //代表 Your\Namespace\Name\Demo\Object;&nbsp; &nbsp; &nbsp; &nbsp; //根据以上两句你应该明白了,namespace是指明该文件所处的命名空间,如果按照你的理解 use 后面是命名空间的话,那么当前文件就同时隶属于不同的命名空间了,会发生混乱。&nbsp; &nbsp; }}trait Alert { //全名为\Your\Namespace\Name\Alert&nbsp; &nbsp; public function vardump() {&nbsp; &nbsp; &nbsp; &nbsp; var_dump($this);&nbsp; &nbsp; }}$obj = new MyClass();$obj->vardump();

富国沪深

注意:php中use是可以引入类、命名空间或者接口。所以,这里直接引入一个类要方便些。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java