Здравствуйте. Подскажите, пожалуйста, по структуре классов. Основной класс, который наследюут все (вернее почти все) классы. Код (Text): <?php class Objects { /** * Загруженные объекты * @var array */ private static $object = array(); public function __get($class) { if (isset(self::$object[$class])) { return self::$object[$class]; } else { // autoloader подгружает файл return self::$object[$class] = new $class; } } } Какой-то класс1 Код (Text): <?php class someClass1 extends Objects { public function someFunc() { return 'Hello PHP World!'; } } Какой-то класс2, которому надо обратиться к классу1 Код (Text): <?php class someClass2 extends Objects { public function someFunc() { echo $this->someClass1->someFinc(); } } Такой подход приемлем в небольшом приложении?
Если вы подобное увидели в C#, где есть базовый встроенный класс Object, от которого происходит все, включая стандартные типы данных, то тут такого вроде как нет. если вы собираетесь что то писать и для ВСЕГО один базовый класс от которого будет происходить все, это наверное глупо, нет смысла. А так наследование полезное дело, пользуйтесь.
Для небольшого приложения. Несколько базовых классов для работы с хранилищами, валидаторами и т.п. + несколько модулей вроде страницы сайта, меню, новости (которые в свою очередь делятся на несколько классов) и т.п. В принципе мне не нужно иметь более одного экземпляра каждого класса. Задача сделать так, чтобы код был в меру лаконичный и производительный. И вот вопрос, как лучше организовать связь между классами? Постоянно в каждом классе создавать экземпляры требуемых классов почему-то не хочется или так будет лучше? По сути этот класс является хранилищем объектов, которые накапливаются по мере первого обращения к ним.
Ой, жесткач. Лаконичный и классы для всего и вся - это несовместимые вещи. Лаконичное меню это вывод пунктов в цикле из массива.
Вы можете делать как угодно. Просто называйте вещи своими именами. Я вам сказал как отрисовать меню из той же БД циклом. Лаконично? Лаконичнее некуда. Если вам для этого нужны классы и наследование - не называйте это лаконичным. и не забывайте, что в пхп есть ассоциативные массивы с не типизированными переменными. Они зачастую выполняют ту роль, что классы в других языках.
В принципе можно, возможно где то даже от этого будет толк, но не много. вот допустим у вас есть необходимость в классах user для хранения данных пользователя (логин, адрес эл. почты, пароль и т.д.) где все это будет хранится в ассоциативном массиве примерно так: Код (Text): class user { var $data; // методы } и такой же класс только page, для хранения данных страницы, можно их объединить: Код (Text): class main { var $user; // массив с данными пользователя var $page; // массив с данными страницы // методы } было бы не плохо если бы можно было записывать объекты классов в сессию, но к сожалению это не работает. да и файл с классом разрастется в размерах и будет подгружаться не нужные данные, допустим методы проверки авторизации, зачем, если пользователь авторизуется один раз и все более эти методы не нужны в течении сессии.
Ну во первых чтобы была динамика, а во вторых просто прописав в html вы не сможете определить активную ссылку на данный момент. VLK, php не работает без обновления, а когда обновляется страница то интерпретируется снова и снова весь код. Не надо путать с эмулирующими языками где все происходит на виртуальной машине...
igordata, да, херню сморозил при вопросе. Зачем? А сколько пользователь будет пользоваться сессией? Мне жахнуло в голову забанить его резко. Он так и будет ходить в рамкам сессии? Спасибо! Просветили.