PHP 사용자 정의 기능의 자동 로드를 위한 자동 로드 메커니즘의 예에 대한 자세한 설명

伊谢尔伦
풀어 주다: 2023-03-12 08:50:02
원래의
1433명이 탐색했습니다.

이 글에서는 주로 PHP 자동 로드 메커니즘의 예를 소개합니다. 자동 로딩을 구현하는 방법은 2가지가 있습니다. 필요한 친구는

1, Custom 함수

2, spl_autoload_register()

를 참조하세요.

코드는 다음과 같습니다.

liuyuan@ebuinfo:/var/www/phpgcs/php_autoload$ ll ./*
-rw-rw-r-- 1 liuyuan liuyuan  800 Feb 19 11:39 ./func_autoload.php
-rw-rw-r-- 1 liuyuan liuyuan  906 Feb 19 11:28 ./spl_autoload.php
./include:
total 16
drwxrwxr-x 2 liuyuan liuyuan 4096 Feb 19 11:42 ./
drwxrwxr-x 3 liuyuan liuyuan 4096 Feb 19 11:43 ../
-rw-rw-r-- 1 liuyuan liuyuan  142 Feb 19 11:42 aClass.php
-rw-rw-r-- 1 liuyuan liuyuan  143 Feb 19 11:42 bClass.php
로그인 후 복사

먼저 사용자 정의 함수 메서드를 살펴보세요.

코드는 다음과 같습니다.

<?php
    define(&#39;EOL&#39;, (PHP_SAPI == &#39;cli&#39;) ? PHP_EOL : &#39;</ br>&#39;);
    print_r(get_included_files());
    echo EOL;
    print get_include_path();
    echo EOL;
    //set_include_path(get_include_path().PATH_SEPARATOR.&#39;/var/www/ly_php/php_spl/include/&#39;);
    //set_include_path(dirname(FILE).&#39;/include&#39;);
    //set_include_path(dirname(FILE).&#39;/include/&#39;);

    function autoload($className){
        $filename = &#39;./include/&#39;.$className.&#39;.php&#39;;
        //$filename = &#39;./include/&#39;.$className.&#39;.php&#39;;
        //$filename = &#39;/var/www/ly_php/php_spl/include/&#39;.$className.&#39;.php&#39;;
        if(file_exists($filename)){
            include_once $filename;
        }else{
            exit(&#39;no file&#39;);
        }
    }

    $a = new aClass();
    $b = new bClass();
    print_r(get_included_files());
?>
로그인 후 복사

실행 결과는 다음과 같습니다.

코드는 다음과 같습니다. :

liuyuan@ebuinfo:/var/www/phpgcs/php_autoload$ php func_autoload.php 
Array
(
    [0] => /var/www/phpgcs/php_autoload/func_autoload.php
)
.:/usr/share/php:/usr/share/pear
aClass is loaded
bClass is loaded
Array
(
    [0] => /var/www/phpgcs/php_autoload/func_autoload.php
    [1] => /var/www/phpgcs/php_autoload/include/aClass.php
    [2] => /var/www/phpgcs/php_autoload/include/bClass.php
)
로그인 후 복사

두 번째 방법:

Code 다음과 같습니다.

<?php
    class myLoader{
        public static function autoload($className){
            $filename = &#39;./include/&#39;.$className.&#39;.php&#39;;
            if(file_exists($filename)){
                include_once $filename;
            }else{
                exit(&#39;no file&#39;);
            }
        }
    }
    define(&#39;EOL&#39;, (PHP_SAPI == &#39;cli&#39;) ? PHP_EOL : &#39;<br />&#39;);
    spl_autoload_register(array(&#39;myLoader&#39;, &#39;autoload&#39;));
    /**
    *autoload 方法在 spl_autoload_register 后会失效,因为 autoload_func 函数指针已指向 spl_autoload 方法
    * 可以通过下面的方法来把 _autoload 方法加入 autoload_functions list
    */
    //spl_autoload_register( &#39;autoload&#39; );
 
    
error_reporting
(E_ALL^E_NOTICE^E_WARNING^E_ERROR);
    error_reporting(E_NOTICE | E_WARNING );
    $a = new aClass();
    print_r(get_included_files());
    echo EOL;
    $b = new bClass();
    echo EOL;
?>
로그인 후 복사

실행 결과는 다음과 같습니다.

코드는 다음과 같습니다.

liuyuan@ebuinfo:/var/www/phpgcs/php_autoload$ php spl_autoload.php 
aClass is loaded
Array
(
    [0] => /var/www/phpgcs/php_autoload/spl_autoload.php
    [1] => /var/www/phpgcs/php_autoload/include/aClass.php
)
bClass is loaded
로그인 후 복사


위 내용은 PHP 사용자 정의 기능의 자동 로드를 위한 자동 로드 메커니즘의 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿