我遇到了MyClass::function();
样式的调用方法,但无法找出原因。这是一个例子(我正在使用Kohana框架btw):
class Test_Core
{
public $var1 = "lots of testing";
public function output()
{
$print_out = $this->var1;
echo $print_out;
}
}
我尝试使用以下命令来调用它,但它将$ var1作为undefined返回:
Test::output()
然而,这很好用:
$test = new Test();
$test->output();
我通常使用这种调用对象的方式而不是“新类”样式,但我无法弄清楚为什么它不想工作。
答案 0 :(得分:4)
使用此:
Test::output()
您将方法称为静态方法 - 静态方法无法访问实例属性,因为没有实例。
如果要使用属性,则必须实例化该类,以获取对象 - 并调用该对象上的方法。
本手册的几个链接,作为参考:
引用我链接到的最后一页:
因为静态方法是可调用的 没有对象的实例 创建,伪变量
$this
在方法内部不可用 声明为静态。
并且:
静态调用非静态方法 生成
E_STRICT
级警告。
答案 1 :(得分:0)
静态调用vs实例调用。您将需要掌握这些基本的OOP概念。也读取了static关键字:
答案 2 :(得分:0)
静态调用时你不能使用$ this,因为$ this指的是在你的情况下没有创建的对象。
答案 3 :(得分:-1)
请尝试Test_Core::output()
,因为您使用的是错误的班级名称