最新消息: 新版网站上线了!!!

php 实例get_called_class

<?php
 
/************************************************************
 * get_called_class PHP 5.3
 * 通过get_called_class获取调用类名称,在基类中静态化实例
 * 优点:使用时方便,
 * 原始:
 *       $user = new User;
 *       $userinfo = $user->userInfo();
 * 现在:
 *       $userInfo = User::Instance()->userInfo();
 ************************************************************/
 
 
/**
 * Class Base
 * 静态化-实例化工厂基类
 * Base.php
 */
abstract class Base
{
    static protected $instances;
 
    static public function Instance()
    {
        $class = get_called_class();
 
        if( empty( self::$instances[$class] ) )
        {
            self::$instances[$class] = new $class;
        }
        return self::$instances[$class];
    }
 
}
 
 
 
/**
 * 服务类
 * User.php
 */
require ('Base.php');
class User extends Base {
 
    protected $user = 'sean';
 
    /**
     * 实现父类方法,实例化User类
     * @return mixed
     */
    static public function Instance()
    {
        return parent::Instance();
    }
 
    public function userInfo()
    {
        return $this->user;
    }
}
 
 
 
/**
 * 调用输出
 */
require ('User.php');
echo User::Instance()->userInfo();

转载请注明:谷谷点程序 » php 实例get_called_class