ООП-программирование в PHP - это для меня больше способ иметь хорошую ремонтопригодность и хорошую архитектуру (состав, фабрики, программирование на основе компонентов и т. Д.).
Наверняка вам потребуется переосмыслить некоторый дизайнШаблоны, используемые в устойчивых условиях.Пулы объектов и т. Д. И, конечно, некоторые паттерны проектирования, которые все еще вполне хороши в PHP, используются в краткосрочных модулях в apache: Singleton, Factory, Adapter, Interfaces, Ленивая загрузка и т. Д.
О проблеме устойчивости есть несколько решений.Конечно база данных хранилище.Но у вас также есть сеанс хранилище и приложение кэши (например, memcached или apc).Вы можете хранить сериализованные объекты в таких кешах.Вам просто понадобится хороший автозагрузчик для загрузки классов (и хороший код операции, чтобы избежать повторной интерпретации источников при каждом запросе).
Некоторые объекты действительно тяжелы для загрузки и сборки мы можем подумать, например, об объекте ACL, загрузке ролей, ресурсах, политике по умолчанию, правилах исключений, возможно, даже о выполнении некоторых из этих правил.Как только вы получите его, будет ужасно восстанавливать этот объект при каждом запросе.Вы должны действительно изучить способ хранения / загрузки этого готового объекта где-нибудь, чтобы ограничить его время загрузки (избегая запросов SQL и времени сборки). После создания это, безусловно, объект, который может иметь длительный срок службы, например, 1 час.
Единственные объекты, которые вы не можете сохранить как сериализованные строки, на самом деле - это те, от которых зависит в скором времени отобновление данных по параллельным запросам .Некоторым веб-сайтам даже не нужно заботиться об этом, точность данных не одинакова в общедоступном веб-сайте, публикующем новости, и в приложении для финансового учета.Если ваше приложение может обрабатывать предварительно созданные сериализованные объекты, вы можете увидеть serialize-storage-load-unserialize как простую служебную нагрузку в рамках :-) Но эффективно, ничего не разделяют , ни один объект не прослушивает все одновременные запросы, нет операции записи на объекте, совместно используемом с параллельным запросом, пока этот объект (или связанные данные) не будет где-то сохранен (и прочитан). Прими это как вызов!