一、获取静态方法调用者的类名

方法一:
class foo {
static public function test() {
var_dump(get_called_class());
}
} class bar extends foo {
} foo::test();
bar::test(); 输出: string(3) "foo"
string(3) "bar" 方法二:
class Bar {
public static function test() {
var_dump(static::class);
}
} class Foo extends Bar { } Foo::test();
Bar::test(); Output: string(3) "Foo"
string(3) "Bar"

二、运用call_user_func_array代入对象作用域

<?php
function foobar ( $arg , $arg2 ) {
echo __FUNCTION__ , " got $arg and $arg2 \n" ;
}
class foo {
function bar ( $arg , $arg2 ) {
echo __METHOD__ , " got $arg and $arg2 \n" ;
}
} // Call the foobar() function with 2 arguments
call_user_func_array ( "foobar" , array( "one" , "two" )); // Call the $foo->bar() method with 2 arguments
$foo = new foo ;
call_user_func_array (array( $foo , "bar" ), array( "three" , "four" ));
?>

[PHP]获取静态方法调用者的类名和运用call_user_func_array代入对象作用域的更多相关文章

  1. php 获取静态方法调用的类名

    方法一: class foo { static public function test() { var_dump(get_called_class()); } } class bar extends ...

  2. JAVA中获取当前运行的类名,方法名,行数

    JAVA中获取当前运行的类名,方法名,行数 public static String getTraceInfo(){ StringBuffer sb = new StringBuffer(); Sta ...

  3. Java中获取运行代码的类名、方法名

    以下是案例,已运行通过 package com.hdys; /* * 1.获取当前运行代码的类名,方法名,主要是通过java.lang.StackTraceElement类 * * 2. * [1]获 ...

  4. WinAPI: GetClassName - 获取指定窗口的类名

    WinAPI: GetClassName - 获取指定窗口的类名 //声明: GetClassName( hWnd: HWND; {指定窗口句柄} lpClassName: PChar; {缓冲区} ...

  5. 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换

    [源码下载] 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换 作者:webabcd 介绍速战速决 之 PHP ...

  6. c# 在静态方法里,怎么能得到调用者的类名?

    System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(); string name = st.GetFrame(1) ...

  7. PHP 获取当前所在的类名、方法名等

    PHP获取当前类名.方法名  __CLASS__ 获取当前类名  __FUNCTION__ 当前函数名(confirm)  __METHOD__ 当前方法名 (bankcard::confirm) _ ...

  8. python 动态获取当前运行的类名和函数名的方法

    一.使用内置方法和修饰器方法获取类名.函数名 python中获取函数名的情况分为内部.外部,从外部的情况好获取,使用指向函数的对象,然后用__name__属性 复制代码代码如下: def a():pa ...

  9. .NET使用StackTrace获取方法调用者信息

    前言 在日常工作中,偶尔需要调查一些诡异的问题,而业务代码经过长时间的演化,很可能已经变得错综复杂,流程.分支众多,如果能在关键方法的日志里添加上调用者的信息,将对定位问题非常有帮助. 介绍 Stac ...

随机推荐

  1. Neutron local network 学习

    local network 的特点是不会与宿主机的任何物理网卡相连,也不关联任何的 VLAN ID.   对于每个 local netwrok,ML2 linux-bridge 会创建一个 bridg ...

  2. HTTP状态码表

    HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.所有状态码的第一个数字代表了响应的五种状态之一. 1xx消息 这一类型的状态码,代表请求已被 ...

  3. redis cli命令

    redis安装后,在src和/usr/local/bin下有几个以redis开头的可执行文件,称为redis shell,这些可执行文件可做很多事情. 可执行文件 作用 redis-server  启 ...

  4. Crypto加密解密

    crypto 模块提供了加密功能,包含对 OpenSSL 的哈希.HMAC.加密.解密.签名.以及验证功能的一整套封装.我们这里讲crypto AES算法加密 一.使用步骤 1.引入Crypto 1. ...

  5. EntityManagerFactory 是多线程的 将其变成一个单线程(使用静态方法)提交效率

    由于EntityManagerFactory 是一个线程安全的对象(即多个线程访问同一个EntityManagerFactory 对象不会有线程安全问题),并且EntityManagerFactory ...

  6. Django自带的用户认证auth模块

    一.介绍 基本上在任何网站上,都无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能. 使用Django,我们可以不需要自己写这些功能,因为Dj ...

  7. 关于ESB(企业服务总线)的学习笔记

    MQ(消息队列 message queues),它是一种应用程序对应用程序的通信方法.排队指的是应用程序通过队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求. Web Sevice 技术, ...

  8. Go语言的通道(1)-无缓冲通道

    前言: 上文中我们采用了[原子函数]已经[共享锁]两种方式分别对多个goroutine进行了同步,但是在go语言中提供了另一种更好的方式,那就是使用通道(Channel). 一.通道是什么? 其实无论 ...

  9. Django+Vue打造购物网站(十)

    首页.商品数量.缓存和限速功能开发 将环境切换为本地,vue也切换为本地 轮播图 goods/serializers.py class BannerSerializer(serializers.Mod ...

  10. ☆ [ZJOI2006] 书架 「平衡树维护数列」

    题目类型:平衡树 传送门:>Here< 题意:要求维护一个数列,支持:将某个元素置顶或置底,交换某元素与其前驱或后继的位置,查询编号为\(S\)的元素的排名,查询排名第\(k\)的元素编号 ...