Помощник
Здравствуйте, гость ( Вход | Регистрация )
Помогите разобраться в цикле |
Flynt |
2013-09-07, 12:07
Сообщение
#1
|
|
Любитель Группа: Eleanor user Сообщений: 313 Регистрация: 2010-06-30 Репутация: нет Всего: нет |
Добрый день. Вообщем начал писать небольшие плюшки на PHP. Стараюсь писать по модели mvc, поэтому возникли небольшие проблемы с выводом обработаного цикла. Итак, суть проблемы, у меня есть контроллер в котором обрабатывается sql-запрос, все выодится как нужно, но мне необходимо выводить ключевые слова, тайтл страницы и т.д. к определенной странице. Так вот у меня есть папка template, где имеются файлы - основной шаблон(main.php), шаблон короткой новости(short-news.php, который подключает вид). Дело в том, что я подключаю в body шаблоне этот обработанный цикл, а доступа к изменению head не имею, так вот как лучше реализовать данный способ, чтобы можно было подключать другие ключи массива именно в head?
|
|
|
||
wormen |
2013-09-07, 12:43
Сообщение
#2
|
|
Опытный Группа: Eleanor user Сообщений: 800 Регистрация: 2012-09-13 Репутация: нет Всего: нет |
было бы неплохо, если бы еще тут свой код написали, а то представлять его я думаю нету ни у кого желания
|
|
|
||
Flynt |
2013-09-07, 13:49
Сообщение
#3
|
|
Любитель Группа: Eleanor user Сообщений: 313 Регистрация: 2010-06-30 Репутация: нет Всего: нет |
За код сильно не ругать, только учусь.
Файл mnews.php(модель)
Файл cnews.php(контроллер)
Файл vnews.php(вид)
Файл main.php
Файл shortnews.php
|
|
|
||
termit |
2013-09-07, 14:45
Сообщение
#4
|
|
Опытный Группа: Бета-тестеры Сообщений: 705 Регистрация: 2009-06-02 Из: Житомир Репутация: нет Всего: 11 |
Немного посидел. порефакторил пока не надоело...
контроллер не до конца досотрел. заметьте, у вас два цыкла, и два ифа. плохо. html должен быть в шаблонах, попытайтесь избавится от него.
Добавлено через 7 минут, 20 секунд: Ещё, по поводу модели. Сделайте две функции, гетОднуНовость и гетНовости, урл проверяйте в контроллере, и вызывайте нужный метод модели |
|
|
||
termit |
2013-09-07, 15:07
Сообщение
#5
|
|
Опытный Группа: Бета-тестеры Сообщений: 705 Регистрация: 2009-06-02 Из: Житомир Репутация: нет Всего: 11 |
Дочитал до конца код.
У вас не MVC, А уж извините жопа. Вид должен быть конечной точкой а не стартовой как у вас. Для начала прочитайте про единую точку входа. потом вот это Метт Зандстра, PHP. Объекты, шаблоны и методики программирования - она у меня вместо библии, хотя несомненно есть спорные вопросы с автором. |
|
|
||
termit |
2013-09-07, 15:20
Сообщение
#6
|
|
Опытный Группа: Бета-тестеры Сообщений: 705 Регистрация: 2009-06-02 Из: Житомир Репутация: нет Всего: 11 |
Ещё, примерная схема мвс приложения должна быть следующая (может отличатся немного взависимости от религии програмиста)
1. Единая точка входа. (index.php) 2. Аутолоад 3. Роутер класс (основной (абстрактный) контроллер) - смотрит урл, и вызывает соответствующий чаилд контроллер или 404 ошибку 4. Чаилд контроллер (контроллер конкретного модуля) - достает даные с модели (своей или с абстрактной) чтото делает - передаёт результат в абстрактный класс темплейт, 5. абстрактный класс темплейт собирает куски даных для разных блоков, которые выполнились ранее, сетит им темлейты, генерирует общий хтмл. выводит его. |
|
|
||
wormen |
2013-09-07, 15:30
Сообщение
#7
|
|
Опытный Группа: Eleanor user Сообщений: 800 Регистрация: 2012-09-13 Репутация: нет Всего: нет |
Flyn, я так понимаю что Вы хотите научиться писать модули для Eleanor?
|
|
|
||
Flynt |
2013-09-07, 16:45
Сообщение
#8
|
|
Любитель Группа: Eleanor user Сообщений: 313 Регистрация: 2010-06-30 Репутация: нет Всего: нет |
wormen, есть такое. Но сначала хочу помучать себя написанием простой цмски для блога.
termit, спасибо Вам, что не пожалели своего времени и разобрали мой код по крупицам, а также дали дельные советы. Хотелось бы также услышать советы от Александра, о том как реализовать такой вывод, который я описал. |
|
|
||
termit |
2013-09-08, 16:32
Сообщение
#9
|
|
Опытный Группа: Бета-тестеры Сообщений: 705 Регистрация: 2009-06-02 Из: Житомир Репутация: нет Всего: 11 |
Flynt, Я же писал, для того чтобы организовать такой вывод, вам нужно просто правильно сделать мвс. Котроллер->Модель->Вид
|
|
|
||
Djadka |
2013-09-10, 23:46
Сообщение
#10
|
|
Любитель Группа: Eleanor user Сообщений: 463 Регистрация: 2010-10-17 Репутация: нет Всего: нет |
Я конечно не говорю за Александра, но мвц как таковой в Элеаноре в чистом её виде мало, потому что Элеанора, скорее сервис ореонтированая цмс, чем мвц. В этом есть её прелесть и быстродействие.termit, весьма хорошо описал что не так. Любая мвц всегда подрузумевает три абстрактных класса модели, контроллера и представления. Шаблонизатор лучше какой нибудь подрубить уже, хотя можно конечно набрасать свой. Я то юзаю фраемворк Симфони и мне очень понравился Twig шаблонизатор, надо максимально избавляться от писание в шаблоне всякой логики.
Просто пример автолоудера. Если будет пхп 5.4 можно сделать всё лямда функцией(анонимной функцией)
И чисто идеологический вопрос, почему стринги в двойных кавычках? Как я помню в пхп 5.2 если строка чуть длинее то это весьма влияло на производительность когда она парсилась, тут контактенация лучше вроде как Сообщение отредактировал Djadka - 2013-09-17, 21:38 |
|
|
||
termit |
2013-09-11, 21:06
Сообщение
#11
|
|
Опытный Группа: Бета-тестеры Сообщений: 705 Регистрация: 2009-06-02 Из: Житомир Репутация: нет Всего: 11 |
Мне например больше нравится HMVC, и зендовский подход к "нейспейсам" + аутолоад.
Djadka, А за новость про анонимную функцию, спасибо, её прям в spl функции юзать можно, или в магическом методе тоже? |
|
|
||
Djadka |
2013-09-17, 21:39
Сообщение
#12
|
|
Любитель Группа: Eleanor user Сообщений: 463 Регистрация: 2010-10-17 Репутация: нет Всего: нет |
Намеспайсы вообще тема, потому что когда юзаешь куча готовых классов в случае как с Симфони и плюс ещё название классов пересекаются то намеспайсы спасают, HMVC нынче почти в каждом фраемворки есть, можно и самому накатать всё зависит как ты пишешь и какой у тебя толщины контроллер, но всё равно модель должна быть соответсвующий и тут лучше юзать Doctrine. Да если пхп 5.4 то вроде как можно сразу пихать или с 5.3, точно не помню, а то сегодня я уже перешёл на пхп 5.5 как на впс так и на компах. Надо будет потестить производительность.
|
|
|
||
termit |
2013-09-20, 8:42
Сообщение
#13
|
|
Опытный Группа: Бета-тестеры Сообщений: 705 Регистрация: 2009-06-02 Из: Житомир Репутация: нет Всего: 11 |
О, мсье знает толк =)
По поводу пхп5.5, Вы компилировали или гдето нарыле репозитарий с ним? (очень хочется yield попробывать) Если компилировали, то поделитесь плиз мануалом, или строкой конфигурации (.. ./configure .....) А то я на работе пытался завести, теперь у меня в консоле 5.5 (без модулей) под апачем 5.4.9. Как cgi не вариант. Также интересует один вопрос по поводу json. насколько я понял что то сделали с json_encode и json_decode. Изменили внутрений механиз или же заменили функции, и если да, то остадись ли они как deprecated? |
|
|
||
Djadka |
2013-09-21, 20:38
Сообщение
#14
|
|
Любитель Группа: Eleanor user Сообщений: 463 Регистрация: 2010-10-17 Репутация: нет Всего: нет |
Сам сижу на Убунте 13.04. По первости комплил отдельно а сейчас подсоединил через ппа https://launchpad.net/~ondrej/+archive/php5 от этого человечка, кстати на Debiane тоже катит. Но сразу предупреждаю, если обновляете со стондартного репозитория будьте готовы переписавать апач конфиги, ибо он обновляет апач сразу на 2.4. Версия апача 5.4.9 вообще существует?! По поводу json не знаю официальные доки нечего не говорят об изменения в сторону устаревших.
По поводу тестов памяти жрёт в 4 раза меньше чем 5.3. Я элю запустил решил протестить. |
|
|
||
termit |
2013-09-22, 1:53
Сообщение
#15
|
|
Опытный Группа: Бета-тестеры Сообщений: 705 Регистрация: 2009-06-02 Из: Житомир Репутация: нет Всего: 11 |
извини, тире пропустил =))
А за инфу спасибо. Конфиги вируальных хостов заменяются или остаются? А то у меня там много чего за год понасобиралось, жаль потом терять время на перенастройку. |
|
|
||
Djadka |
2013-09-22, 15:21
Сообщение
#16
|
|
Любитель Группа: Eleanor user Сообщений: 463 Регистрация: 2010-10-17 Репутация: нет Всего: нет |
Если убунту или дебиан, то уже через a2ensite не покатит создать симлинки, надо всё будет клепать уже sites-enabled если много сайтов то не советую. а то потом пол вечера отсидеть перписывать все конфиги у них там команды ещё поменялись, если только не написать какой баш скриптик который найдёт всё и поменяет. Конечно если вы сидите через гуи то можно просто через какой редактор сделать быстро. В моё случае хосто было не много но стоял ещё редмайн, который требует рубивский модуль passenger вот с ним я помучился, что бы его нормально скомпилить для apache 2.4.6 а так почти всё гладко прошлё. Только времени заняло много, модули уже почти все есть, и вроде всё очень хорошо совместимо с 5.5 пхп |
|
|
||
Гость_fifanutri_* |
2015-01-20, 13:37
Сообщение
#17
|
|
Гости |
|
|
|
||
Текстовая версия | 0.0377 сек. 12 запросов GZIP включен Сейчас: 2024-09-25, 12:26 |