[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вариант от chee
Страницы: 1, 2
chee
Отсюда начиналось.

Было тут.

К сожалению он покинул спор по понятным причинам. Лучше сбежать, чем проиграть.

Преклонимся перед японской мудростью.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Поставить нельзя, я так не люблю ковыряться, когда пошшупать не могу. Поэтому попру по порядку и спрошу, чего мне не понятно.

Конфиги. В базовой вижу это:
'defaultLanguage' => 'ru',

А в следующей (cards.php) это:
return array(
'pages' => array(
'read' => array(
'fields' => array(
array(
'name' => 'name',
'size' => 50,
'label' => 'Заголовок',
),
Какая то неоднозначность. Вроде задел на мультиязычность и захардкоженная латиница. Как это будет реализовываться?

Еще один момент по конфиге. Роли (roles.php). На сколько я понимаю, наборы прав для разных мест забиваются жестко. Администрировать можно только на уровне php? И каждую новую сущность тоже добавлять руками? Странно как то это на фоне такого монструозного изделия...

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Oyeme
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() ?
Могли бы Вы сделать это подругому?(Если бы хотели улучшить.)

Идею ООП передали хорошо.
Пытался найти что-то ужастное,так и не вышло.Мелочи не брал в счет.

Вообще хорошо очень сделали.
chee
Цитата (Oyeme @ 15.02.2015 - 01:58)
Скажите в чем идея parent::execute() ?
Могли бы Вы сделать это подругому?(Если бы хотели улучшить.)

Да, это часть еще не отрефакторена. Планирую ее переделать.

Цитата (Oyeme @ 15.02.2015 - 01:58)
Я бы использовал все интерфейсы для событий от http://php.net/manual/en/class.splobserver.php

Тогда мне придется увеличить количество сущностей(объктов), в текущей реализации я могу указать для нескольких событий один и тот же объект, но с разными методами, это довольно удобно для группировки функционала.

Цитата (Oyeme @ 15.02.2015 - 01:58)
Идею ООП передали хорошо.
Пытался найти что-то ужастное,так и не вышло.Мелочи не брал в счет.

Вообще хорошо очень сделали.

Спасибо smile.gif

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
Цитата (twin @ 15.02.2015 - 01:13)
Какая то неоднозначность. Вроде задел на мультиязычность и захардкоженная латиница. Как это будет реализовываться?

Система в стадии написания и рефакторинга. Да есть планы на мультиязычность, но пока это планы. Руки не доходят.

Цитата (twin @ 15.02.2015 - 01:13)

Еще один момент по конфиге. Роли (roles.php). На сколько я понимаю, наборы прав для разных мест забиваются жестко. Администрировать можно только на уровне php? И каждую новую сущность тоже добавлять руками? Странно как то это на фоне такого монструозного изделия...

да, каждую сющность нужно добавлять. Но! Для этого конфигурационного файла можно добавить модуль в систему где можно будет настраивать права для сущностей. А паттерн Query object позволит без проблем инкапсулировать работу с конфигом.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
SoMeOnE
chee, практически везде отсутсвуют пхп доки. Вы ими не пользуютесь? Также неудобно.
chee
Цитата (SoMeOnE @ 15.02.2015 - 03:30)
chee, практически везде отсутсвуют пхп доки. Вы ими не пользуютесь? Также неудобно.

я стараюсь использую доки, только для указания типов возращаемых значений и входящих параметров. Причина тут просто, большинство описаний доков это тавтология. Конечно бывают редкие исключения когда нужно взять и описать сложный метод, но это очень редкие исключения и лучше вообще их избегать.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
chee
Тут прикол в том, что можно HTML доку сгенерировать на их основе. А там без описания не выйдет. И можно без тавтологии обойтись. Вариантов масса.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
Ответ на это сообщение: 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, рекомендую применить в своих проектах.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
Цитата (twin @ 15.02.2015 - 10:49)
Тут прикол в том, что можно HTML доку сгенерировать на их основе.

Вы думаете я об этом не знаю? Доки в большинстве случаев генерировать не нужно, так как их тупо ни кто не смотрит. Правильное название методов, распределение обязаностей в коде, однозначный(не двусмысленный) API, если все это есть в коде, то зачем комментарии, у меня конечно, не все идеально, но я стремлюсь к этому. А в плане изучения системы, обычно пишут "быстрый старт", "бест практикс".

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
bestxp
Замени PSR-0 на PSR-4 в загрузчике, от PSR-0 уже собираются отказаться в пользу 4ки
там разница в том что не нужны всякие src/ lib/ и тд
chee
bestxp, создал задачу, как-нибудь запилю https://bitbucket.org/cheevauva/examplecms/issue/1/psr-4

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
https://bitbucket.org/cheevauva/examplecms/...4faea2470fb06d6

1. ExampleCMS\Common
Отрефакторил ExampleCMS\Common, переименовал его в ExampleCMS\Context, так как предназначен для получения объектов из текущего запроса.

Раньше он также выполнял роль глобальной фабрики, поэтому его приходилось инжектировать практически в каждый объект системы, ну то есть этакий "божественный объект". Я решил раздилить его функции на фабрики, а ему оставить только функции получение объектов для текущего запроса.

Сейчас ExampleCMS\Context выглядит так https://bitbucket.org/cheevauva/examplecms/...CMS/Context.php , наньше выглядел так https://bitbucket.org/cheevauva/examplecms/...eCMS/Common.php

2. 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
chee
А дамп можешь выложить? Без дампа не работает.
Есть еще один вопрос: а где контролеры/actions?

_____________
Мой блог
chee
volter9, там все перестало работать с последнего рефакторинга, так что дамп не поможет. На неделе попробую востановить работу системы, до прежнего уровня.


Цитата (volter9 @ 19.02.2015 - 00:13)
Есть еще один вопрос: а где контролеры/actions?

Ну этот же легко узнать.
Идешь в ExampleCMS\Application::dispatch(), Там видишь context->getAction(), переходишь в ExampleCMS\Context::getAction, там видишь фабрику actionFactory, переходишь к её объявлению ExampleCMS\Module\Base\Factory\Action, а там смотришь откуда берутся экшены.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.