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

php自动加载autoload机制示例分享_PHP

php 搞代码 4年前 (2022-01-25) 13次浏览 已收录 0个评论

1,自定义函数

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 liuyua(、本文来源gao@!dai!ma.com搞$$代^@码网*搞gaodaima代码n 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 : ‘
‘);
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());
?>

运行结果如下:

复制代码 代码如下:
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
)

第二种方式:

复制代码 代码如下:
<?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 : ‘
‘);

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;
?>

运行结果如下:

复制代码 代码如下:
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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php自动加载autoload机制示例分享_PHP

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

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

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

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