Как вызвать внутри метода одного класса метод другого класса в php? Есть классы:class DataBase{ public function name1(){ // } } class User(){ public function name2(){ // Здесь нужно вызвать метод name1() из класса DataBase } } Пробую:protected $db; public function __constructor(DataBase $DB) { $this->db = $DB; } public function name2(){ $this->db->name1(); } Ошибка: Call to a member function name1() on null in... Работает только в том случае, если я инициализирую класс внутри метода name2().
Для того чтобы вызвать метод name1() из класса DataBase внутри метода name2() класса User, нужно сначала создать объект класса DataBase в конструкторе класса User и сохранить его в свойстве $db.
Далее, в методе name2() вы сможете вызвать метод name1() через сохраненный объект $db. Вот пример исправленного кода:
class DataBase{ public function name1(){ // код } } class User{ protected $db; // Создаем объект класса DataBase и сохраняем его в свойство $db public function __construct(DataBase $DB){ $this->db = $DB; } public function name2(){ $this->db->name1(); // Вызываем метод name1() из класса DataBase } } // Создаем объект класса DataBase $DB = new DataBase(); // Создаем объект класса User и передаем ему объект DataBase $user = new User($DB); // Вызываем метод name2() $user->name2();
Теперь метод name2() класса User должен успешно вызывать метод name1() из класса DataBase.
Для того чтобы вызвать метод name1() из класса DataBase внутри метода name2() класса User, нужно сначала создать объект класса DataBase в конструкторе класса User и сохранить его в свойстве $db.
Далее, в методе name2() вы сможете вызвать метод name1() через сохраненный объект $db. Вот пример исправленного кода:
class DataBase{public function name1(){
// код
}
}
class User{
protected $db;
// Создаем объект класса DataBase и сохраняем его в свойство $db
public function __construct(DataBase $DB){
$this->db = $DB;
}
public function name2(){
$this->db->name1(); // Вызываем метод name1() из класса DataBase
}
}
// Создаем объект класса DataBase
$DB = new DataBase();
// Создаем объект класса User и передаем ему объект DataBase
$user = new User($DB);
// Вызываем метод name2()
$user->name2();
Теперь метод name2() класса User должен успешно вызывать метод name1() из класса DataBase.