>  기사  >  백엔드 개발  >  PHP를 사용하여 클래스 파일을 자동으로 로드하는 방법은 무엇입니까? 기본 클래스 파일(코드)을 자동으로 로드하는 PHP의 구체적인 구현 계획

PHP를 사용하여 클래스 파일을 자동으로 로드하는 방법은 무엇입니까? 기본 클래스 파일(코드)을 자동으로 로드하는 PHP의 구체적인 구현 계획

不言
不言원래의
2018-07-23 17:37:281418검색

php自动加载类文件什么时候来使用?有时候我们可能写一些代码不去使用php框架,而是自己写一个框架或者包,这个时候可能就会涉及多个文件。在这种情况下,如果只使用命名空间是不能加载其他需要的文件的。所以我们就要使用php的 spl_autoload_register 来做php文件自动加载。

涉及到基类的加载有一个小细节需要注意,具体方案如下。

解决方案

通过如下代码可以自动加载需要的文件,当php脚本运行时找不到需要的文件,就会自动调用 spl_autoload_register 方法。参数 $classname 可以自定义,其值一定是未找到的类的名字(如果调用的时候带上了命名空间,那么这个参数也会带上命名空间)。

spl_autoload_register(function ($classname) {
    $root = rtrim(dirname(__DIR__), '/') . '/';
    $path = str_replace('\\', DIRECTORY_SEPARATOR, strtolower($classname));
    require $root.'path/BaseService.php';
    require $root.$path.'.php';
});

其中 spl_autoload_register 方法的参数可以是个匿名函数,也可以是一个方法的名字(字符串类型)

spl_autoload_register('yourFunction');
function yourFunction($classname) {
    $root = rtrim(dirname(__DIR__), '/') . '/';
    $path = str_replace('\\', DIRECTORY_SEPARATOR, strtolower($classname));
    require $root.'path/BaseService.php';
    require $root.$path.'.php';
});

需要注意的是,如果加载的类是继承了另外的一个类,那么需要将基类优先加载 ,然后再加载子类,不然会出现找不到文件,类未定义的错误,即 要注意加载文件的顺序

相关推荐:

php中自定义类文件自动加载

위 내용은 PHP를 사용하여 클래스 파일을 자동으로 로드하는 방법은 무엇입니까? 기본 클래스 파일(코드)을 자동으로 로드하는 PHP의 구체적인 구현 계획의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.