Вызов метода внутри конструктора

Так что мой вопрос не в том, почему, а когда. Так что просто ответьте, что изменить, чтобы исправить код.

    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

Я нашел здесь несколько вопросов, но никто из них не рекомендовал практическое решение, везде только объяснение, а не решение.

Так что, пожалуйста, дайте мне простое исправление, потому что я думаю, что сделал все правильно.

-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

Другие решения

Просто создайте экземпляр $ new2 как HTML-объект.

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

$new2->BLANK();

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

По вопросам рекламы [email protected]