没有使用php命名空间的项目是否可以调用使用了命名空间的插件呢?
如题:没有使用php命名空间的项目是否可以调用使用了命名空间的插件呢?
比如在yaf框架下,没有开启命名空间的情况下,想把workerman当一个模块引入到library目录下,然后使用,不知道是否可行,以及具体如何使用呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
建议使用composer安装组件,自动完成自动加载。
深入理解composer的autoload自动加载原理
没有开启命名空间之后,你如果想调用一个类的话,还是需要引入相关类文件。这种情况话最好祈祷自己跟引入类没有冲突。。。。
这里只针对问题做一个回答。因为没用过yaf框架所以就不说了。
实际上,这个问题要分两个方面的回答。
第一,php版本>=5.3的项目没用命名空间,而引用用了命名空间的类。意思是你得php版本支持命名空间,但是你没有用。这个时候问题不大,你大可在你的项目里采用命名空间的方式调用你要引入的类,不过可能这样不支持自动加载,所以在使用前,先将代码include进来。
第二,php版本<5.3项目里没用命名空间(php不支持).这种情况下就苦逼了。解决办法有两种:1,升级PHP版本到5.3以上(解决兼容问题)。2,删除引用目标代码中使用到的命名空间部分,修改源码。
第二种情况建议 使用解决办法1。
另外,还有种情况也说了吧。就是在有命名空间的代码里引用没用用命名空间的代码。这个也很好解决,只要记住没用命名空间的代码都被放在了跟命名空间下就好了,实例化类的时候在前面加上一个就ok了。
最后,PHP的命名空间已经是大势所趋,建议还是赶快使用起来。如今框架的版本都已经全面使用了,其中的好处还是很多很多的
可以。前提是
PHP>=5.3
,否则只能手动require如果你依赖的包有命名空间,一般来说,包源码里面会有一个
autoload.php
,auto_load.php
,ClassLoader.php
这样的文件,如果有,直接require这个文件可以完成自动加载可以使用,但是无法自动加载,要么实现自动加载函数,要么手动 require 进来,不过还是会有坑,最好是用 composer
可以使用的
1.php版本要大于等于5.3
2.安装composer
3.引入composer文件
require 'vendor/autoload.php';
4.composer的基本配置 已经定义命名空间