Шаблон приложения

Обсуждаем разработку фреймворка: дизайн компонентов, API, пакеты
Ответить

Что делать с шаблоном приложения?

Идея с четыремя пакетами хорошая
5
23%
Давайте проще
16
73%
Не знаю
1
5%
 
Всего голосов: 22

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Шаблон приложения

Сообщение samdark » 2019.10.08, 00:42

Изначально когда hiqsol придумывал структуру шаблона приложений, он решил собирать её из нескольких пакетов:

- https://github.com/yiisoft/yii-project-template сам шаблон.
- https://github.com/yiisoft/yii-base-web база для web.
- https://github.com/yiisoft/yii-base-api база для API.
- https://github.com/yiisoft/yii-base-cli база для консоли.

// на код можно не смотреть, он устарел

yii-project-template играет ту же роль, что basic или advanced в Yii 2. То есть предназначен для старта проекта. Как только проект начат, шаблон стал проектом и целиком принадлежит вам.

Разница с Yii 2 в остальных пакетах. Они являются зависимостями yii-project-template и не принадлежат разработчику. То есть:

1. Можно их обновить.
2. Они могут предоставлять умолчания.

Несмотря на то, что идея довольно интересна, она, похоже, ещё и довольно сильно путает:

- https://github.com/yiisoft/yii-base-web/issues/53
- https://github.com/yiisoft/yii-project- ... /issues/35

Поэтому подумываю от этих пакетов избавиться и сделать попроще, примено как в https://github.com/yiisoft/yii-demo

Что думаете?

pchapl
Сообщения: 1
Зарегистрирован: 2019.09.25, 08:22

Re: Шаблон приложения

Сообщение pchapl » 2019.10.08, 06:13

Мне кажется, что лучшим вариантом для старта проекта был бы шаблон с генератором кода.

Допустим, устанавливаешь yii-project-template. В нём только базовая структура, без БД, контроллеров и прочего. А далее консольными командами можно добавить всё, что нужно:

Код: Выделить всё

./vendor/bin/yii add:db
./vendor/bin/yii add:api
./vendor/bin/yii add:auth
Команды добавляют свои конфиги, сервисы, зависимости.
Соответственно, можно запускать проект без лишних зависимостей и без мусора в коде, как это бывает с некоторыми проектами на базе yii2-app-advanced.
И если ближе к исходному вопросу, то это вариант с одним пакетом, но с возможностью некоторой кастомизации.

yiiliveext
Сообщения: 478
Зарегистрирован: 2019.08.13, 01:49

Re: Шаблон приложения

Сообщение yiiliveext » 2019.10.08, 09:48

samdark писал(а):
2019.10.08, 00:42
yii-project-template играет ту же роль, что basic или advanced в Yii 2. То есть предназначен для старта проекта. Как только проект начат, шаблон стал проектом и целиком принадлежит вам.
Разница с Yii 2 в остальных пакетах. Они являются зависимостями yii-project-template и не принадлежат разработчику. То есть:
1. Можно их обновить.
2. Они могут предоставлять умолчания.
Несмотря на то, что идея довольно интересна, она, похоже, ещё и довольно сильно путает:
Поэтому подумываю от этих пакетов избавиться и сделать попроще, примено как в https://github.com/yiisoft/yii-demo
Что думаете?
Оставьте шаблон yii-project-template и сделайте отдельно вроде yii-demo.
Вынесение кода в компоузер-пакеты - отличная идея. Сам когда-то пришел к этому на yii2, хоть и реализовал это немного по-другому, чем hiqsol. А путаница от того, чти вы кинули кодом в разработчиков, не объяснив как с этим работать. Да, что-то на хабре hiqsol писал, что еще где-то видел, но это не то. Опять же, даже в этом посте вы преподносите yii-base-web, как исключительную собственность разработчиков фреймворка, не указывая на возможность использования этого пакета, как основы для построения собственного шаблона. Достаточно потратить полчаса, чтобы написать пяток шагов workflow и пяток-десяток предложений, описывающих суть подхода и его преимущества, и все вопросы будут сняты к вящей радости разработчиков.

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Шаблон приложения

Сообщение samdark » 2019.10.08, 12:12

Оставьте шаблон yii-project-template и сделайте отдельно вроде yii-demo.
А потом всё это поддерживать? Вопрос "что лучше" по поводу basic/advanced реально замучал...
Достаточно потратить полчаса, чтобы написать пяток шагов workflow и пяток-десяток предложений, описывающих суть подхода и его преимущества, и все вопросы будут сняты к вящей радости разработчиков.
Вероятно, я сам не понимаю в чём профит данного подхода...

yiiliveext
Сообщения: 478
Зарегистрирован: 2019.08.13, 01:49

Re: Шаблон приложения

Сообщение yiiliveext » 2019.10.08, 12:17

samdark писал(а):
2019.10.08, 12:12
Вероятно, я сам не понимаю в чём профит данного подхода...
Если есть желание, могу отписать в лс как бы я описал этот подход, работу с ним и его преимущества, а вы уже сами решите, нужно это или нет.

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Шаблон приложения

Сообщение samdark » 2019.10.08, 17:02

Есть. Пишите.

jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Шаблон приложения

Сообщение jakiro » 2019.10.10, 14:41

yii-project-template играет ту же роль, что basic или advanced в Yii 2. То есть предназначен для старта проекта. Как только проект начат, шаблон стал проектом и целиком принадлежит вам.
Т.е. создавать frontend, backend приложения теперь ручками? Как мне на практике показалось очень клевой идеей разделение админки и фронтеда, независимо друг от друга.

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Шаблон приложения

Сообщение samdark » 2019.10.10, 15:53

Пока не ясно, но вообще multi-tier шаблон хоть и понравился многим, нам доставил прилично проблем.

mj4444
Сообщения: 39
Зарегистрирован: 2015.06.08, 19:56

Re: Шаблон приложения

Сообщение mj4444 » 2019.10.31, 05:17

Было бы здорово, если бы был пустой шаблон с возможностью добавлять web, api, console функционал для продвинутых пользователей и простой готовый написанный демо сайт с кучей готовых примеров и паттернов.
Мне Yii3 видится намного более сложным чем Yii2, в связи с этим надо максимально облегчить процесс входа готовыми примерами. Сейчас многое не понятно даже профессионалу, а про новичков вообще молчу.

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Шаблон приложения

Сообщение samdark » 2019.10.31, 11:18

Примерно так и планируется: почти пустой базовый шаблон + приложение-демо (скорее всего возродим блог из Yii 1).

shirase55
Сообщения: 1
Зарегистрирован: 2019.10.31, 11:45

Re: Шаблон приложения

Сообщение shirase55 » 2019.10.31, 12:06

Голосую за один базовый шаблон + полноценное демо (с фронт частью, админкой, console и api). Каждый сможет сделать свой шаблон на основе демо приложения. В итоге появятся хорошие шаблоны для старта различных проектов (простых сайтов, интернет магазинов, crm и пр.)

uEhlO4a
Сообщения: 67
Зарегистрирован: 2017.08.12, 19:19

Re: Шаблон приложения

Сообщение uEhlO4a » 2019.10.31, 17:30

4 шаблона чтобы собрать 1 шаблон.. это трэш.

как по мне это должно работать

1. я набираю composer create-project yiiX-skeleton
2. я получаю готовый проект с передом, задом, консолью (composer install уже отработал)
3. я запускаю yii serve
4. я вижу приложение на localhost:8080 с пустой страницей с ссылками на доки
5. я нажимаю доки, читаю.. и я уже про

1. я набираю composer create-project yiiX-demo
2. я получаю готовый проект с передом, задом, консолью, какой-то функционал с базой вроде sqlite3 и возможно rbac (composer install уже отработал, db init уже отработал)
3. я запускаю yii serve
4. я вижу приложение на localhost:8080 с работающим функционалом, с ссылками на доки
5. я вижу имитацию админки на 1-2 формы
6. я нажимаю доки, читаю.. и я уже про


спасибо

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Шаблон приложения

Сообщение samdark » 2019.11.02, 01:41

Именно так и планируется. В ближайшее время сделаю часть.

Аватара пользователя
proctoleha
Сообщения: 276
Зарегистрирован: 2016.07.10, 19:00

Re: Шаблон приложения

Сообщение proctoleha » 2019.11.02, 11:32

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

Все важные настройки у нас в файле .env, и разворачивая проект на local, dev, prod, мы в одном месте прописываем глобальные константы, подключение к БД, и др. важные вещи.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Шаблон приложения

Сообщение samdark » 2019.11.02, 12:44

Что мешает с ними работать?
Все важные настройки у нас в файле .env, и разворачивая проект на local, dev, prod, мы в одном месте прописываем глобальные константы, подключение к БД, и др. важные вещи.
В смысле у вас в продакшне читается из .env? В документации явно не рекомендуется ведь это делать...

Аватара пользователя
proctoleha
Сообщения: 276
Зарегистрирован: 2016.07.10, 19:00

Re: Шаблон приложения

Сообщение proctoleha » 2019.11.03, 07:21

В смысле у вас в продакшне читается из .env? В документации явно не рекомендуется ведь это делать...
Странно, дайте, пожалуйста пруф, или объясните на пальцах почему это плохо.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки

uEhlO4a
Сообщения: 67
Зарегистрирован: 2017.08.12, 19:19

Re: Шаблон приложения

Сообщение uEhlO4a » 2019.11.03, 07:59

proctoleha
как понимаю проблема для тебя в одной зависимости https://github.com/vlucas/phpdotenv , хотя я хз как оно работает с https://github.com/hiqdev/composer-config-plugin

насчет где хранить - согласно https://www.12factor.net/config - где угодно, только не в репозитории. хотя в принципе можно если шифровать, например https://github.com/beyondcode/laravel-credentials

п.с.
мне тоже интересно, согласно чему/кому нельзя хранить в .env

Аватара пользователя
proctoleha
Сообщения: 276
Зарегистрирован: 2016.07.10, 19:00

Re: Шаблон приложения

Сообщение proctoleha » 2019.11.03, 11:03

uEhlO4a писал(а):
2019.11.03, 07:59
proctoleha
как понимаю проблема для тебя в одной зависимости
п.с.
мне тоже интересно, согласно чему/кому нельзя хранить в .env
Да вообще нет никаких проблем. Была поначалу фигня, что если запустить phpdotenv в лоб, то в логи писалось всё, в том числе пароли (т.е. конфиденциальные данные).

А так вот 100% рабочий боевой пример index.php для Yii2

Код: Выделить всё

$path = dirname(__DIR__);
require $path . '/vendor/autoload.php';

use Dotenv\Environment\DotenvFactory;
use Dotenv\Environment\Adapter\EnvConstAdapter as Adapter;
use Dotenv\Dotenv;

(Dotenv::create($path, null, new DotenvFactory([new Adapter()])))->load();

defined('YII_DEBUG') or define('YII_DEBUG', $_ENV['YII_DEBUG']);
defined('YII_ENV') or define('YII_ENV', $_ENV['YII_ENV']);

require $path . '/vendor/yiisoft/yii2/Yii.php';
$config = require $path . '/config/web.php';
(new yii\web\Application($config))->run();
Файл .env разный в local, dev, production окружениях, он под игнором, и мне не надо игнорить файлы index.php (разные константы для разных окружений), db.php и т.д.

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

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Шаблон приложения

Сообщение samdark » 2019.11.03, 21:03

1. Не стоит хранить в репозитории. Я это имел ввиду.
2. До того, как dotenv захватил Graham Campbell из Laravel там было https://github.com/vlucas/phpdotenv/tre ... sage-notes. Но это так...
3. Не очень ясно, зачем вообще использовать dotenv если вы читаете не из окружения, а из файла. Получается 1 в 1 подход Yii 1.1 и Yii 2. То есть заигнорили локальный конфиг, записали в него настройки. Смёржили с основным. Проще и удобней не использовать при этом лишнюю прослойку.

В Yii 3 используется composer config plugin в шаблоне приложения по умолчанию, он умеет работать с переменными окружения. Смотрите в его readme: https://github.com/hiqdev/composer-config-plugin

Ответить