2016-03-08 10:28:14 5278次浏览 5条回答 0 悬赏 30 金钱

命名空间
比如yii2.0某个控制器里要调用系统自带的控制器
use yii/web/Controller
请问这个后半部分是路径吗?
但是我查了一下这个文件,它是在'XXX/yii2/web/controller'这个目录下,它自己里面写的命名空间是namespace yii/web
这个倒是和使用时是对应的,可是却不是路径啊,就算是路径应该也是yii2/web/ 但是我两边都改成yii2却是出现问题,麻烦哪位明白的朋友跟我说一下命名空间这一块,谢谢了

最佳答案

  • 回答于 2016-03-08 10:51 举报
    • 百度关键词psr-0, psr-4
    • yii2的类自己加载机制主要有两方面的内容,一个是composer的自动加载器,另一个是yii2本生的自动加载器,yii2的自动加载器优先级高。相关源码可以追踪index.php下的这两句话:
    //... 以上千万行
    require(__DIR__ . '/../../vendor/autoload.php');
    require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
    // ...以下千万行
    
    1 条回复
    回复于 2016-03-11 10:18 回复

    看不懂,我再看看你给的链接,谢谢

  • 回答于 2016-03-08 10:58 举报

    还可以参见一下这个地址:http://www.yiichina.com/tutorial/395 里面写的很详细。

    1 条回复
    回复于 2016-03-11 10:17 回复

    嗯嗯,我先看一看,O(∩_∩)O谢谢

  • 回答于 2016-03-10 10:07 举报

    命名空间 跟路径应该没啥关系吧,它想怎么命名就怎么命名。

    5 条回复
    回复于 2016-03-11 10:17 回复

    但是我换个名字就不行,命名的时候改了名字,加载调用的时候也一样改了,就是不行

    回复于 2016-03-11 10:33 回复

    我也看出来了,确实不是路径,但是我说的那个问题是怎么回事儿呢?

    回复于 2016-03-11 10:36 回复

    use 要指定到文件

    回复于 2016-03-11 10:39 回复

    指定到了的 当我把namespace yii/web 改成namespace yii2/web ,然后加载调用的时候我写use yii2/web/controller 也不行啊

  • 回答于 2016-03-10 21:07 举报

    yii2的命名空间是根据它文件自己的命名空间决定怎么调用的。比如:就像你说的,use yii/web/Controller,它是在XXX/yii2/web/controller这个目录下,它自己写的命名空间是namespace yii/web,那么在其他的控制器中调用的话,命名空间就是:它自己的命名空间,加上它是属于什么文件。比如:它是属于控制器的,那么调用时的命名空间就是:文件自己的命名空间/文件类型(Controller/Model)。你可以在仔细看看,或者你看看第三方类是怎么调用的,它们的命名空间是如何写的,自己再试试,就找到感觉了。

    5 条回复
    回复于 2016-03-11 10:16 回复

    但是,当我把namespace yii/web 改成namespace yii2/web ,然后加载调用的时候我写use yii2/web/controller 也不行啊

    回复于 2016-03-11 11:07 回复

    当然不能改成yii2,你要遵从yii2的规则,它文件里面怎么写的命名空间,你就要怎么写。不能改的!!!那个yii2的2只是yii的版本,不能说明什么问题,不要强加到命名空间上去

    回复于 2016-03-11 11:13 回复

    那我自己写的时候怎么给命名空间明明呢,遵从什么样的规则呢

    回复于 2016-03-11 11:40 回复

    那要看你要往哪个目录下写了,比如你想把你自己的文件放到控制器中,那你就看看控制器的文件的命名空间怎么写的,照着写,在model层中也一样,还有vendor目录下也是,这里一般都放得第三方的应用。你可以试试自己写一个文件,写上命名空间,到控制器层调用,看能不能调用到。

    回复于 2016-03-13 13:11 回复

    嗯,这样倒是可以,但是我想知其所以然,想搞明白,不行我再看看资料吧

您需要登录后才可以回答。登录 | 立即注册
belone
主管

belone 深圳

注册时间:2015-07-22
最后登录:2020-01-31
在线时长:5小时31分
  • 粉丝5
  • 金钱540
  • 威望0
  • 积分590

热门问题