gpt4 book ai didi

php - 查看某个方法是否存在于静态类中

转载 作者:IT王子 更新时间:2023-10-29 01:02:13 24 4
gpt4 key购买 nike

我想检查我正在创建的静态库中是否存在一个函数。我见过 function 和 method_exists,但还没有找到允许我在相对上下文中调用它们的方法。这是一个更好的例子:

class myClass{
function test1()
{
if(method_exists("myClass", "test1"))
{
echo "Hi";
}
}
function test2()
{
if(method_exists($this, "test2"))
{
echo "Hi";
}
}
function test3()
{
if(method_exists(self, "test3"))
{
echo "Hi";
}
}
}
// Echos Hi
myClass::test1();
// Trys to use 'self' as a string instead of a constant
myClass::test3();
// Echos Hi
$obj = new myClass;
$obj->test2();

如果函数存在,我需要能够使测试 3 echo Hi,而不需要将它从静态上下文中取出。给定访问类的关键字应该是“self”,因为 $this 用于分配的类。

最佳答案

static::class 自 PHP 5.5 起可用,并将返回“Late Static Binding”类名:

class myClass {
public static function test()
{
echo static::class.'::test()';
}
}

class subClass extends myClass {}

subClass::test() // should print "subClass::test()"

get_called_class()做同样的事情,并在 PHP 5.3 中引入

class myClass {
public static function test()
{
echo get_called_class().'::test()';
}
}

class subClass extends myClass {}

subClass::test() // should print "subClass::test()"

get_class()函数,从 php 5.0.0 开始不需要任何参数,如果在类中调用将返 echo 明函数的类的名称(例如,父类):

class myClass {
public static function test()
{
echo get_class().'::test()';
}
}

class subClass extends myClass {}

subClass::test() // prints "myClass::test()"

__CLASS__ magic constant做同样的事[ link ].

class myClass {
public static function test()
{
echo __CLASS__.'::test()';
}
}

class subClass extends myClass {}

subClass::test() // prints "myClass::test()"

关于php - 查看某个方法是否存在于静态类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1156593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com