我有以下情况,想要使用特定方法作为静态,所以我可以将$ this用于其他方法。
<?php
class foobar {
public $foo;
public function __construct() {
global $foo;
$this->foo = $foo;
}
public static function foobarfunc() {
return self::foo();
}
public function foo() {
return $this->foo = 'hi';
}
}
echo foobar::foobarfunc();
?>
错误:
致命错误:在
中不在对象上下文中时使用$ this
这是我的情景
class DB{
public function selectQuery(){
$data = $this->finddata();
return "SELECT $data FROM bhumi";
}
public function finddata(){
$data = ('*');
return $data;
}
}
class TP extends DB{
public static $create;
public function __construct(){
$this->parentObj = new DB();
}
public static function printQ(){
$d = parent::selectQuery();
return $d;
}
}
echo TP::printQ();
怎么做?这段代码给了我错误。
答案 0 :(得分:1)
试试这种方式
public static function foobarfunc() {
$foobar = new self();
return $foobar->foo();
}
答案 1 :(得分:1)
如果您不想创建实例,请忽略原因:
<?php
class foobar {
public static $foo;
public function __construct() {
global $foo;
$this->foo = $foo;
}
public static function foobarfunc() {
return self::foo();
}
public static function foo() {
return self::$foo = 'Hi!';;
}
}
echo foobar::foobarfunc();
?>
答案 2 :(得分:0)
public static function foobarfunc() {
return self::foo();
}
您只想加载另一个名为“foo”的静态方法。此方法存在且不是静态的,因此错误有效。
您可以使用
进行修复public static function foobarfunc() {
$instance = new self();
return $instance->foo();
}
尽管如此,这种用途的有用性仍未解决。