• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP基础之Autoload_php

php 搞代码 3年前 (2018-06-21) 71次浏览 已收录 0个评论

php的自动加载autoload机制很重要,这里做2个小练习

 
原创文章,转载请注明:http://www.cnblogs.com/phpgcs
 
文件结构如下,2种方式实现自动加载
 
1,自定义函数
 
2,spl_autoload_register()
 
 
[email protected]:/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('EOL', (PHP_SAPI == 'cli') ? PHP_EOL : '</ br>');
    print_r(get_included_files());
    echo EOL;
    print get_include_path();
    echo EOL;
    //set_include_path(get_include_path().PATH_SEPARATOR.'/var/www/ly_php/php_spl/include/');
    //set_include_path(dirname(__FILE__).'/include');
    //set_include_path(dirname(__FILE__).'/include/');
 
    function __autoload($className){
        $filename = './include/'.$className.'.php';
        //$filename = './include/'.$className.'.php';
        //$filename = '/var/www/ly_php/php_spl/include/'.$className.'.php';
        if(file_exists($filename)){
            include_once $filename;
        }else{
            exit('no file');
        }
    }
 
    $a = new aClass();
    $b = new bClass();
    print_r(get_included_files());
?>
  运行结果如下:
 
+ View Code
  
 
 
 
第二种方式:
 
 
<?php
    class myLoader{
        public static function autoload($className){
            $filename = './include/'.$className.'.php';
            if(file_exists($filename)){
                include_once $filename;
            }else{
                exit('no file');
            }
        }
    }
 
    define('EOL', (PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
 
    spl_autoload_register(array('myLoader', 'autoload'));
 
    /**
    *__autoload 方法在 spl_autoload_register 后会失效,因为 autoload_func 函数指针已指向 spl_autoload 方法
    * 可以通过下面的方法来把 _autoload 方法加入 autoload_functions list
    */
    //spl_autoload_register( '__autoload' );
 
 
    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;
?>
  

欢迎大家阅读《PHP基础之Autoload_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址