PHP:self::和class_name::之间有什么不同?
我有一门课是这样的: 我想知道以下命令之间的区别,哪一个更好PHP:self::和class_name::之间有什么不同?,php,Php,我有一门课是这样的: 我想知道以下命令之间的区别,哪一个更好 Class foo { function test() { return false; } function test2() { return self::test(); } function test3() { return foo::test(); } static function test4()
Class foo
{
function test()
{
return false;
}
function test2()
{
return self::test();
}
function test3()
{
return foo::test();
}
static function test4()
{
return false;
}
function test5()
{
return self::test4();
}
function test6()
{
return static::test4();
}
}
1-自我测试与自我测试有什么不同;和foo::test?
2-self::test4之间有什么不同;和static::test4?
请简单地解释一下:self正在引用你所在的班级。而class_name可以在类本身之外调用类方法
i、 e-当你想在'foo'之外调用test6-你不能用'self'来调用它,你必须用'foo::'来调用它
哪一个更好
正如我解释的那样。在类内部编写时,使用“self”——这只是“最佳实践”。简单地说:self——是指您所在的类。而class_name可以在类本身之外调用类方法
i、 e-当你想在'foo'之外调用test6-你不能用'self'来调用它,你必须用'foo::'来调用它
哪一个更好
正如我解释的那样。当在课堂上自己写作时,使用“自我”——这只是“最佳实践”
1-自我测试与自我测试有什么不同;和foo::test
同样,如果在类范围内使用self::会更好,在更改类名时不必更改代码
2-self::test4之间有什么不同;和static::test4
test4是以PHP5.3为基础实现的,可以在静态继承的上下文中引用被调用的类
1-自我测试与自我测试有什么不同;和foo::test
同样,如果在类范围内使用self::会更好,在更改类名时不必更改代码
2-self::test4之间有什么不同;和static::test4
static::test4是以PHP5.3为基础实现的,它可以在静态继承的上下文中引用被调用的类。self::test之间有什么不同;和foo::test?
它们都以相同的方式工作,但是当你想重命名你的类时;self仍然会指向正确的类,但必须重命名foo
更好的方法是使用$this->test
self::test4之间有什么不同;和static::test4?
后者应用后期静态绑定,因此在扩展此类时会有所不同,例如:
class bar extends foo
{
function test4() { return true; }
}
$b = new bar;
当调用$b->test6时,它将返回true。self::test之间有什么不同;和foo::test?
它们都以相同的方式工作,但是当你想重命名你的类时;self仍然会指向正确的类,但必须重命名foo
更好的方法是使用$this->test
self::test4之间有什么不同;和static::test4?
后者应用后期静态绑定,因此在扩展此类时会有所不同,例如:
class bar extends foo
{
function test4() { return true; }
}
$b = new bar;
然后,当调用$b->test6时,它将返回true。哪一个更好?这不是应该问的问题;答案几乎可以肯定,这要看情况而定。不过,在第一种情况下,$this->test是典型的方法。哪种方法更好?这不是应该问的问题;答案几乎可以肯定,这要视情况而定。不过,在第一种情况下,$this->test将是典型的方法。@GeraldSchneider不,这是static::将做但不是self::。@GeraldSchneider不,这是static::将做但不是self::。
class bar extends foo
{
function test4() { return true; }
}
$b = new bar;