&引用;::&引用;在php中,调用非静态函数在类外工作
据我所知,&引用;::&引用;在php中,调用非静态函数在类外工作,php,Php,据我所知,:用于调用子类中的静态函数和基类函数。据我所知,通常我们必须创建一个类的实例,以便在类外使用它 class a { public function foo() { // } } 要使用此类,请执行以下操作: $instance = new a(); $instance->foo(); 但是我们可能调用foo函数,而不创建任何实例,并且只使用:。例如,以下代码是在课堂外编写的,运行良好: a::foo(); 它为什么有效?怎么做 使用C
:
用于调用子类中的静态函数和基类函数。据我所知,通常我们必须创建一个类的实例,以便在类外使用它
class a
{
public function foo()
{
//
}
}
要使用此类,请执行以下操作:
$instance = new a();
$instance->foo();
但是我们可能调用foo
函数,而不创建任何实例,并且只使用:
。例如,以下代码是在课堂外编写的,运行良好:
a::foo();
它为什么有效?怎么做 使用
Class::method()
语法调用非静态方法会调用该方法,但如果该方法试图访问$this
,则会引发错误。它本质上是PHP4的(非常小的)面向对象编程实现的延迟,它将在PHP5中生成警告;从面向对象的角度来看,这不是正确的行为,您不应该依赖它。:
是范围解析操作符
从PHP的文档中:
<?php
class MyClass {
const CONST_VALUE = 'A constant value';
}
$classname = 'MyClass';
echo $classname::CONST_VALUE; // As of PHP 5.3.0
echo MyClass::CONST_VALUE;
?>
它类似于
->
,但有一些特殊的语义。它被称为范围解析运算符
:(相关)如何使用范围解析运算符访问属性?