没有使用php命名空间的项目是否可以调用使用了命名空间的插件呢?

如题:没有使用php命名空间的项目是否可以调用使用了命名空间的插件呢?

比如在yaf框架下,没有开启命名空间的情况下,想把workerman当一个模块引入到library目录下,然后使用,不知道是否可行,以及具体如何使用呢?

鸿蒙传说
浏览 598回答 6
6回答

慕虎7371278

没有开启命名空间之后,你如果想调用一个类的话,还是需要引入相关类文件。这种情况话最好祈祷自己跟引入类没有冲突。。。。

largeQ

这里只针对问题做一个回答。因为没用过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

一只名叫tom的猫

可以使用的1.php版本要大于等于5.32.安装composer3.引入composer文件 require 'vendor/autoload.php'; 4.composer的基本配置 已经定义命名空间 { "autoload": { "psr-4": { "命名空间的名字\\": "命名空间所对应的路径/" } } }
打开App,查看更多内容
随时随地看视频慕课网APP