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

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

伊谢尔伦
伊谢尔伦원래의
2017-07-01 09:51:101446검색

이 글에서는 주로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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