首先看代码:

class A
{ use T {
T::say as aTsay;
} public function say()
{
echo 'a__class__:' . __CLASS__ . '<br>';
echo 'a get_class:' . get_class() . '<br>';
echo 'a get_class this:' . get_class($this) . '<br>';
echo 'a get_called_class:' . get_called_class() . '<br><br>';
static::aTsay();
static::Tsay();
}
} class B extends A
{
use T {
T::say as Tsay;
} public function say()
{
parent::say();
echo 'b__class__:' . __CLASS__ . '<br>';
echo 'b get_class:' . get_class() . '<br>';
echo 'b get_class this:' . get_class($this) . '<br>';
echo 'b get_called_class:' . get_called_class() . '<br><br>'; static::Tsay();
}
} trait T
{
public function say()
{
echo 't__class__:' . __CLASS__ . '<br>';
echo 't get_class:' . get_class() . '<br>';
echo 't get_class this:' . get_class($this) . '<br>';
echo 't get_called_class:' . get_called_class() . '<br><br>';
}
} $b_say = new B();
$b_say->say();

输出结果:

a__class__:A
a get_class:A
a get_class this:B
a get_called_class:B

t__class__:A
t get_class:A
t get_class this:B
t get_called_class:B

t__class__:B
t get_class:B
t get_class this:B
t get_called_class:B

b__class__:B
b get_class:B
b get_class this:B
b get_called_class:B

t__class__:B
t get_class:B
t get_class this:B
t get_called_class:B

基本可以看出:

get_class是更灵活的应用,在没有输入参数的情况下,根__CLASS__是一样的,在输入this的情况下,根get_called_class 是一致的.

__CLASS__  函数实际所属的类,也就是__CLASS__。无论多少次调用,都不会变的实际输出。

get_called_class 调用函数的类,也就是,程序 $this->method()所在的类

最新文章

  1. 【solr】之solr界面查询返回距离并排序
  2. Java多线程基础知识(五)
  3. ytu 1064: 输入三个字符串,按由小到大的顺序输出(水题,字符串处理)
  4. golang基础知识之encoding/json package
  5. libjingle_peerconnection
  6. Python对整形数字进行加密和解密
  7. 介绍linux下利用编译bash设置root账号共用的权限审计设置
  8. JavaWeb笔记——Jsp的指令、内置对象和动作标签
  9. PostgreSQL的 initdb 源代码分析之二十二
  10. Instruments性能检测
  11. France &#39;98
  12. 微信开发模式 api 接口文档简介
  13. python—day02
  14. git之push
  15. Sql Server语句大全
  16. go语言语法基础
  17. JQuery Datatable用法
  18. nodejs多语句查询
  19. 自己写的 读写 ini 配置文件类
  20. DFT

热门文章

  1. css 绘制三角形
  2. vue学习:vue+webpack的快速使用指南(新手向)
  3. (53)Wangdao.com第七天_JavaScript 强制类型转换
  4. 02_ if_else if 练习
  5. JS-原型的某些概念
  6. http跳转htts的htaccess文件设置
  7. 剑指offer——python【第4题】重建二叉树
  8. Ehcache 3.7文档—基础篇—Tiering Options
  9. 泡泡一分钟: Deep-LK for Efficient Adaptive Object Tracking
  10. C# string contains 不区分大小写