在构造函数中调用方法

时间:2015-03-01 10:53:05

标签: php class constructor this fatal-error

所以我的问题不是为什么,何时。因此,只需回答要更改的内容以更正代码。

    class html {
    var $title;
    var $result;
    var $content;
    public function __construct(){
        $title = "Untitled";
        $content = "Content";
        $this->setup_me();
    }
    public function BLANK(){
        $title = "Untitled";
        $this->setup_me();
    }
public function add($string){
    $result = $string;
}
public function setup_me(){
    $result = "$title--$content";
}
public function show(){
    echo $result;
}
}
$new1 = new html();
$new2 = html::BLANK();

$new1->show();
$new2->show();

这会让我回头

Fatal error: Using $this when not in object context in /home/fcs.php on line 23

我在这里发现了一些问题,但没有人提出实际的解决方案,只有解释,没有解决方案。

所以请给我一个简单的修正,因为我认为我做对了。

2 个答案:

答案 0 :(得分:1)

这里只是一个没有评论的工作版本;)

class html
{
    public $title;
    public $result;
    public $content;

    public function __construct()
    {
        $this->title = "Untitled";
        $this->content = "Content";
        $this->setup_me();
    }

    public static function BLANK()
    {
        $html = new html();
        $html->content = '';
        $html->setup_me();

        return $html;
    }

    public function add($string)
    {
        $this->result = $string;
    }

    public function setup_me()
    {
        $this->result = "{$this->title}--{$this->content}";
    }

    public function show()
    {
        return $this->result;
    }
}

$new1 = new html();
$new2 = html::BLANK();

echo $new1->show()."\n";
echo $new2->show()."\n";

答案 1 :(得分:0)

只需将$ new2实例化为html对象。

$new1 = new html();
$new2 = new html();

$new2->BLANK();

$new1->show();
$new2->show();