为了账号安全,请及时绑定邮箱和手机立即绑定

spl_autoload_register('\\Imooc\\Loader::Autoload')为什么是 \\

spl_autoload_register('\\Imooc\\Loader::Autoload'),这里的Imooc前面的为什么还有\\,命名空间不是Imooc吗,为什么还要加\\?

spl_autoload_register(string mathod)

里面是''单引号,这里没有什么转义的意思吧? 如果是双引号"",应该这样写的spl_autoload_register("\\Imooc\\Loader::Autoload")。

但,老师写的是 单引号,spl_autoload_register('\\Imooc\\Loader::Autoload')

所以,不明白,纠结了一天了,求大神。。。。


正在回答

7 回答

就是转义,不用想太多,一般用到反斜杠都要转义的

0 回复 有任何疑惑可以回复我~

命名空间+\是为了全局引用,\\是是为 了转义\,如果没有第一个\,那么第二个\很有可能把命名空间的字母转义了,比如\test,\next这些中的t/n转义了\t,\n

2 回复 有任何疑惑可以回复我~

spl_autoload_register('\Imooc\Loader::autoload');
这样写也是可以的,为什么加两个\\ 估计是资深程序员潜意识的防止转义做的操作吧

1 回复 有任何疑惑可以回复我~
  1. 因为loader.php采用了命名空间,想要调用autoload这个方法必须要使用   \命名空间\类名::静态方法名的方法.

  2. spl_autoload_register自动载入方法 需要传入载入文件的方法名才能调用.

1 回复 有任何疑惑可以回复我~

请问下我也纠结于这个问题,希望能得到大神解释

0 回复 有任何疑惑可以回复我~

首先,感谢你的回答!
但是,我觉得这个答案很不靠谱。
spl_autoload_register('IMooc\Loader::autoload'); 可以运行,是限定命名空间

但,上面说的什么转义,因为在单引号里面,这个根本用不着转义
spl_autoload_register('IMooc\Loader::autoload'); //用不着转义的 限定
spl_autoload_register('\IMooc\Loader::autoload');//用不着转义的完全限定
spl_autoload_register("IMooc\Loader::autoload");//转义的限定
spl_autoload_register("\\IMooc\\Loader::autoload");//转义的完全限定

不知道我这样理解是否正确

感谢你的回复!
谢谢!

1 回复 有任何疑惑可以回复我~
#1

qq_朩耦繎_0

单引号里也存在转义~
2018-04-05 回复 有任何疑惑可以回复我~

Miracle这个说法比较靠谱,因为在PHP的引号中“\”这个是转义字符,但是这里使用的时候有点表示命名空间使用的意思,所以需要转义符号转义‘\’,就形成了“\\”这种形式。
当然,你不转义也能正常使用,比如这里我们改成
  spl_autoload_register('IMooc\Loader::autoload');
一样正常使用,但是相对来说就不那么规范了,毕竟我们这节学习的目的的是PSR-0规范,所以向标准靠齐吧。
个人见解,不对之处请指正。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

spl_autoload_register('\\Imooc\\Loader::Autoload')为什么是 \\

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号