PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (8): « 1 2 3 [4] 5 6 7 8 »

> Найдено сообщений: 111
morph-x Отправлено: 20 Ноября, 2011 - 05:11:55 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
Чтобы объявить класс с интерфейсом ArrayAccess нужно имплементировать его, а не наследовать:

PHP:
скопировать код в буфер обмена
  1. class Ваш_Класс implements ArrayAccess
morph-x Отправлено: 20 Ноября, 2011 - 05:07:04 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
DeepVarvar, не ArrayAccess это не класс а интерфейс, нужно сделать так:

morph-x Отправлено: 20 Ноября, 2011 - 02:53:51 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
sKaa, Спасибо учту Улыбка . На самом деле это не оригинал кода, этот код я писал прямо на сайте и не заметил ошибки (в оригинальном Registry у меня еще есть ArrayAccess, но я думаю здесь это не очень важно).
morph-x Отправлено: 20 Ноября, 2011 - 01:57:52 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
Хотел еще посоветоваться. У меня есть класс Registry (реестр), вот его код:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.     final class Registry {
  4.         private static $instance;
  5.         private static $registry;
  6.        
  7.         private function __construct() {}
  8.         private function __clone() {}
  9.         private function __wkaeup() {}
  10.        
  11.         public function &getInstance() {
  12.             if(is_null(self::$instance)) {
  13.                 self::$instance = new self;
  14.             }
  15.             return self::$instance;
  16.         }
  17.        
  18.         public function set($key, $value) {
  19.             self::$registry[$key] = $value;
  20.         }
  21.  
  22.         public function &get($key) {
  23.             return self::$registry[$key];
  24.         }
  25.     }
  26.  
  27. ?>

Ничего нового, просто обычный синглтон. Я хотел спросить насчет методов getInstance() и get(): хорошо ли возвращать ссылки или лучше без них, как считаете?
(Добавление)
Не, уже не надо сам разобрался (поэкспериментировал немного). Вот нормальный код:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.     final class Registry {
  4.         private static $instance;
  5.         private static $registry;
  6.        
  7.         private function __construct() {}
  8.         private function __clone() {}
  9.         private function __wkaeup() {}
  10.        
  11.         public static function getInstance() {
  12.             if(is_null(self::$instance)) {
  13.                 self::$instance = new self;
  14.             }
  15.             return self::$instance;
  16.         }
  17.        
  18.         public static function set($key, $value) {
  19.             self::$registry[$key] = $value;
  20.         }
  21.  
  22.         public static function get($key) {
  23.             return self::$registry[$key];
  24.         }
  25.     }
  26.  
  27. ?>
morph-x Отправлено: 19 Ноября, 2011 - 03:02:22 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
caballero пишет:
так если уже есть массив переменных по которым модули дергаются зачем какой то буфер еще - в него и пиши ключ-значение

Сори, что-то я спать хочу, соображаю не очень...

caballero пишет:
это каким таким чудом два запроса. Данные могут быть довольно сложные - иногда и пятью не обойдешся - посмотри на форум например

Моя CMS будет предназначена (пока что) для сайтов-визиток. А всю информацию о страницах я буду (по крайней мере постараюсь) держать в одной таблице, но даже если она будет в нескольких таблицах, то буду юзать JOIN'ы, чтобы максимально сократить количество запросов.
morph-x Отправлено: 19 Ноября, 2011 - 02:40:43 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
DeepVarvar пишет:
А если макрос в шаблоне объявлен более одного раза, как поступает "шаблонизатор", еще раз обращается к модулю за информацией?
Если да, то стоит подумать о буфере.

Да, насчет буфера подумаю.

DeepVarvar пишет:
Сколько запросов к БД на страницу ожидается?

Два запроса: один на выборку самой страницы и еще один на выборку всех ее дочерних страниц.
morph-x Отправлено: 19 Ноября, 2011 - 02:26:03 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
DeepVarvar пишет:
Являются ли вьюшками те подключаемые файлы?

Да это как раз они. В каждой папке с модулем присутствует файл view.php. Последняя строчка в нем возвращает обработанный результат, который нужно вставить в нужное место в шаблоне. А то что пробегается по всех папках, это не вьюшка это у меня как бы шаблонизатор, кстати он пробегается не по всех папках. Он ищет переменные в шаблоне (например переменная меню выглядит так: {menu}), и записывает в массив. И получается как бы список модулей которые нужно использовать.
morph-x Отправлено: 19 Ноября, 2011 - 01:23:50 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
DeepVarvar, Здесь вьюшка не такая как у MVC. Здесь файл view.php просто возвращает результат работы модуля (т.е. обработанный результат, html-код, а не сырой результат), и вьюшка здесь как бы действительно делает запросы. Наверное мне лучше ее переименовать Улыбка .
morph-x Отправлено: 18 Ноября, 2011 - 23:06:01 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
caballero, у меня класс Template для сбора переменных пробегается по всех каталогах внутри каталога modules проверяет есть ли там файлик view.php, если есть то подключает:

PHP:
скопировать код в буфер обмена
  1. $this->variables[$dirname] = require_once("/modules/{$dirname}/view.php");

В файле view.php находится код который возвращает результат, например для отображения страницы он будет следующий:

PHP:
скопировать код в буфер обмена
  1. $view = new Page($_GET["id"]);
  2. return $view->html();
morph-x Отправлено: 18 Ноября, 2011 - 22:39:19 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
caballero пишет:
И кстати как во всех этих фрейморках встает проблеммма а кто будет всеv этим управлять? Кто и как соберет в кучу страницу на которую как правило выводятся данные нескольких модулей? и д.

Ну для этого я решил сделать класс Template. Это будет выглядеть типа так:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $tpl = new Template("/templates/.../index.tpl"); // Создание нового шаблона
  3. $tpl->show(); // Отображение шаблона
  4. ?>

Метод show() будет заменять переменные в шаблоне на результаты работы (виды, views) модулей, а затем отображать полученный результат.

P.S. По-моему это не MVC, разве что VC, согласно этой статье: http://zendframework[dot]ru/anonses/model-with-mvc
morph-x Отправлено: 18 Ноября, 2011 - 21:43:05 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212

DeepVarvar пишет:
А что это? Я знаю что просто фраза такая...

Это обзоры вирусных видео (на YouTube канал такой есть), но мне не очень нравится, ведущий уж больно много материться.
morph-x Отправлено: 18 Ноября, 2011 - 21:34:09 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
DeepVarvar, да я уже начал, и переделывал... и даже запутался Улыбка . Поэтому спрашиваю здесь советов. Но ладно уже, разберусь походу...


DeepVarvar пишет:
Всеравно 100500 раз переделаете.

Это реклама +100500 Улыбка ?
morph-x Отправлено: 18 Ноября, 2011 - 20:44:47 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
caballero пишет:
В остальном я так и не понял чего вы хотите сказать или сделать. Может вам сначала объяснить что и как хотите сделать без специальных терминов, а потом будет видно где там какие паттерны или классы. Потому как вообщне непонятно о чем речью.

Мне нужно создать маленькую CMS (если ее так можно назвать) систему. Логика такова, что каждый модуль состоит из ядра самого модуля, вида и пользовательского интерфейса (последние два необязательны). Страницы - тоже модуль (т.е. не сами страницы а модуль для создания/удаления/редактирования /выборки/и т.д. их). Этот модуль будет состоять из ядра (функции для выборки, создания, удаления, редактирования страниц), пользовательского интерфейса (грубо говоря - страница в админке) и вида (вид это как бы просто переменная в которой содержится обработанный результат выборки страниц(ы), для того чтобы шаблонизатор мог подставить эту переменную в шаблон). Вот такая вот логика.
morph-x Отправлено: 18 Ноября, 2011 - 19:34:36 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
DeepVarvar пишет:
Разве это важно? Это из разряда: ф-ций больше чем массивов...

ОК, тогда еще хочу спросить одну вещь, может немного тупой вопрос, но как называть эти объекты, например объект класса Pages, стоит ли называть $pages или лучше вообще делать так: Pages::method(), ну или Pages::getInstance()->method()
(Добавление)
caballero, да, я неудачно сопоставил, я имел ввиду, если например использовать абстрактный Pages, то сам класс будет выступать в роли... не знаю как сказать, просто получится что мы не можем создать объект данного класса, но можем работать с его статическими методами и переменными, и получается как бы только одно хранилище. В случае с синглтон мы можем создать только один объект данного класса и получится тоже как бы одно хранилище. Например я видел что для работы с БД одни используют синглтон а другие - абстракцию. Ну и я подумал, что они все-таки чем-то схожи жруг с другом Улыбка
(Добавление)
P.S. Я знаю что Singleton это паттерн, а абстрактный класс - это абстрактный класс.
morph-x Отправлено: 18 Ноября, 2011 - 19:02:16 • Тема: Как сделать правильную CMS • Форум: Объектно-ориентированное программирование

Ответов: 105
Просмотров: 32212
caballero пишет:
Паттерны выглядят правильно и логично только в теории.

Да вы правы, на практике не все так логично как кажется... И я уже передумал насчет ActiveRecord Улыбка

У меня появился еще один вопрос: хорошо ли юзать абстрактный (или синглтон) класс для работы со страницами? Это как бы самый подходящий вариант получается, но тогда получается классов больше чем объектов, и мне интересно будет ли это еще считаться нормальным ООП или это уже не то?

Страниц (8): « 1 2 3 [4] 5 6 7 8 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB