[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как хранить объекты внутри объектов?
Mr._Stas
Вопрос, возможно, туповатый, но ответ в учебниках не нашёл .
Имеется класс Table, объект которого содержит несколько protected полей, являющимися объектами класса Field.
Конструкция
class Table { 
protected f1 = new Field();
}

не прокатывает.
Можно создание объектов поместить в конструктор
<?php
class
Table {
protected f1, f2;
function __construct(){
$this->f1 = new Field();
$this->f2 = new Field();
}
}
?>

Но в этом случае возникает две трудности:
1. Необходимо дублировать все поля типа Field сначала в начале класса после слова protcted, а затем в конструкторе. При добавлении, изменении полей, постоянно забываешь одно из двух мест. Неудобно.
2. Если у класса Table есть наследники, то нужно принудительно вызывать конструктор родительского класса, да ещё и так чтобы все действия с полями типа Field происходили после вызова этого конструктора. Неудобно.
Может я что-то делаю не так, поясните, пожалуйста. Может есть более простое решение?
Invis1ble
Цитата (Mr._Stas @ 12.09.2017 - 18:01)
protected f1 = new Field();

в php так нельзя инициализировать

Цитата (Mr._Stas @ 12.09.2017 - 18:01)
Необходимо дублировать все поля типа Field сначала в начале класса после слова protcted, а затем в конструкторе. При добавлении, изменении полей, постоянно забываешь одно из двух мест. Неудобно.

жизнь - боль

Цитата (Mr._Stas @ 12.09.2017 - 18:01)
Если у класса Table есть наследники, то нужно принудительно вызывать конструктор родительского класса, да ещё и так чтобы все действия с полями типа Field происходили после вызова этого конструктора. Неудобно.

шта

Цитата (Mr._Stas @ 12.09.2017 - 18:01)
Может я что-то делаю не так, поясните, пожалуйста. Может есть более простое решение?
chee
Mr._Stas, судя по всему, ты вообще не понимаешь как работает ООП в php. Изучи это http://php.net/manual/ru/oop5.intro.php, потом уже задай нам вопросы, если таковые останутся.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.