解析php类的注册与自动加载
解析php类的注册与自动加载
发布时间:2016-12-29 来源:查字典编辑
摘要:工程目录如下:1、将需要注册的类放在一个数组中复制代码代码如下:2、注册数组注意:步骤1中的类的路径都是相对于init.php而言的,不是相...

工程目录如下:

解析php类的注册与自动加载1

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

复制代码 代码如下:

<?php

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类的

复制代码 代码如下:

<?php

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

复制代码 代码如下:

<?php

require_once 'Init.php';

$dao = new UserDao();

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

?>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新php教程学习
热门php教程学习
编程开发子分类