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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Каркас приложений DzSystem

 PHP.SU

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


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

> Без описания
Okula
Отправлено: 14 Февраля, 2013 - 10:33:16
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




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


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




Улыбка

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

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

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

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

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

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

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

8) url - должен браться из класса Request, которого кстати и нету ;)
 
 Top
DelphinPRO
Отправлено: 14 Февраля, 2013 - 11:35:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Сейчас гляну как роутер устроен Улыбка
давно ищу для себя универсальный и простой вариант роутинга

мелочь, а неприятно Улыбка :
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)


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
digi
Отправлено: 14 Февраля, 2013 - 12:04:30
Post Id


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




DelphinPRO, какие у тебя требования к роутеру?
 
 Top
Okula
Отправлено: 14 Февраля, 2013 - 12:07:26
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




digi, отвечаю на все пункты:
1) раньше как-то не сталкивался с этим инструментом. Возьму на заметку.
2) это уже привычкой стало Улыбка
3 и 4) в принцепе папку /test/include можно вынести выше корня и переименовать папку test в www например. Нужно будет только путь до автозагрузчиков прописать в config.php.
5) согласен, просто хотел показать что внешняя функция. Так сказать придать коду ещё более понятный вид.
6) вообще не слышал об этом стандарте. Пишу в том стандарте который мне диктует IDE NetBeans, он вполне удобен. Код хорошо читаем.
7) Понятие модуль я представляю так: имеется сайт на котором установлены новости, гостевая книга, форум, доска объявлений и т.д. Вот эти сервисы и являются модулями. Например, модуль новостей, модуль гостевой книги, модуль форум и т.д.
8) Да, такого класса у меня нет. Все манипуляции с url происходят в классе /lib/DzSystem/Controller.php
 
 Top
digi
Отправлено: 14 Февраля, 2013 - 12:14:28
Post Id


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




Okula, а вот это что за "модули"? https://github[dot]com/Okula/dzsyste[dot][dot][dot]DzSystem/Modules
 
 Top
DelphinPRO
Отправлено: 14 Февраля, 2013 - 12:15:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




digi пишет:
какие у тебя требования к роутеру?

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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
digi
Отправлено: 14 Февраля, 2013 - 12:17:47
Post Id


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




DelphinPRO, слишком абстракнтно описано...

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

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

можно примеры использования?
 
 Top
Okula
Отправлено: 14 Февраля, 2013 - 12:19:36
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




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
 
 Top
Stierus Супермодератор
Отправлено: 14 Февраля, 2013 - 12:24:07
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




https://github[dot]com/mitallast/http-router простенький роутер
(Добавление)
digi, а в каком состоянии сейчас ваша цмс, основанная на второй симфони?
 
My status
 Top
DelphinPRO
Отправлено: 14 Февраля, 2013 - 12:30:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




digi пишет:
наглядность выше в yaml
не имел дела с этим форматом. но исходя из страницы в вики - ваше утверждение спорно Улыбка
и вопрос: в php есть стандартные средства для работы с yaml?

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

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

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

Нельзя. Их нет. Улыбка я пока только в раздумиях о реализации моего идеального роутера Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Okula
Отправлено: 14 Февраля, 2013 - 12:31:56
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Изменил немного архитектуру
 
 Top
digi
Отправлено: 14 Февраля, 2013 - 12:32:44
Post Id


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




Stierus, вот неделю как снова за неё взялся после большого перерыва %))) в общем-то близкое к зародышу состояние ;) надо многое продумать как лучше будет перенести на сф2 всю концепцию с учетом тх возможностей, которые предоставляет сам сф.
 
 Top
DelphinPRO
Отправлено: 14 Февраля, 2013 - 12:33:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




digi пишет:
а вот это что за "модули"? https://github.com/Okula/dzsystem/tree/master/lib/DzSystem/Modules
Okula пишет:
это не модули, а абстрактные классы

налицо когнитивный диссонанс Улыбка стоит пересмотреть именование наверное.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
digi
Отправлено: 14 Февраля, 2013 - 12:36:46
Post Id


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




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 в котоолм все маршруты скомпилены.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB