php __CLASS__、get_class()与get_called_class()的区别

__CLASS__获取当前的类名,

get_class()与上面一样,都是获取当前的类名

get_called_class()获取当前主调类的类名

当涉及到继承时,在方法中使用类名。直接贴图了

MVC框架中,涉及到单例时很好用,一般在基类中

    public static function getInstance() {
        $class_name = get_called_class();
        if (isset(self::$instance[$class_name])) {
            return self::$instance[$class_name];
        }
        self::$instance[$class_name] = new $class_name;
        return self::$instance[$class_name];
    }

其他类只要继承这个类,然后通过getInstance()就实现了单例模式

时间: 2024-10-19 22:39:21

php __CLASS__、get_class()与get_called_class()的区别的相关文章

PHP的继承方法如何获取子类名?get_class() 和 get_called_class()

PHP里的__CLASS__这类东西是静态绑定的,如果不在子类里重载的话,那么继承父类方法所得到的依旧是父类的名称,而不是子类的名称,比如: <?php class A { function __construct() { echo __CLASS__; } static function name() { echo __CLASS__; } } class B extends A { } $objB = new B(); // 输出 A B::name(); // 输出 A 此时,无论将B实例

PHP的继承方法如何获取子类名

http://blog.csdn.net/zls986992484/article/details/53154097 PHP后期静态绑定问题:例如 [php] <?php class A { function __construct() { echo __CLASS__; } static function name() { echo __CLASS__; } } class B extends A { } $objB = new B(); // 输出 A B::name();       //

this,static,执行程序的顺序等等留意点

self.static 和 $this 的区别为了更好地理解 self.static 和 $this 的区别,先来看一个示例. <?phpclass A { protected $name = 'A'; static $alias = 'a'; const HASH = 'md5'; public function dd() { echo $this->name; echo '--'; echo static::$alias; echo '--'; // 后期静态绑定 echo static:

yii2源码学习笔记(二十)

Widget类是所有部件的基类.yii2\base\Widget.php 1 <?php 2 /** 3 * @link http://www.yiiframework.com/ 4 * @copyright Copyright (c) 2008 Yii Software LLC 5 * @license http://www.yiiframework.com/license/ 6 */ 7 8 namespace yii\base; 9 10 use Yii; 11 use Reflectio

Yii源码阅读笔记(三十)

Widget类是所有小部件的基类,开始,结束和渲染小部件内容的方法的注释: 1 namespace yii\base; 2 3 use Yii; 4 use ReflectionClass; 5 6 /** 7 * Widget is the base class for widgets. 8 * Widget是所有小部件的基类 9 * 10 * @property string $id ID of the widget. 11 * @property \yii\web\View $view T

Using the EventManager

Using the EventManager This tutorial explores the features of zend-eventmanager in-depth. Terminology An Event is a named action. A Listener is any PHP callback that reacts to an event. An EventManager aggregates listeners for one or more named event

php get_called_class()函数与get_class函数的区别

get_class (): 获取当前调用方法的类名: get_called_class():获取静态绑定后的类名: 有例为证: class Foo{ public function test(){ var_dump(get_class()); } public function test2(){ var_dump(get_called_class()); } public static function test3(){ var_dump(get_class()); } public stati

PHP常见概念混淆(七)之self、static、parent的区别

前言 首先,这个 static 符号跟 static(静态)关键字不是一个东西.这三个符号在PHP对象中共有两种用法: 在类内部,可以使用 new self. new static. new parent 创建新对象 可以使用 self::.static::.parent::调用静态变量和方法. 创建新对象 <?php class test{ public static function test_self(){ return new self(); } public static functi

PHP中new static()与new self()的区别异同分析

本文实例讲述了PHP中new static()与new self()的区别异同,相信对于大家学习PHP程序设计能够带来一定的帮助. 问题的起因是本地搭建一个站.发现用PHP 5.2 搭建不起来,站PHP代码里面有很多5.3以上的部分,要求更改在5.2下能运行. 改着改着发现了一个地方 return new static($val); 这尼玛是神马,只见过 return new self($val); class A { public static function get_self() { re