Отсюда начиналось.Было тут.К сожалению он покинул спор по понятным причинам. Лучше сбежать, чем проиграть.
Преклонимся перед японской мудростью.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Поставить нельзя, я так не люблю ковыряться, когда пошшупать не могу. Поэтому попру по порядку и спрошу, чего мне не понятно.
Конфиги. В базовой вижу это:
'defaultLanguage' => 'ru',
А в следующей (cards.php) это:
return array(
'pages' => array(
'read' => array(
'fields' => array(
array(
'name' => 'name',
'size' => 50,
'label' => 'Заголовок',
),
Какая то неоднозначность. Вроде задел на мультиязычность и захардкоженная латиница. Как это будет реализовываться?
Еще один момент по конфиге. Роли (roles.php). На сколько я понимаю, наборы прав для разных мест забиваются жестко. Администрировать можно только на уровне php? И каждую новую сущность тоже добавлять руками? Странно как то это на фоне такого монструозного изделия...
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
https://bitbucket.org/cheevauva/examplecms/...p?at=examplecms Я бы использовал все интерфейсы для событий от
http://php.net/manual/en/class.splobserver.php
$model = $this->common->getModel();
$repository = $this->common->getRepository();
$repository->delete($model);
parent::execute();
Скажите в чем идея parent::execute() ?
Могли бы Вы сделать это подругому?(Если бы хотели улучшить.)
Идею ООП передали хорошо.
Пытался найти что-то ужастное,так и не вышло.Мелочи не брал в счет.
Вообще хорошо очень сделали.
Цитата (Oyeme @ 15.02.2015 - 01:58) |
Скажите в чем идея parent::execute() ? Могли бы Вы сделать это подругому?(Если бы хотели улучшить.) |
Да, это часть еще не отрефакторена. Планирую ее переделать.
Тогда мне придется увеличить количество сущностей(объктов), в текущей реализации я могу указать для нескольких событий один и тот же объект, но с разными методами, это довольно удобно для группировки функционала.
Цитата (Oyeme @ 15.02.2015 - 01:58) |
Идею ООП передали хорошо. Пытался найти что-то ужастное,так и не вышло.Мелочи не брал в счет.
Вообще хорошо очень сделали. |
Спасибо
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Цитата (twin @ 15.02.2015 - 01:13) |
Какая то неоднозначность. Вроде задел на мультиязычность и захардкоженная латиница. Как это будет реализовываться?
|
Система в стадии написания и рефакторинга. Да есть планы на мультиязычность, но пока это планы. Руки не доходят.
Цитата (twin @ 15.02.2015 - 01:13) |
Еще один момент по конфиге. Роли (roles.php). На сколько я понимаю, наборы прав для разных мест забиваются жестко. Администрировать можно только на уровне php? И каждую новую сущность тоже добавлять руками? Странно как то это на фоне такого монструозного изделия... |
да, каждую сющность нужно добавлять. Но! Для этого конфигурационного файла можно добавить модуль в систему где можно будет настраивать права для сущностей. А паттерн Query object позволит без проблем инкапсулировать работу с конфигом.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
SoMeOnE
15.02.2015 - 03:30
chee, практически везде отсутсвуют пхп доки. Вы ими не пользуютесь? Также неудобно.
Цитата (SoMeOnE @ 15.02.2015 - 03:30) |
chee, практически везде отсутсвуют пхп доки. Вы ими не пользуютесь? Также неудобно. |
я стараюсь использую доки, только для указания типов возращаемых значений и входящих параметров. Причина тут просто, большинство описаний доков это тавтология. Конечно бывают редкие исключения когда нужно взять и описать сложный метод, но это очень редкие исключения и лучше вообще их избегать.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
cheeТут прикол в том, что можно HTML доку сгенерировать на их основе. А там без описания не выйдет. И можно без тавтологии обойтись. Вариантов масса.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Ответ на это сообщение: phpforum.su/index.php?act=Print&client=printer&f=146&t=85218&limin=14&limit=1
Цитата (Arh @ 15.02.2015 - 04:21) |
Нашел папку module. А вот конфиги все в одной папке. А если у модулей совпадут названия файлов конфигурации? |
По существу, эти файлы в папкие config, должны собираться из установочных файлов модулей, так как у нас так себе CMSки, то я решил опустить некоторые механизмы, это сборка файлов, востановление базы данных по схеме.
Цитата (Arh @ 15.02.2015 - 04:21) |
Читаю код в голове "так, подключил bootstrap, это вроде такой css фреймворк, зачем он тут, а ладно, дальше, создал какой то объект, наверное типа ядро, чё то там сделал, че то там сделал, вывел в браузер, что произошло непонятно" |
bootstrap - это минимальная настройка точки входа. То что там создается в главном файле, так это точка входа, описание паттерна смотрите тут
http://design-pattern.ru/patterns/front-controller.htmlЦитата (Arh @ 15.02.2015 - 04:21) |
chee Что за vendor (продавец)? Почему он отдельно, да еще и в отдельной папке? Неужели автозагрузчик в системе нужен больше одного раза, почему его нельзя поместить в какой нибудь главный файл типа core.php или system.php или хотя бы в папку со всеми библиотеками? В CMS же должны быть какие то общие библиотеки чтобы не копипастить или это уже CMF? |
Автозагрузкой занимается Composer, рекомендую применить в своих проектах.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Цитата (twin @ 15.02.2015 - 10:49) |
Тут прикол в том, что можно HTML доку сгенерировать на их основе. |
Вы думаете я об этом не знаю? Доки в большинстве случаев генерировать не нужно, так как их тупо ни кто не смотрит. Правильное название методов, распределение обязаностей в коде, однозначный(не двусмысленный) API, если все это есть в коде, то зачем комментарии, у меня конечно, не все идеально, но я стремлюсь к этому. А в плане изучения системы, обычно пишут "быстрый старт", "бест практикс".
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
bestxp
15.02.2015 - 22:12
Замени PSR-0 на PSR-4 в загрузчике, от PSR-0 уже собираются отказаться в пользу 4ки
там разница в том что не нужны всякие src/ lib/ и тд
bestxp, создал задачу, как-нибудь запилю
https://bitbucket.org/cheevauva/examplecms/issue/1/psr-4
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
https://bitbucket.org/cheevauva/examplecms/...4faea2470fb06d61. ExampleCMS\Common
Отрефакторил ExampleCMS\Common, переименовал его в ExampleCMS\Context, так как предназначен для получения объектов из текущего запроса.
Раньше он также выполнял роль глобальной фабрики, поэтому его приходилось инжектировать практически в каждый объект системы, ну то есть этакий "божественный объект". Я решил раздилить его функции на фабрики, а ему оставить только функции получение объектов для текущего запроса.
Сейчас ExampleCMS\Context выглядит так
https://bitbucket.org/cheevauva/examplecms/...CMS/Context.php , наньше выглядел так
https://bitbucket.org/cheevauva/examplecms/...eCMS/Common.php2. ExampleCMS\Applicaition
Отрефакторил ExampleCMS\Applicaition, выделив новый объект ExampleCMS\Container
Раньше ExampleCMS\Applicaition был контейнером для объектов в системе, а также через него прокидывался основной путь, ну и конечно он нес в себе функции FrontController'а. Естественно меня это тоже не устроило, в итоге функции контейнера я передал новому объекту ExampleCMS\Container, а функцию прокидывания основного пути передал ExampleCMS\Config. В итоге ExampleCMS\Applicaition выполняет сейчас только одну функцию вместо 3ех.
3. ExampleCMS\Module\Config\Model перенесен обратно в ExampleCMS\Config.
4. Решил не изобретать велосипед для шаблонизации, и подключил
http://platesphp.com/.
5. Метод получения авторизованого пользователя перенес в репозиторий Пользователй, ему там самое место.
6. Сделал проверку на права доступа к странице опциональной.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
volter9
19.02.2015 - 00:13
cheeА дамп можешь выложить? Без дампа не работает.
Есть еще один вопрос: а где контролеры/actions?
_____________
Мой блог
volter9, там все перестало работать с последнего рефакторинга, так что дамп не поможет. На неделе попробую востановить работу системы, до прежнего уровня.
Цитата (volter9 @ 19.02.2015 - 00:13) |
Есть еще один вопрос: а где контролеры/actions? |
Ну этот же легко узнать.
Идешь в ExampleCMS\Application::dispatch(), Там видишь context->getAction(), переходишь в ExampleCMS\Context::getAction, там видишь фабрику actionFactory, переходишь к её объявлению ExampleCMS\Module\Base\Factory\Action, а там смотришь откуда берутся экшены.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.