У меня есть файл, например. class.php с помощью следующего кода:Добавление значений из дочернего класса в родительский класс
//class.php
class main_class {
public $output;
public function print_me ($msg){
$this->output .= $msg.'\r\n' ;
}
//….
//….
//more functions
// some of them using this->print_me
}
class sub_class extends main_class {
function verification(){
this->print_me ('Log: while verification');
}
}
//class.php ends
мне нужно начать main_class в main.php файла, код main.php файла следующим образом
//main.php
require 'class.php';
$main_class = new main_class();
//and need to append values into output variables
$main_class->print_me ('Log: from main.php ');
//but before echoing , I need to initiate sub class as follows:
//$sub_class = new $sub_class();
//though I do not need to append/ values using $sub_class instance ,
//I need to append value from within the class itself at last I can print output variable e.g.
echo $main_class->output;
позже я знал, класс sub_class код неправильно , так что изменилось с
function verification(){
this->print_me ('Log: while verification');
}
в
function verification(){
parent::print_me ('Log: while verification');
}
, но это не работает, либо я не добавлять значения в выходной переменной main_class, так что я могу напечатать наконец все журналы
Отсутствует '' 'sigin в методе проверки? Должно быть '$ this-> print_me()'. – marian0
Придерживайтесь метода 1, но введите '$' infront '$ this-> print_me (....)' Подклассы имеют автоматический доступ к свойствам родительского класса, как если бы они были их собственными. Единственная проблема заключалась в отсутствии «$» и что вы должны запускаться с отключенным display_errors, так как это должно было сгенерировать ошибку компиляции. – RiggsFolly
Отсутствие «$» было только опечаткой, даже префикс $ не добавлял значения вместе в родительский класс, как я полагаю, из-за разных экземпляров, однако, я думал, что если у меня будет совершенно отдельный третий класс, содержащий только функцию print_me и и как-то я называю это во всех классах и в объектах. –