所有使用 namespace 的 php 框架,一律无视

2014-05-12 16:00:02 +08:00
 ddyy
php的命名空间是全世界最丑陋最难用的命名空间,亲爱的Yii 2.0也开始使用namespace了,Yii已死,有事烧纸。
9349 次点击
所在节点    PHP
40 条回复
ddyy
2014-05-12 19:55:43 +08:00
@aisk 解释器可以先判断是命名空间还是常量,解释型语言动态判断类型很常见啊,其他动态语言字符串相加和数字相加都用加号,其实这两个相加运算也是完全不同的
crysng
2014-05-12 20:00:03 +08:00
php不是亏在namespace而是亏在.(dot)上面
不然就不会出现object->method(),应该是object.method(),,(多敲了两下键盘)
相对应的,namespace就应该是.(dot)而不是\backslash了,,哈哈

这个.(dot)设计可能为当初的php4运行速度有所帮助吧
Sunyanzi
2014-05-12 21:08:56 +08:00
@raincioushttp://php.net/language.types.string ...

「To specify a literal backslash, double it (\\).」

虽然表现上确实没什么区别就是了 ...
trimleo
2014-05-12 21:24:32 +08:00
我感觉用着挺好的 配合composer 自动加载无压力
raincious
2014-05-12 22:01:00 +08:00
@Sunyanzi 嗯……这个是这么说的呢嗯……

我大概知道你为什么要这么玩,是不是你用双引号了?如果用双引号,同时的namespace里面有小写的对象名(外加第一个字符是rnt什么的话),那么真的会有玩托的风险。



当然,我大单引号就没事,啊哈哈,这也是为啥我一直坚持单双引号严格区分的原因。
lizheming
2014-05-12 22:07:22 +08:00
@Sunyanzi 孙大大T_T...我只是单纯的不喜欢用反斜线而已T_T...感觉用下划线也比用反斜线要来的爽啊,一来看起来丑,而来打起来也麻烦,完全不习惯啊有没有...
liuxurong
2014-05-12 22:24:38 +08:00
CodeIgniter欢迎你。
soli
2014-05-12 22:40:28 +08:00
@ddyy

> 如果用过python的namespace,对php的namespace看都不愿看一眼。

不能同意你更多。
kenzi
2014-05-12 22:46:45 +08:00
写了五年 php, 不会 namespace 的飘过。。。 准备学习下了。。
soli
2014-05-12 22:47:30 +08:00
另外,use XX; 竟然不能像 C++ 那样,把这个命名空间下的所有类都引入进来。
usedname
2014-05-12 22:57:55 +08:00
我觉得用起来很顺手啊,只是说它引入的太晚所以被喷的体无完肤了么?
regmach
2014-05-12 23:04:01 +08:00
楼主有在什么YII群吗?
vibbow
2014-05-13 06:26:41 +08:00
其实 \ 在英国键盘上敲起来特别顺手...
bakac
2014-05-13 07:05:43 +08:00
这个其实还好,可以autoload 没必要喷
Yuansir
2014-05-13 09:14:27 +08:00
以前不习惯,后来用上Laravel,各种习惯了
raincious
2014-05-13 09:19:05 +08:00
@soli

你可以 use Name\Space\Solar;

然后Solar\Planet,Solar\Sun,Solar\Moon啊。
mikej
2014-05-13 10:16:40 +08:00
@Sunyanzi 你这里的引用是不是跟require效果一样呢?
soli
2014-05-13 10:23:32 +08:00
@raincious

就是不想 Solar\ 哈。

为什么不直接 Planet、Sun、Moon 呢?
Sunyanzi
2014-05-13 11:36:17 +08:00
@mikej 事实上这并不是一个引用 ( reference ) ... 这只是命名空间声明 ...

php 使用未定义的类的时候会触发 autoload ... 具体的加载方式由 autoload 函数决定 ...

换言之是不是跟 require 效果一样是由你决定的 ... php 并不会自动 require ...
mikej
2014-05-14 23:33:22 +08:00
@Sunyanzi 类的 autoloading 由 autoload函数决定,而namespace是解决了类/函数/常量的命名规范问题,这两者有什么关联,能否详细解释一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/112176

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX