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 :: Версия для печати :: Каркас приложений DzSystem
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Каркас приложений DzSystem

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

1. Okula - 14 Февраля, 2013 - 10:33:16 - перейти к сообщению
Потихоньку разработываю свой каркас для приложений.
Можно использовать для новых скриптов. Каркас использует mod_rewrite для построения ссылок.
Ссылки можно задавать любой сложности.
Правила прописываются через именнованные регулярные выражения.
В дальнейшем возможен и другой метод. Пока нужна первичная оценка кода и архитектуры.
Ссылка на репозиторий: https://github[dot]com/Okula/dzsystem
2. digi - 14 Февраля, 2013 - 11:26:36 - перейти к сообщению
Улыбка

1) для автозагрузки лучше использовать composer, через него же и твиг подключать, а не держать в своей репе.

2) завершающий ?> ненужен.

3) имя test - лучше использовать для тестирования кода, а не в качестве примера.

4) в веб папке должен быть только один пхп скрипт - фронт контроллер

5) перед функциями нет смысла ставить \

6) код оформлен не в соответствии с PSR

7) понятие "модуль" у всех разное, по этому лучше сразу описать что у вас имеется ввиду ;)

8) url - должен браться из класса Request, которого кстати и нету ;)
3. DelphinPRO - 14 Февраля, 2013 - 11:35:56 - перейти к сообщению
Сейчас гляну как роутер устроен Улыбка
давно ищу для себя универсальный и простой вариант роутинга

мелочь, а неприятно Улыбка :
PHP:
скопировать код в буфер обмена
  1. $filename = __DIR__.'/../'.\str_replace('\\', '/', $class_name).'.php';

в качестве символа замены я бы использовал константу DIRECTORY_SEPARATOR. И раз уж путь относительный, то можно преобразовать его в абсолютный (realpath)
PHP:
скопировать код в буфер обмена
  1. $filename = __DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.\str_replace('\\', DIRECTORY_SEPARATOR, $class_name).'.php';

(Добавление)
DelphinPRO пишет:
Сейчас гляну как роутер устроен

ага, я к такому же варианту иду. Только базовые роуты подгружаю из xml файла (либо из сериализованного кэша), и мержу их с кастомными роутами модулей (модуль есть триада MVC в иерархии HMVC)
4. digi - 14 Февраля, 2013 - 12:04:30 - перейти к сообщению
DelphinPRO, какие у тебя требования к роутеру?
5. Okula - 14 Февраля, 2013 - 12:07:26 - перейти к сообщению
digi, отвечаю на все пункты:
1) раньше как-то не сталкивался с этим инструментом. Возьму на заметку.
2) это уже привычкой стало Улыбка
3 и 4) в принцепе папку /test/include можно вынести выше корня и переименовать папку test в www например. Нужно будет только путь до автозагрузчиков прописать в config.php.
5) согласен, просто хотел показать что внешняя функция. Так сказать придать коду ещё более понятный вид.
6) вообще не слышал об этом стандарте. Пишу в том стандарте который мне диктует IDE NetBeans, он вполне удобен. Код хорошо читаем.
7) Понятие модуль я представляю так: имеется сайт на котором установлены новости, гостевая книга, форум, доска объявлений и т.д. Вот эти сервисы и являются модулями. Например, модуль новостей, модуль гостевой книги, модуль форум и т.д.
8) Да, такого класса у меня нет. Все манипуляции с url происходят в классе /lib/DzSystem/Controller.php
6. digi - 14 Февраля, 2013 - 12:14:28 - перейти к сообщению
Okula, а вот это что за "модули"? https://github[dot]com/Okula/dzsyste[dot][dot][dot]DzSystem/Modules
7. DelphinPRO - 14 Февраля, 2013 - 12:15:44 - перейти к сообщению
digi пишет:
какие у тебя требования к роутеру?

самые простые Улыбка
возможность задать абсолютно любой роут
наглядность (поэтому xml выбрал для хранения)
расширяемость. тут я имею ввиду, что любой контроллер может добавить свои правила.
главное - максимальная простота Улыбка
8. digi - 14 Февраля, 2013 - 12:17:47 - перейти к сообщению
DelphinPRO, слишком абстракнтно описано...

1) наглядность выше в yaml

2) как именно "контроллеры" будут добавлять роуты?

можно примеры использования?
9. Okula - 14 Февраля, 2013 - 12:19:36 - перейти к сообщению
digi, это не модули, а абстрактные классы которые потом реализовываются в модулях.
Например: у каждого модуля есть свой класс Router, который унаследован от https://github[dot]com/Okula/dzsyste[dot][dot][dot]dules/Router.php
так же есть модели, которые унаследованы от https://github[dot]com/Okula/dzsyste[dot][dot][dot]odules/Model.php
10. Stierus - 14 Февраля, 2013 - 12:24:07 - перейти к сообщению
https://github[dot]com/mitallast/http-router простенький роутер
(Добавление)
digi, а в каком состоянии сейчас ваша цмс, основанная на второй симфони?
11. DelphinPRO - 14 Февраля, 2013 - 12:30:49 - перейти к сообщению
digi пишет:
наглядность выше в yaml
не имел дела с этим форматом. но исходя из страницы в вики - ваше утверждение спорно Улыбка
и вопрос: в php есть стандартные средства для работы с yaml?

digi пишет:
как именно "контроллеры" будут добавлять роуты?

хз Улыбка возможно xml-файлик в папке с модулем (что такое модуль в моем понимании - см. выше), возможно предопределенный метод, возвращающий набор роутов.

digi пишет:
можно примеры использования?

Нельзя. Их нет. Улыбка я пока только в раздумиях о реализации моего идеального роутера Улыбка
12. Okula - 14 Февраля, 2013 - 12:31:56 - перейти к сообщению
Изменил немного архитектуру
13. digi - 14 Февраля, 2013 - 12:32:44 - перейти к сообщению
Stierus, вот неделю как снова за неё взялся после большого перерыва %))) в общем-то близкое к зародышу состояние ;) надо многое продумать как лучше будет перенести на сф2 всю концепцию с учетом тх возможностей, которые предоставляет сам сф.
14. DelphinPRO - 14 Февраля, 2013 - 12:33:02 - перейти к сообщению
digi пишет:
а вот это что за "модули"? https://github.com/Okula/dzsystem/tree/master/lib/DzSystem/Modules
Okula пишет:
это не модули, а абстрактные классы

налицо когнитивный диссонанс Улыбка стоит пересмотреть именование наверное.
15. digi - 14 Февраля, 2013 - 12:36:46 - перейти к сообщению
DelphinPRO пишет:
и вопрос: в php есть стандартные средства для работы с yaml?


вот ямл: http://symfony[dot]com/doc/master/co[dot][dot][dot]ntroduction[dot]html

а также вот компонент роутига http://symfony[dot]com/doc/master/co[dot][dot][dot]ntroduction[dot]html умеет всё Улыбка работает ну очень быстро т.к. генерирует UrlMatcher в котоолм все маршруты скомпилены.

 

Powered by ExBB FM 1.0 RC1