__autoload自动加载函数

function __autoload($name) {
	echo $name.'\n';
	if('test1' == $name) {
		class test1 extends test implements iTemplate {
			
			protected static $_instance = null;

			public static function getInstance()
			{
				if (null === self::$_instance) {
					self::$_instance = new self();
				}
				
				return self::$_instance;
			}
			public function parse_name($name,$type=0) {
				if($type) {
					return ucfirst(preg_replace("/_([a-zA-Z])/e", "strtoupper('\\1')", $name));
				} else {
					$name = preg_replace("/[A-Z]/", "_\\0", $name);
					return strtolower(trim($name, "_"));
				}
			}
		}
	} elseif('test' == $name) {
		class test {}
	} elseif('iTemplate' == $name) {
		interface iTemplate {}
	}
}

$test1 = test1::getInstance();
echo ucfirst($test1->parse_name('user_type', 1));

 

输出

test1

test

iTemplate

 

自定义__autoload函数

 

函数

function my_autoload($c) {
	echo $c;
	class Bla {} // Usually "include 'path/to/file.php';"
}

spl_autoload_register('my_autoload');

$Bla = new Bla();
 

类方法

<?php
* 你可以用静态方法
class MyClass {
  public static function autoload($className) {
    // ...
  }
}

spl_autoload_register(array('MyClass', 'autoload'));
?>

* 也可以用实例
<?php
class MyClass {
  public function autoload($className) {
    // ...
  }
}

$instance = new MyClass();
spl_autoload_register(array($instance, 'autoload'));
?>
posted @ 2011-08-30 18:01  科学家会武术  阅读(189)  评论(0编辑  收藏  举报