У меня есть программа php, где у меня есть функция и класс с открытой функцией конструкции, мне нужно вызвать функцию изнутри открытой конструкции, как показано в коде ниже:
class test {
public $var0 = null;
public function __construct() {
$this->var0 = Tfunction('lol');
}
}
function Tfunction ($String) {
$S = ($String . ' !');
return $S;
}
$j = new test();
echo($j);
когда я запускаю это, он не запускает функцию, я пробовал все что угодно, но ему не нужно ставить ‘lol!’ в мою публичную переменную, как я мог заставить это работать?
Стоит отметить, что я не получаю никаких сообщений о том, что класс не может получить доступ к шрифту или что-то в этом роде, просто кажется, что строка игнорируется и $ var0 хранится с нулем.
Ошибка, выведенная при запуске вашего кода, была;
«Объект теста класса не может быть преобразован в строку»
Есть 2 способа решить эту проблему, вы можете использовать любой;
echo($j);
измените это на echo($j->var0);
Теперь вместо того, чтобы пытаться напечатать объект, вы теперь печатаете открытую переменную из объекта, который был установлен в конструкторе.
Добавьте метод __toString () к своему объекту и используйте его для вывода поля var0.
class test {
public $var0 = null;
public function __construct() {
$this->var0 = Tfunction('lol');
}
public function __toString(){
return $this->var0;
}
}
function Tfunction ($String) {
$S = ($String . ' !');
return $S;
}
$j = new test();
echo($j);
Теперь, когда вы пытаетесь напечатать объект с echo($j);
он будет использовать __toString (), назначенный вами для вывода вашей переменной.
Оба этих исправления означают, что «лол!» был выведен в окно моего браузера, как и ожидалось.
У вашего кода есть пара проблем, пожалуйста, обратитесь к документу:
Ошибки:
Фиксированный код:
Class test{
public $var0 = null;
public function __Construct() {
echo Tfunction('lol');
}
}
function Tfunction ($String) {
$S = ($String . ' !');
return $S;
}
$a = new test();
Объявление класса неверно. Вам нужно создать объект класса
<?php
class test {
public $var0 = null;
public function __Construct() {
echo Tfunction('lol');
}
}
$obj=new test();
function Tfunction ($String) {
$S = ($String . ' !!');
return $S;
}
?>