设为首页 收藏本站
查看: 1411|回复: 0

[经验分享] php命名空间自动加载后使用单独类include使用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-23 08:27:25 | 显示全部楼层 |阅读模式
                      普通的命名空间自动加载后,又对框架不熟,在M层或者C层想include直接调用第三方类时通常都不行会报错。原因是有命名空间和自动加载这两个php特性制约。

要解决这两个问题就只要两步即可,但当然在正规项目中不建议使用,要遵循MVC和PCR-0(1.只有一个入口文件;2.在类文件中不能使用直接实现方法的写法;3.命名空间与绝对路径一致)法则,这只是一个偏门技巧。
解决方法
  • 在include文件后,用spl_autoload_unregister()把自动加载的函数注销掉;

    如:spl_autoload_unregister('\\Test\\Loader::autoload');

   但在运用完第三方类的时候要马上把之前的自动加载函数运行一次,不然其他方法加载不了会报错。
        \main\Test1::test();
        spl_autoload_register('\\Test\\Loader::autoload');
2.   第三方类要加上单独的命名空间,不然在使用的时候会,include类会以当前的命名空间来使用。如果加载类不是在跟当前命名空间同一个目录,就会报错。

贴其中一个类代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace Test;

class Factory
{
     
    public static function createDatabase()
    {
        $db = new Database();
        Register::set('db1',$db);
        include BASEDIR.'/Test1.php';
        spl_autoload_unregister('\\Test\\Loader::autoload');
        \main\Test1::test();
        spl_autoload_register('\\Test\\Loader::autoload');
         
        return     $db;
    }   
}




最终还是叮嘱不建议程序用这个,尽量遵守面向过程的编程方法。

                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-38446-1-1.html 上篇帖子: php gearman集群 安装与运用 下篇帖子: PHP常用正则表达式 include 空间 命名
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表