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

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

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

PHP
鸿蒙传说 2019-03-09 13:23:11
如题:没有使用php命名空间的项目是否可以调用使用了命名空间的插件呢? 比如在yaf框架下,没有开启命名空间的情况下,想把workerman当一个模块引入到library目录下,然后使用,不知道是否可行,以及具体如何使用呢?
查看完整描述

6 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-03-18
?
largeQ

TA贡献2039条经验 获得超7个赞

这里只针对问题做一个回答。因为没用过yaf框架所以就不说了。

实际上,这个问题要分两个方面的回答。

第一,php版本>=5.3的项目没用命名空间,而引用用了命名空间的类。意思是你得php版本支持命名空间,但是你没有用。这个时候问题不大,你大可在你的项目里采用命名空间的方式调用你要引入的类,不过可能这样不支持自动加载,所以在使用前,先将代码include进来。

第二,php版本<5.3项目里没用命名空间(php不支持).这种情况下就苦逼了。解决办法有两种:1,升级PHP版本到5.3以上(解决兼容问题)。2,删除引用目标代码中使用到的命名空间部分,修改源码。

第二种情况建议 使用解决办法1。

另外,还有种情况也说了吧。就是在有命名空间的代码里引用没用用命名空间的代码。这个也很好解决,只要记住没用命名空间的代码都被放在了跟命名空间下就好了,实例化类的时候在前面加上一个就ok了。

最后,PHP的命名空间已经是大势所趋,建议还是赶快使用起来。如今框架的版本都已经全面使用了,其中的好处还是很多很多的

查看完整回答
反对 回复 2019-03-18
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

可以。前提是PHP>=5.3,否则只能手动require
如果你依赖的包有命名空间,一般来说,包源码里面会有一个autoload.php,auto_load.php,ClassLoader.php这样的文件,如果有,直接require这个文件可以完成自动加载

查看完整回答
反对 回复 2019-03-18
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

可以使用,但是无法自动加载,要么实现自动加载函数,要么手动 require 进来,不过还是会有坑,最好是用 composer

查看完整回答
反对 回复 2019-03-18
?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

可以使用的
1.php版本要大于等于5.3
2.安装composer
3.引入composer文件 require 'vendor/autoload.php';
4.composer的基本配置 已经定义命名空间

{
    "autoload": {
        "psr-4": {
        "命名空间的名字\\": "命名空间所对应的路径/"
        }
    }
}
查看完整回答
反对 回复 2019-03-18
  • 6 回答
  • 0 关注
  • 597 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信