Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как реализовать блоки в MVC системе
Форумы портала PHP.SU » » CMS и фреймворки » Как реализовать блоки в MVC системе

Страниц (2): [1] 2 »
 

1. morph-x - 10 Декабря, 2011 - 02:34:11 - перейти к сообщению
Короче, я написал библиотеку-шаблонизатор. При вызове функции Teamplate::parse() указываются два параметра: первый - файл, второй - данные (переменные). Каждый контроллер он как бы отдает две переменные - заголовок и содержимое. Но в шаблоне, кроме переменных есть еще блоки. Откуда их брать шаблонизатору? Грузить в каждом контроллере не рационально. И что они вообще представляют (или должны представлять) ? Вьюшки - наверное нет, потому что во вьюшка не должна быть логика (а в случаее с блоком комментариев там вообще и к БД запросы...). Контроллеры - тоже нет, потому что обращаться к контроллеру из библиотеки это... нельзя (да и вроде невозможно в CI). Модели отпадают, потому что они только для работы с БД (ну а в случае с "толстыми" моделями повторяется случай с контроллером). Остается библиотеки, но... тогда библиотека будет обращаться к модели, не знаю, хорошо ли это.... Вообщем подскажите, как с этим быть. Заранее спасибо.
2. sKaa - 10 Декабря, 2011 - 04:23:50 - перейти к сообщению
А если внутри шаблона :
3. vlom - 10 Декабря, 2011 - 07:47:14 - перейти к сообщению
Я пытаюсь реализовать следующим способом
Основной контент формируется при загрузке системы, а дополнительные модули вызываются из шаблона.
PHP:
скопировать код в буфер обмена
  1. Mod::$getInst()->load('position')

В данном вызове параметр - это позиция в шаблоне.
Далее идет запрос к базе, в которой хранятся таблицы с информацией о включенных модулях. Ну и соответсвено, если в базе находится модули с указанной позицией, их загрузка и выдача результат в соответствии с логикой
4. caballero - 10 Декабря, 2011 - 11:06:47 - перейти к сообщению
Обычно принято чем писать что либо надо думать как это будет работать.
В данном случае две модные фичи - MVC, которое подходит для вэба как собаке пятое колесо , и шаблонизатор нафиг не нужный для PHP, который является шаблонизатором по своей природе.
Поэтому два варианта - либо костыли,которые потом лучше никому не показывать, либо переписать и то и другое чтобы оно сразу стыковалось.
5. sKaa - 10 Декабря, 2011 - 12:43:16 - перейти к сообщению
caballero, я вот, что заметил - У тебя какая-то неприязнь к MVC паттерну )))
6. caballero - 10 Декабря, 2011 - 15:50:49 - перейти к сообщению
Цитата:
я вот, что заметил - У тебя какая-то неприязнь к MVC паттерну


как и прочим дебильным решениям которое школота тупо лепит туда где оно не лепится, а потом закидывает форумы вопросами а как мне теперь тут сделать элементарную операцию.
7. sKaa - 10 Декабря, 2011 - 16:03:03 - перейти к сообщению
Ну так такие форумы и созданы для новичков чтоб они учились и получали советы. Если вы испытываете такую неприязнь, что к методам их работы, что к ним самим думаю вам стоит сменить этот форум на какой нибудь более профессиональный.
8. caballero - 10 Декабря, 2011 - 16:32:54 - перейти к сообщению
Цитата:
форумы и созданы для новичков чтоб они учились


Так в том и проблема что не хотят учиться. Именно учиться программировать учится решать практические задачи . Хотят слепить все по быстрому с готовых кубиков чтобы потом по быстрому слепить готовый говносайт и бабла срубить. Отсюда попытка заюзать MVC, щаблонизаторы, аякс, node.js и прочие якобы чудодейственные технологии которые позволят это сделать не шевеля мозгами и не работая руками.
Отсюда и посты на форумах типа - пишу свою соцсеть (Еба!) у меня проблемы с кодировкой или как метод класса написать.

Лично я всегда помогаю советом если видно что человек старается что то понять. Но некоторые даже сформулировать вопрос нормально не удосужатся так чтобы гугл понял. Даже на форумах бывает по три раза переспрашиваю и переуточняю что ж он бедолага сказать то хочет. А он программировать берется для тупого компа с процом который переспрашивать не умеет.
9. sKaa - 10 Декабря, 2011 - 17:05:44 - перейти к сообщению
caballero пишет:
Но некоторые даже сформулировать вопрос нормально не удосужатся так чтобы гугл понял
Не, ну таких я тоже стараюсь игнорировать если вопросы смех не вызывают ))

Но я просто по своему не большому опыту могу сказать, что я тоже когда впервые увидел пхп знания о программировании у меня были не дальше if, else, switch, while. Что такое классы, методы и прочее прочее я узнавал упорными попытками написать свою (соц сеть) - ну это образно, вещи были разные ). И такими упорными попытками говнокода, может знаешь такое чувство есть когда на следующий день всё переписать хочется потому что имхо гавно написал? Ну так вот такими попытками я отошел от процедурных стилей и потихоньку пришел к ООП. Начал читать хоть какие-то мануалы.
10. morph-x - 11 Декабря, 2011 - 16:02:52 - перейти к сообщению
caballero, ну ладно, я уже понял что MVC не для вэба... Ну как тогда насчет HMVC? Там вроде дела обстоят немного получше, или вам он тоже не нравится? Тогда хотя бы хуки/события должны подойти...?
(Добавление)

caballero пишет:
Но некоторые даже сформулировать вопрос нормально не удосужатся так чтобы гугл понял.

У меня все-таки получилось Улыбка .
11. caballero - 11 Декабря, 2011 - 16:24:11 - перейти к сообщению
Цитата:
Ну как тогда насчет HMVC

Дак это как раз MVC и есть. Просто в CI изначально MVC самый упрощенный -там нельзя нормально разделить сайт на модули в случае большого сайта (но зато гораздо проще если сайт небольшой). Поэтому разработали плюшку которая позволяет строить контроллеры и прочее в иерархию. У других фреймворков начиная с зенда это в коробке.

Цитата:
Тогда хотя бы хуки/события должны подойти.

Хуки еще хуже. Друпал - это пипец.
Поди догадайся что на некое событие в некоем месте стоит хук и чего то делает.
Но если говорить о компонентных событийно-ориентированых фреймворках где события и их обработчики вменяемым образом присутствуют в коде - то таки да это гораздо удобнее.
12. morph-x - 11 Декабря, 2011 - 16:27:40 - перейти к сообщению
caballero пишет:
Дак это как раз оно и есть.

Простите, что вы имели ввиду под словом "оно" ?
13. caballero - 11 Декабря, 2011 - 16:28:46 - перейти к сообщению
Оно - это MVC (исправил)
14. morph-x - 11 Декабря, 2011 - 16:37:49 - перейти к сообщению
caballero, значит вы HMVC тоже не любите (как и просто MVC)? Если да, то можете сказать почему? И еще интересно было бы узнать каким паттерном Вы пользуетесь? Или вы сами все продумываете, не используя паттерны проэктирования?
15. caballero - 11 Декабря, 2011 - 16:56:58 - перейти к сообщению
О неудобстве MVC паттерна например достаточно грамотно сказано в книге Котеровао PHP. Кроме того речь не о MVC вообще. Просто MVC - это архитектурный принцип для отделения мух от котлет. Для этого достаточно не смешивать в кучу PHP с HTML и SQL. Тут даже ООП не обязательно.
Паттерн MVC в стиле зенда и тех кто собезьянничал с него - это конкретная и весьма неудачная реализация идеи.

Цитата:
Или вы сами все продумываете, не используя паттерны проэктирования?

Ну синглетон например для работы с БД юзаю всегда. Остальное по случаю. Впрочем паттерны - это просто архитектурные приемы которые кто то собрал и дал им имена.
Разработчик с опытом применяет эти приемы даже не подозревая что это оказывается паттерн есть такой. Тот же синглетон я применил в Java первый раз еще до того как услышал вообще термин "паттерн проектирования".

 

Powered by ExBB FM 1.0 RC1