<?
php
/*------------------------------------------------------------------*/
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ) {
if(!defined('NEWLINE' )){
define('NEWLINE', " " );
}
} else {
if(!defined('NEWLINE' )){
define('NEWLINE', " " );
}
}
/*------------------------------------------------------------------*/
if(!defined('HTMLNEWLINE' )){
define('HTMLNEWLINE', '<br/>' );
}
/*------------------------------------------------------------------*/
if(!defined('CURRENT_TIMESTAMP' )){
define('CURRENT_TIMESTAMP', time ());
}
if(!defined('FORMAT_DATE' )){
define('FORMAT_DATE', 'Y-m-d' );
}
if(!defined('TIMESTAMP' )){
define('TIMESTAMP', 'Y-m-d H:i:s' );
}
/*------------------------------------------------------------------*/
if(!defined('SECONDS_HOUR' )){
define('SECONDS_HOUR', 3600 );
}
if(!defined('SECONDS_DAY' )){
define('SECONDS_DAY', 3600 * 24 );
}
if(!defined('SECONDS_WEEK' )){
define('SECONDS_WEEK', 3600 * 24 * 7 );
}
?>
/*------------------------------------------------------------------*/
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ) {
if(!defined('NEWLINE' )){
define('NEWLINE', " " );
}
} else {
if(!defined('NEWLINE' )){
define('NEWLINE', " " );
}
}
/*------------------------------------------------------------------*/
if(!defined('HTMLNEWLINE' )){
define('HTMLNEWLINE', '<br/>' );
}
/*------------------------------------------------------------------*/
if(!defined('CURRENT_TIMESTAMP' )){
define('CURRENT_TIMESTAMP', time ());
}
if(!defined('FORMAT_DATE' )){
define('FORMAT_DATE', 'Y-m-d' );
}
if(!defined('TIMESTAMP' )){
define('TIMESTAMP', 'Y-m-d H:i:s' );
}
/*------------------------------------------------------------------*/
if(!defined('SECONDS_HOUR' )){
define('SECONDS_HOUR', 3600 );
}
if(!defined('SECONDS_DAY' )){
define('SECONDS_DAY', 3600 * 24 );
}
if(!defined('SECONDS_WEEK' )){
define('SECONDS_WEEK', 3600 * 24 * 7 );
}
?>
<?
php
require_once 'Constants.php' ;
class Autoload {
/* *
* 注册容器,包括路径,类名和文件扩展名容器,可以赋默认值
*/
public $containers = array (
'includePaths',
'classNames',
'extensionNames'
);
/*--------- 类搜索路径列表 ------------*/
public $includePaths = array ();
/*--------- 类名称列表 ------------*/
public $classNames = array ();
/*--------- 类文件扩展名列表 ------------*/
public $extensionNames = array ();
public function __construct() {
/* 默认搜索路径 */
array_push($this->includePaths, '.', 'lib', 'classes' );
/* 默认扩展名列表 */
array_push($this->extensionNames, '.php','.class.php' );
/* 自动加载函数注册 */
if (method_exists($this, '__autoload' )) {
spl_autoload_register(array($this, '__autoload' ));
}
}
/* *
* 注册类包含路径,类名称,扩展名称
*
* @param string $container_name 容器名称,路径容器名,类容器名和文件扩展容器名
* @param mixed 可变参数列表
* @param........
*
*/
public function register() {
try {
$NumerOfArgs = func_num_args ();
$container_name = func_get_arg(0 );
if (is_string($container_name) && in_array($container_name, $this-> containers)) {
for ($i = 1; $i < $NumerOfArgs; $i++ ) {
$arg = func_get_arg($i );
if (is_array($arg )) {
foreach ($arg as $registerobj ) {
if (is_string($registerobj) && ! in_array($registerobj, array_values($this->$container_name ))) {
array_push($this->$container_name, $registerobj );
}
}
} else {
if (is_string($arg )) {
array_push($this->$container_name, $arg );
}
}
}
} else {
$message = 'Unsupported register container or first argument is not a string and must be one of includePaths,classNames,extentionNames.' ;
throw new Exception($message );
}
} catch (Exception $e ) {
$message = $e-> getMessage();
$msg = '<pre style="font-family:verdana;font-size:12px;color:red;">' . $message . '</pre>' ;
echo $msg ;
$message = $e-> getTraceAsString();
$msg = '<pre style="font-family:verdana;font-size:12px;color:red;">' . $message . '</pre>' ;
echo $msg ;
}
}
/* *
* 自动加载函数
*/
public function __autoload() {
$list = array ();
foreach($this->includePaths as $path ){
foreach($this->classNames as $class ){
foreach($this->extensionNames as $ext ){
$filename = strtolower($path) . DIRECTORY_SEPARATOR . ucfirst($class) . strtolower($ext );
array_push($list, $filename );
if(file_exists($filename )){
require_once $filename ;
}
}
}
}
return $list ;
}
}
$test = new Autoload();
$test->register('classNames', array ('db','cd'), 'Cloneable','user' );
// var_dump(spl_autoload_functions());
//var_dump($test->includePaths, $test->classNames, $test->extensionNames);
//$cd = new Cd();
//var_dump(get_included_files());
print_r(get_included_files ());
//var_dump($test->__autoload());
?>
require_once 'Constants.php' ;
class Autoload {
/* *
* 注册容器,包括路径,类名和文件扩展名容器,可以赋默认值
*/
public $containers = array (
'includePaths',
'classNames',
'extensionNames'
);
/*--------- 类搜索路径列表 ------------*/
public $includePaths = array ();
/*--------- 类名称列表 ------------*/
public $classNames = array ();
/*--------- 类文件扩展名列表 ------------*/
public $extensionNames = array ();
public function __construct() {
/* 默认搜索路径 */
array_push($this->includePaths, '.', 'lib', 'classes' );
/* 默认扩展名列表 */
array_push($this->extensionNames, '.php','.class.php' );
/* 自动加载函数注册 */
if (method_exists($this, '__autoload' )) {
spl_autoload_register(array($this, '__autoload' ));
}
}
/* *
* 注册类包含路径,类名称,扩展名称
*
* @param string $container_name 容器名称,路径容器名,类容器名和文件扩展容器名
* @param mixed 可变参数列表
* @param........
*
*/
public function register() {
try {
$NumerOfArgs = func_num_args ();
$container_name = func_get_arg(0 );
if (is_string($container_name) && in_array($container_name, $this-> containers)) {
for ($i = 1; $i < $NumerOfArgs; $i++ ) {
$arg = func_get_arg($i );
if (is_array($arg )) {
foreach ($arg as $registerobj ) {
if (is_string($registerobj) && ! in_array($registerobj, array_values($this->$container_name ))) {
array_push($this->$container_name, $registerobj );
}
}
} else {
if (is_string($arg )) {
array_push($this->$container_name, $arg );
}
}
}
} else {
$message = 'Unsupported register container or first argument is not a string and must be one of includePaths,classNames,extentionNames.' ;
throw new Exception($message );
}
} catch (Exception $e ) {
$message = $e-> getMessage();
$msg = '<pre style="font-family:verdana;font-size:12px;color:red;">' . $message . '</pre>' ;
echo $msg ;
$message = $e-> getTraceAsString();
$msg = '<pre style="font-family:verdana;font-size:12px;color:red;">' . $message . '</pre>' ;
echo $msg ;
}
}
/* *
* 自动加载函数
*/
public function __autoload() {
$list = array ();
foreach($this->includePaths as $path ){
foreach($this->classNames as $class ){
foreach($this->extensionNames as $ext ){
$filename = strtolower($path) . DIRECTORY_SEPARATOR . ucfirst($class) . strtolower($ext );
array_push($list, $filename );
if(file_exists($filename )){
require_once $filename ;
}
}
}
}
return $list ;
}
}
$test = new Autoload();
$test->register('classNames', array ('db','cd'), 'Cloneable','user' );
// var_dump(spl_autoload_functions());
//var_dump($test->includePaths, $test->classNames, $test->extensionNames);
//$cd = new Cd();
//var_dump(get_included_files());
print_r(get_included_files ());
//var_dump($test->__autoload());
?>