Другие языки программирования и технологии

ООП в PHP (взаимодействие между объектами)

Скажите пожалуйста, возможно ли вызвать из метода одного объекта, метод другого объекта. Классы разные.
Ну да. А в чём проблема-то

class test
{
function __construct($obj)
{
$obj->foo();
}
}
Юрий Лежачёв
Юрий Лежачёв
625
Лучший ответ
Метод-конструктор вызывается автоматически при каждом создании объекта. И хотя конструктор появился в PHP давно (эту роль выполнял метод, названный именем класса) , но в PHP 5 была изменена схема именования конструктора - метод __construct() является теперь конструктором класса.
Аналогично, при уничтожении объекта вызывается специальный метод __destruct() – деструктор класса.
?php
class MyClass {
function __construct() {
echo "Запущен конструктор";
}
function __destruct() {
echo "Запущен деструктор";
}
}
$obj = new MyClass(); // Выводит "Запущен конструктор"
unset($obj); // Выводит "Запущен деструктор"
?
Если же необходимо вызвать конструктор или деструктор базового класса, то необходимо это делать явно, через указатель parent.
?php
class MyClass {
function __construct() {
echo "Запущен конструктор базового класса";
}
function __destruct() {
echo "Запущен деструктор базового класса";
}
}
class MyClass1 extends MyClass {
function __construct() {
parent::__construct();
}
function __destruct() {
parent::__destruct();
}
}
$obj = new MyClass1(); // Выводит "Запущен конструктор
// базового класса"
unset($obj); // Выводит "Запущен деструктор базового класса"
?>
Для целей совместимости с предыдущей версией PHP 5 поступает следующем образом: если при создании объекта в классе не найдет конструктор __construct(), то PHP пытается выполнить метод, имя которого совпадает с именем класса.
Timur Manibekov
Timur Manibekov
3 323