php命名空间自动加载后使用单独类include使用
admin
2023-06-30 11:03:24
0

普通的命名空间自动加载后,又对框架不熟,在M层或者C层想include直接调用第三方类时通常都不行会报错。原因是有命名空间和自动加载这两个php特性制约。

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

解决方法

  1. 在include文件后,用spl_autoload_unregister()把自动加载的函数注销掉;

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

   但在运用完第三方类的时候要马上把之前的自动加载函数运行一次,不然其他方法加载不了会报错。

        \main\Test1::test();

spl_autoload_register('\\Test\\Loader::autoload');

2.   第三方类要加上单独的命名空间,不然在使用的时候会,include类会以当前的命名空间来使用。如果加载类不是在跟当前命名空间同一个目录,就会报错。


贴其中一个类代码:

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;
	}	
}


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


上一篇:python多继承

下一篇:php目录删除类

相关内容

热门资讯

一颗流星在美国马萨诸塞州上空爆... 当地时间5月30日,一颗流星在美国东北部马萨诸塞州近海上空爆炸,并引发巨响。该州多地居民均听到爆炸声...
鸿蒙智家框架合作协议签约仪式在... 5月29日,鲁班兄弟装饰工程有限公司与华为终端有限公司在华为云南区域总部举行鸿蒙智家框架合作协议签约...
中国科学院工程热物理所在超临界... 以超临界二氧化碳(S-CO₂)为代表的新型超临界流体正以其独特优势,在制冷、发电、储能等领域拓展应用...
5月31日,“蓝月亮”上线 5月31日,农历四月十五,一轮满月将现身夜空。这轮满月有些特别,它是本月第二次满月,同时它又是本年度...
原创 华... 华为在6月份的新品越来越丰富,比如智能手机、智能手表、耳夹式耳机、新一代全屋智能等,覆盖到多场景。其...
伊朗称对霍尔木兹海峡航运实施全... 据伊朗方面当地时间5月30日消息,伊朗武装部队哈塔姆安比亚中央总部说,伊朗对霍尔木兹海峡航运实施全面...
13人遇难“致命黑车”调查:座... 5月28日凌晨,一辆载满河南邓州周边等地乘客的大通客车,从浙江杭州出发赶回邓州,经过G40沪陕高速河...
多地职校招生报名火爆 作者 | 第一财经 林靖职业教育正在成为越来越多人的“主动选择”,中职赛道不再是备选项。近日,北京中...
初一男生校门口遭群殴或失聪,教... 哥哥同学辱骂母亲,辽宁鞍山13岁少年在学校门口维护哥哥与人发生争执,随后数名同龄少年一拥而上对其实施...
演唱会大量邀请票被当众焚毁,警... 极目新闻记者 杜光然5月29日,网友发帖称,有人当众焚烧大量演唱会邀请票,视频定位于温岭市体育中心。...