鉴于以下类别:
<?php
class test{
static public function statfunc()
{
echo "this is the static function<br/>";
$api= new object;
}
}
class traductor
{
public function display()
{
echo "this is the object function";
}
}
test::statfunc();
$api->display();
这不会显示消息"this is the static function<br/>"
。
有没有办法通过静态函数实例化并将该对象移到外面?
谢谢......我对目标编程代码缺乏经验。
答案 0 :(得分:2)
您应该从静态函数返回对象:
static public function statfunc()
{
$api = new traductor;
return $api;
}
然后将返回的对象存储在您可以使用的变量中。
$api = test::statfunc();
$api->display();
答案 1 :(得分:2)
您对声明的使用有点偏。您的代码导致2个致命错误。首先,找不到类对象,你应该替换:
$api= new object;
使用
return new traductor;
作为一个静态类,它们执行一个动作,它们不保存数据,因此是静态关键字。当你开始使用$ this等时,请记住这一点。您需要将结果返回到另一个变量。
test::statfunc();
$api->display();
应该成为:
$api = test::statfunc();
$api->display();
有关静态关键字和示例的更多信息,请参阅http://php.net/manual/en/language.oop5.static.php。