84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
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中?
include 'A.php';
走同样的路,发现不同的人生
首先,建议用spl_autoload_register()函数,注册一个你自己定义好的autoload函数,伪代码大体如下:`function autoload($classname){include $classname;}spl_autoload_register('autoload');`其实,这个自定义autoload函数实现的关键是你的类与目录的规则,首先要定下目录规则,这个文件存在于哪个目录中,然后根据规则实现加载定义.比较通用的做法是使用命名空间,命名空间的层级和目录层级都一一对应.举个例子:namespace Model\User;那么,这个php文件所在目录就是Model文件夹->User文件夹
如果我说的还是不够清楚,楼主用关键字 " 命名空间 autoload " 搜一下就可以了,或者搜一下PHP的PSR-0标准也可以
首先,建议用spl_autoload_register()函数,注册一个你自己定义好的autoload函数,伪代码大体如下:
`
function autoload($classname){
include $classname;
}
spl_autoload_register('autoload');
`
其实,这个自定义autoload函数实现的关键是你的类与目录的规则,首先要定下目录规则,这个文件存在于哪个目录中,然后根据规则实现加载定义.
比较通用的做法是使用命名空间,命名空间的层级和目录层级都一一对应.举个例子:
namespace Model\User;
那么,这个php文件所在目录就是Model文件夹->User文件夹
如果我说的还是不够清楚,楼主用关键字 " 命名空间 autoload " 搜一下就可以了,或者搜一下PHP的PSR-0标准也可以