PHP自动加载

MrGeneral
  • 1.7k
namespace 'Test';
class A
{
    
}
namespace 'Test';
include 'A.php';
class B extends A
{
    
}
namespace 'Test';
include 'B.php';
class C
{
    $b = new B();
}

现在的目的是取消B中的include 'A.php';,达到自动加载A的目的,B是A的子类,A可能有B2、B3等等很多个子类,如何做到自动加载父类A呢?
自动加载方法写在A中还是C中?

回复
阅读 2.3k
1 个回答

首先,建议用spl_autoload_register()函数,注册一个你自己定义好的autoload函数,伪代码大体如下:
`
function autoload($classname){
include $classname;
}
spl_autoload_register('autoload');
`
其实,这个自定义autoload函数实现的关键是你的类与目录的规则,首先要定下目录规则,这个文件存在于哪个目录中,然后根据规则实现加载定义.
比较通用的做法是使用命名空间,命名空间的层级和目录层级都一一对应.举个例子:
namespace Model\User;
那么,这个php文件所在目录就是Model文件夹->User文件夹

如果我说的还是不够清楚,楼主用关键字 " 命名空间 autoload " 搜一下就可以了,或者搜一下PHP的PSR-0标准也可以

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏