class — функция доступа из публичной конструкции в переполнении стека

У меня есть программа 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 хранится с нулем.

3

Решение

Ошибка, выведенная при запуске вашего кода, была;

«Объект теста класса не может быть преобразован в строку»

Есть 2 способа решить эту проблему, вы можете использовать любой;

  1. Вместо линии echo($j); измените это на echo($j->var0);

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

  1. Добавьте метод __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 (), назначенный вами для вывода вашей переменной.

Оба этих исправления означают, что «лол!» был выведен в окно моего браузера, как и ожидалось.

0

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

У вашего кода есть пара проблем, пожалуйста, обратитесь к документу:

Ошибки:

  1. класс test () должен быть классом test
  2. $ this = Tfunction (‘lol’); должно быть эхо Tfunction (‘lol’); и $ это должно быть никогда назначены.

Фиксированный код:

Class test{

public $var0 = null;

public function __Construct() {

echo Tfunction('lol');

}

}

function Tfunction ($String) {

$S = ($String . ' !');

return $S;

}

$a = new test();
0

Объявление класса неверно. Вам нужно создать объект класса

<?php
class test {

public $var0 = null;

public function __Construct() {
echo Tfunction('lol');



}

}

$obj=new test();

function Tfunction ($String) {

$S = ($String . ' !!');
return $S;


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