Страница 1 из 2

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

Добавлено: 2019.10.08, 00:42
samdark
Изначально когда 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

Что думаете?

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

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

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

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

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

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

Добавлено: 2019.10.08, 09:48
yiiliveext
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 и пяток-десяток предложений, описывающих суть подхода и его преимущества, и все вопросы будут сняты к вящей радости разработчиков.

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

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

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

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

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

Добавлено: 2019.10.08, 17:02
samdark
Есть. Пишите.

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 2019.10.31, 17:30
uEhlO4a
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. я нажимаю доки, читаю.. и я уже про


спасибо

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

Добавлено: 2019.11.02, 01:41
samdark
Именно так и планируется. В ближайшее время сделаю часть.

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

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

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

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

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

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

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

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

Добавлено: 2019.11.03, 07:59
uEhlO4a
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

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

Добавлено: 2019.11.03, 11:03
proctoleha
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 этого нельзя?

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

Добавлено: 2019.11.03, 21:03
samdark
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

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

Добавлено: 2020.02.07, 16:17
Nex-Otaku
Разница только в синтаксисе. PHP против INI-стайла )

Может поэтому так всем и нравится?