PHP自动注册类的缺点,解析php类的注册与自动加载

工程目录如下:

f4828cdb5ecabb2b54433094230bd5cd.png

1、将需要注册的类放在一个数组中

final class Utils {

private function __construct() {

}

public static function getClasses($pre_path = ‘/‘) {

$classes = array(

‘DBConfig‘ => $pre_path.‘DBConfig/DBConfig.php‘,

‘User‘ => $pre_path.‘Model/User.php‘,

‘Dao‘ => $pre_path.‘Dao/Dao.php‘,

‘UserDao‘ => $pre_path.‘Dao/UserDao.php‘,

‘UserMapper‘ => $pre_path.‘Mapping/UserMapper.php‘,

);

return $classes;

}

}

?>

2、注册数组

注意:步骤1中的类的路径都是相对于init.php而言的,不是相对于Utils而言的,这是因为我们通过init.php里的自动加载函数spl_autoload_register来require类的

require_once ‘/Utils/Utils.php‘;

final class Init {

/**

* System config.

*/

public function init() {

// error reporting - all errors for development (ensure you have

// display_errors = On in your php.ini file)

error_reporting ( E_ALL | E_STRICT );

mb_internal_encoding ( ‘UTF-8‘ );

//registe classes

spl_autoload_register ( array ($this,‘loadClass‘ ) );

}

/**

* Class loader.

*/

public function loadClass($name) {

$classes = Utils::getClasses ();

if (! array_key_exists ( $name, $classes )) {

die ( ‘Class "‘ . $name . ‘" not found.‘ );

}

require_once $classes [$name];

}

}

$init = new Init ();

$init->init ();

?>

3、本例中在使用处test.php里require init.php

require_once ‘Init.php‘;

$dao = new UserDao();

$result = $dao->findByName(‘zcl‘);

?>

原文:http://www.jb51.net/article/39528.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值