[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обсуждение концепции
Страницы: 1, 2, 3
twin
Тишина... Никто не откликнулся на инициативу Invis1ble:
Цитата (Invis1ble @ 3.10.2015 - 18:06)
Кстати, буду рад, если кто-то попробует объективно изложить недостатки других фреймворков исходя из личного опыта.

Значит получается, что нет у нас больше специалистов по фреймворкам? В холиварах были тысячи. smile.gif И не лень было, и время находилось. Неужели действительно так сильно мотивирует ЧСВ? Если нет спора, никто и общаться не хочет...

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

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

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

user posted image
twin
Закончил я со стратегий, все разделы заполнены, ждут критики и корректировок. smile.gif

Не поддался я на призывы начать кодить сломя голову, и это было очень правильно. Сам освежил в памяти, много узнал нового, систематизировал основополагающие принципы по подсказкам форумчан.

Теперь можно, опираясь на систематизированные принципы, наметить конкретные цели и задачи.

В срецификации пока планирую такие основные пункты описания будущего проекта. В процессе добавим ещё чео-нибудь:

1. Все компоненты полностью ориентированы на PHP 5 и E_STRICT- совместимы
2. Использует кодировку UTF-8
3. Высокая производительность
4. Использует парадигму MVC
5. Низкий порог вхождения
- - Многофункциональное, интуитивно понятное API
- - Простой синтаксис на грани нативного
- - Хорошо прокомментированный код
- - Обширная документация
6. Фреймворк дает свободу программисту, не создавая каких-либо структурных ограничений и конвенций
7. Встроенные средства отладки и профилирования
8. Очень легко расширяем
9. Поддержка интернационализации
10. Миграции базы данных
11. Автоматическое тестирование
12. Активное русскоязычное сообщество biggrin.gif


Кодогенератор пока не стал включать. Детский сад какой-то совсем. Компенсируем низким порогом вхождения.

ORM тоже не включил по другой причине. Я даже теоретически не представляю, как сделать полноценную ORM, да еще чтобы она не повлияла на ресурсоемкость и производительность. Быть может позже в виде библиотеки.

В виде либы так же и Active Record, но по своей причине. Этот функционал любим и востребован не всеми.

Всякие встроенные авторизации, аяксы, почтовые классы и прочие фантики тоже ввиде библиотек. Так как концепция гласит о минимальном ядре и неограниченном расширении.

DI в глобальном понимании пока не знаю, планирую глубокий анализ и инициирую отдельное обсуждение. На локальном уровне конечно будем юзать, но этого не стоит отражать в спецификации.

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

Ну и вот. Будут предложения?

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

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

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

user posted image
Oyeme
Цитата
4. Использует парадигму MVC


Почему именно MVC?


Цитата
В виде либы так же и Active Record, но по своей причине. Этот функционал любим и востребован не всеми.


А что тогда у Вас подразумеваем слово "model" ?

Цитата
Хорошо прокомментированный код


Вы забыли про аннотации.Это must have.

Цитата
DI в глобальном понимании пока не знаю, планирую глубокий анализ и инициирую отдельное обсуждение. На локальном уровне конечно будем юзать, но этого не стоит отражать в спецификации.


С этого и стоит начать.
twin
Цитата (Oyeme @ 5.10.2015 - 07:53)
Почему именно MVC?

Ну потому что нужен низкий порог вхождения. C MVC знакомо больше народу.
Цитата (Oyeme @ 5.10.2015 - 07:53)
А что тогда у Вас подразумеваем слово "model" ?
А причем тут AR? Модель, это бизнес-логика. Модель вообще может не использовать СУБД. Или не так?

Цитата (Oyeme @ 5.10.2015 - 07:53)
Вы забыли про аннотации.Это must have
Я не забыл. Пока еще не на что аннотацию писать. Или что имеется ввиду?


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

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

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

user posted image
Oyeme
Цитата
Ну потому что нужен низкий порог вхождения. C MVC знакомо больше народу.


Железная логика.Зачем что-то делать новое, ведь другие привыкли к старому.
Это самый старый подход в простроение арихитектуре.

Вы же хотите что-то новое изучить и применить?

Цитата
А причем тут AR? Модель, это бизнес-логика. Модель вообще может не использовать СУБД. Или не так?


Бизнес логика вообще должна быть в сервисах.Модель это лишь biding колонок таблиц и аттрибутов класса.Никакой бизнес логики в моделях не должно быть и никогда не было там.

Цитата
Я не забыл. Пока еще не на что аннотацию писать. Или что имеется ввиду?
Цитата
N.b.: Using only spaces, and not mixing spaces with tabs, helps to avoid problems with diffs, patches, history, and annotations. The use of spaces also makes it easy to insert fine-grained sub-indentation for inter-line alignment.
Цитата
6. Фреймворк дает свободу программисту, не создавая каких-либо структурных ограничений и конвенций


Он и никогда и не ограничивал.
Если у человека нет в рамок и правил - Хаос и анархия
twin
Цитата (Oyeme @ 5.10.2015 - 08:42)
Железная логика.Зачем что-то делать новое, ведь другие привыкли к старому.

Козьма Прутков сказывал - "нельзя объять необъятное". Из двух зол приходится выбирать лучшее. smile.gif
Раз у меня делается упор на обучение, априори необходим низкий порог вхождения. Это и пришлось отобразить в концепции.
Цитата (Oyeme @ 5.10.2015 - 08:42)
Вы же хотите что-то новое изучить и применить?

Да. Но не всё же. Вспомним Козьму. smile.gif Нам и этого хватит пока. Копать неперекопать.
Цитата (Oyeme @ 5.10.2015 - 08:42)
Бизнес логика вообще должна быть в сервисах.Модель это лишь biding колонок таблиц и аттрибутов класса.Никакой бизнес логики в моделях не должно быть и никогда не было там.
Можно где то почитать про это? Везде пишут, что модель, это логика. Вот из википедии:
Цитата
Но в объектно-ориентированном программировании используется активная модель MVC, где модель — это не только совокупность кода доступа к данным и СУБД, но и вся бизнес-логика.

Цитата (Oyeme @ 5.10.2015 - 08:42)
Он и никогда и не ограничивал.
Если у человека нет в рамок и правил - Хаос и анархия
Это я добросовестно списал с обзора фреймворков. smile.gif Очень понравилась формулировка. Пусть будет, как декларация. Оно не мешает. Как пишут на растительном масле у нас - без холестирина. А то, что холестирина в растительном масле не может быть по определению - пофиг. Но как то приятнее людям кушать. smile.gif

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

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

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

user posted image
chee
SugarCRM

Недостатки:

* Куча legacy кода
* Слабая ORM
* В раних версиях перемешивание слоев представления и логики

Плюсы:

* Система на основе использования матаданных, пока что единственный комерчески успешный пример, по-моему мнению;
* Не плохая архитектура, например частично реализована концепция ADR, точнее MVC но с очень большими сходствами с ADR;
* Очень хорошо расширяемая и модульная;

Проекты на 1-2 милиона рублей, позволяет развернуть за 4-6 месяцев, это где то свыше 30 модулей и кучей модулей с отчетами.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Цитата (Oyeme @ 5.10.2015 - 08:42)
N.b.: Using only spaces, and not mixing spaces with tabs, helps to avoid problems with diffs, patches, history, and annotations. The use of spaces also makes it easy to insert fine-grained sub-indentation for inter-line alignment.

А, это имеется ввиду на примерах? Сначала начал, но слишком большой листинг получился. С форума трудно воспринимать мне кажется. В проекте то конечно будет.

Про модель мысли. Я как то все думал, что модель (имеется ввиду активная), это понятие, а не файл вовсе. Что в модель входят и сервисы, и данные, и вся бизнесс-логика. По аналогии с реальным миром. Есть самолет, а есть его модель. У него винт крутится, он гудит, иногда даже летает. Действует. Так же и в приложении. Есть допустим калькулятор. Получили данные от контроллера, отправили в сервис, получили результат, отправили во вьюшку. Всё это модель калькулятора. Но тут нет базы данных и вообще данных нет. А бизнесс-логика есть.

Так а к какой части иначе отнести сервисы, хэлперы, компоненты, если у нас всего три буквы MVC?

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

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

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

user posted image
Oyeme
Цитата (twin @ 5.10.2015 - 10:04)
Цитата (Oyeme @ 5.10.2015 - 08:42)
N.b.: Using only spaces, and not mixing spaces with tabs, helps to avoid problems with diffs, patches, history, and annotations. The use of spaces also makes it easy to insert fine-grained sub-indentation for inter-line alignment.

А, это имеется ввиду на примерах? Сначала начал, но слишком большой листинг получился. С форума трудно воспринимать мне кажется. В проекте то конечно будет.

Про модель мысли. Я как то все думал, что модель (имеется ввиду активная), это понятие, а не файл вовсе. Что в модель входят и сервисы, и данные, и вся бизнесс-логика. По аналогии с реальным миром. Есть самолет, а есть его модель. У него винт крутится, он гудит, иногда даже летает. Действует. Так же и в приложении. Есть допустим калькулятор. Получили данные от контроллера, отправили в сервис, получили результат, отправили во вьюшку. Всё это модель калькулятора. Но тут нет базы данных и вообще данных нет. А бизнесс-логика есть.

Так а к какой части иначе отнести сервисы, хэлперы, компоненты, если у нас всего три буквы MVC?



Наверно мы просто по разному понимаем что значит "бизнес логика"
Если брать за основу обучную модель с аттрибутами и с доступами токо через сеттери и геттеры и применя паттерн active record.

Вы можете вносить "определенную логику" метода setDate(\DateTime $datae){..} например.
Или для методов save();


В моделе если Мы переопределем какие-то методы, то толко добовляя какуе-то общию логику.(Расширение)
 /**
* Get range start number
*
* Returned number isn`t of type integer because database
* can store BIGINT that overlaps possibilities of integer
* primitive type
*
*
@return string
*/

public function getRangeFromNumber() {
$prefix = (empty($this->prefix)) ? '' : $this->prefix;
$xCount = intval($this->length) - strlen($prefix);

return $prefix.str_repeat('0',$xCount);
}



Но это не будет считатся как бизнес логика.


Для примера

View - Controller -> Business Service - > Model

Когда контроллеры слишком стоновятся толстыми то и всю бизнесс логику как раз и пихают в бисзнесс серивсы например.

Для чего это делается?

Например: Вы сможие вызывать "серсивы" (один и тот же код ) как и для API , так и в Вашем сайте.

API -> Business Service
Website - > Controller -> Business Service

Вы делаете code base sharing между собой ;)

В противном случаеи API будет использовать дубликаты логики.


Пример


/**
* Update account
*
@param type $id
*
@param type $params
*
@return array
*/

public function update($id, $params = array ()) {
$id = $this->_parseId($id);
$model = $this->getService(self::DEFAULT_BUSINESS_SERVICE_NAME)
->
updateAccount($id, $params);
return $model->toArray();
}


Если же У Вас нет такой идеи как бизнес сервисы,то в этом случаи логика идет уже только в контроллеры ;)


Цитата
Так а к какой части иначе отнести сервисы, хэлперы, компоненты, если у нас всего три буквы MVC?


Используя же сервиси это уже идет не MVC а MVCS

MVCS - Model View Controller Service

View Layer: Your MVC framфework & code of choice
down vote
accepted
Service layer can be inerpreted a lot of ways, but it's usually where you have your core business processing logic, and sits below your MVC architecture, but above your data access architecture.

For example you layer of a complete system may look like this:

1.View Layer: Your MVC framework & code of choice
2.Service Layer: Your Controller will call this layer's objects to get or update Models, or other requests.
3.Data Access Objects: These are abstractions that your service layer will call to get/update the data it needs. This layer will generally either call a Database or some other system (eg: LDAP server, web service, or NoSql-type DB)
The service layer would then be responsible for:

Retreiving and creating your 'Model' from various data sources (or data access objects).
- Updating values across various repositories/resources.
- Performing application specific logic and manipulations, etc.
Быстрый ответ:

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