ручная работа(без Composer)

Обсуждение документации второй версии фреймворка. Переводы Cookbook и авторские рецепты.
Аватара пользователя
r3verser
Сообщения: 195
Зарегистрирован: 2012.04.01, 17:29
Откуда: Киев

Re: ручная работа(без Composer)

Сообщение r3verser »

zelenin писал(а):
r3verser писал(а):
3ton писал(а): И только тогда он подключался и отрабатывал. И при этом никаких автолоадеров не запускалось до запроса этого расширения чтоб прописать его, он подгружался при непосредственном обращении к нему.
так а сейчас разве не также?
раньше были псевдонеймспейсы, совпадающие с файловым путем, и yii знал откуда грузить файл.
теперь же 2014 год на дворе и библиотеки могут лежать в разных местах (неймспейс не является отражением файлового пути).

именно для этого композер генерит маппинг всего, установленного через него, к файловой системе. И это не тратит память (спички), т.к. там статические массивы.
так это понятно
r3verser писал(а):раньше тоже был автолоадер, просто он был встроенный, и брал пути к файлам из конфига, а сейчас юзается автолоадер из композера он берет их из своего конфига.
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

Re: ручная работа(без Composer)

Сообщение chungachguk »

Придётся, видимо, компилировать файл yii2lite.php
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

Подчеркивая все вышесказанное резюмирую(поправьте если не прав):
использование компостера продиктовано спецификой работы с неймспейсами расширений, и удаление компостера вызовет необходимость замены его своим лоадером дабы восстановить функционал определения связи неймспейсов с путями расширений до обращения к ним.

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

Кстати остается вопрос наличия в папке вендор кучи других подпапок расширений (bower, bin, cebe ... ...)
Буду признателен если кто-то поделится их функционалом, и как следствие необходимостью их наличия в проекте.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

3ton писал(а):Подчеркивая все вышесказанное резюмирую(поправьте если не прав):
3ton писал(а):компостера

композера
3ton писал(а): Если так, то вопрос удаления(в данном случае вернее будет сказать замещение на свой велосипед) компостера становится неактуальным и нам нужно будет принимать решение в связи с этим фактом.
именно
3ton писал(а):Кстати остается вопрос наличия в папке вендор кучи других подпапок расширений (bower, bin, cebe ... ...)
Буду признателен если кто-то поделится их функционалом, и как следствие необходимостью их наличия в проекте.
в том числе для разрешения зависимостей композер и нужен. Иначе вам бы все пришлось в ручную доустанавливать, ловить ошибки, доустанавливать еще раз, пробовать версии итд. Композер все делает за вас. А в конце еще и сгенерит быстрый автолоадер.

Все, что в папке vendor, установилось не от балды, а в качестве зависимостей других проектов.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

имхо вам надо НАЧАТЬ изучать yii2, т.к. ваших знаний пока не хватает. То есть, скажем так, вы не в тренде разработки второй версии. Не знаете что там используется и для чего.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: ручная работа(без Composer)

Сообщение samdark »

Память на composer, bower, npm не тратится вообще. Это инструменты, которые просто скачивают один раз код. Заменитель скачай-распакуй-настрой.

Автозагрузка SPL-ем позволяет навалить хоть гигабайт файлов с классами. Память при этом потратится только на те, которые реально используются. В этом плане всё даже лучше, чем в 1.1. Работает быстрее потому как правила поиска файла по классу проще, скана файловой системы нет.

AR в Yii 2.0 кушает меньше, чем в 1.1.

По директориям:

bin — всякое запускаемое. Например, phpunit туда складывается.
ezyang — HTMLPurifier.
fzaninotto — faker. Для тестирования.
phpspec — для тестирования.
cebe — markdown.

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

Re: ручная работа(без Composer)

Сообщение samdark »

Мои статьи на тему «убираем всё лишнее из Yii 1.1» были написаны по просьбе человека, у которого был жутко медленный интернет и каждый мегабайт грузился на хостинг по FTP 30 минут. Какого-то ускорения именно работы фреймворка таким образом достичь не получится.
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

Sam Dark писал(а):Мои статьи на тему «убираем всё лишнее из Yii 1.1» ...
Если Вас не затруднит, укажите минимальный вид папки vendor который возможен (при том что тестирования на продакшене быть не должно, да и bower|cebe|и подобные если можно тоже исключить) и как этого добиться без ущемления основного функционала(имеется ввиду без дальнейшей необходимости доустанавливать чего-либо, доустанавливать будем только с помощью комозера)
А так же если сошлетесь на туториал установки расширения через композер из локального источника
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

3ton писал(а): А так же если сошлетесь на туториал установки расширения через композер из локального источника

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

    "repositories": [
        {
            "type": "vcs",
            "url": "путь до локального git-репозитория"
        }
    ]
 
остальное стандартно.
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

zelenin писал(а):

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

    "repositories": [
        {
            "type": "vcs",
            "url": "путь до локального git-репозитория"
        }
    ]
локально на продакшене должен быть установлен гит или работает с "просто папка с файлами"???
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

3ton писал(а):
zelenin писал(а):

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

    "repositories": [
        {
            "type": "vcs",
            "url": "путь до локального git-репозитория"
        }
    ]
 
локально на продакшене должен быть установлен гит или работает с "просто папка с файлами"???
не понял вопроса.
к вас должен быть везде установлен гит - и локально и на продакшне. Не просто папка с файлами, а гит-репозиторий.
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

zelenin писал(а):должен быть везде установлен гит - и локально и на продакшне
А если нет желания на продакшне гит поднимать, есть другие решения?
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: ручная работа(без Composer)

Сообщение mihail_dev »

я так понимаю вам либо лень либо не знаю что мешает вам поднять литературу и изучить! там ничего страшного нету всё на интуитивном уровне практически! я как ху... знаток инглиша и то без проблем разобрался хоть и потратил на это дня 2 или 3!
вы вроде технически подкованы видно по разговору и не первый год работаете! очень странно что вы тут такую панику и критику разводите!

https://getcomposer.org/doc/04-schema.md#repositories
https://getcomposer.org/doc/05-repositories.md#artifact - вот это может подойти

но честно сказать как вы будете работать с зависимостями хз! особенно с bower и nmp!

если так сложно вам на сервере работать с Composer то что вам мешает работать с ним локально и заливать на сервер готовый проект!!!
Изображение
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

3ton писал(а):
zelenin писал(а):должен быть везде установлен гит - и локально и на продакшне
А если нет желания на продакшне гит поднимать, есть другие решения?
я умываю руки. надоело.
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

mihail_dev писал(а): но честно сказать как вы будете работать с зависимостями хз! особенно с bower и nmp!

как раз никаких зависимостей использовать нам не нужно, у нас свои расширения, а вопросы как раз и касались необходимости использования всего что в папке vendor кроме yiisoft если у нас нет заимствованных расширений

Что касается "паники" - странная оценка вопросов по смене взаимодействия компонентов фреймворка

Что касается критики - ее тут вообще не было, была лишь констатация что изменилась схема работы с фремворком, тем более не зная аспектов чужого продукта - это заявление выглядит глупо, скорее даже как нападка ;)

У нас используется для каждого инстанса виртуальная машина в KVM инсталированная в минимальной комплектации, далее ставятся все необходимые пакеты для работы сервера, после вливается приложение. А теперь получается необходимо поставить на каждую git, composer, bower, cebe, nmp и куча всего что нам в принципе не нужно.

Мы привыкли исходить из того что инструменты выбираются под продукт, а не продукт является результатом выбора инструментов.
Последний раз редактировалось 3ton 2014.11.06, 15:14, всего редактировалось 1 раз.
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

zelenin писал(а): я умываю руки. надоело.
спасибо за общение, решение было подсказано
за что тоже спасибо
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: ручная работа(без Composer)

Сообщение mihail_dev »

если так то вам необходим буквально базовый набор

создайте папку yii
в неё скинте всё что тут https://github.com/yiisoft/yii2/tree/master/framework или https://github.com/yiisoft/yii2-framework

в конфиге добавить один алиас к папке для ваших расширений

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

<?php
Yii::setAlias('ext', dirname(__DIR__)."/ext/");
$params = require(__DIR__ . '/params.php');

$config = [
 ... 
в данной папке формировать все ваши коды например

допусти модул news
папка path/to/ext/news

фаил Module

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

namespace ext\news;

class Module extends \yii\base\Module{}
 
в конфиг фаиле

будет

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

        'news' => [
            'class' => 'ext\news\Module',
        ], 
если понадобятся какие-то сторонние пакеты надо просто дописать будет пути (по типу Yii::setAlias('some', dirname(__DIR__)."/some/");)
правда могут вылезти ошибки из за того что не встроены библиотеки
"ezyang/htmlpurifier": "4.6.*", - если не пользуетесь этим хелпером то и не нужно это вам
"cebe/markdown": "~1.0.0", - если не пользуетесь этим хелпером то и не нужно это вам
остальные если есть необходимость то прийдётся поиграться и встроить!
"bower-asset/jquery": "2.1.*@stable | 1.11.*@stable",
"bower-asset/jquery.inputmask": "3.1.*",
"bower-asset/punycode": "1.3.*",
"bower-asset/yii2-pjax": ">=2.0.1"
Изображение
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

mihail_dev писал(а):если так то вам необходим буквально базовый набор

создайте папку yii
в неё скинте всё что тут https://github.com/yiisoft/yii2/tree/master/framework или https://github.com/yiisoft/yii2-framework

в конфиге добавить один алиас к папке для ваших расширений

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

<?php
Yii::setAlias('ext', dirname(__DIR__)."/ext/");
$params = require(__DIR__ . '/params.php');

$config = [
 ... 
в данной папке формировать все ваши коды например

допусти модул news
папка path/to/ext/news

фаил Module

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

namespace ext\news;

class Module extends \yii\base\Module{}
 
в конфиг фаиле

будет

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

        'news' => [
            'class' => 'ext\news\Module',
        ], 
Спасибо, это очень похоже на решение, надо будет проверить чтоб все завелось, но за решение ОГРОМНОЕ СПАСИБО.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: ручная работа(без Composer)

Сообщение samdark »

https://github.com/samdark/yii2-minimal — это практически без «лишних» пакетов. Не забывайте, главное, добавлять --no-dev --prefer-dist к командам. Тогда пакеты для тестирования и разработки не будут вытягиваться и git-часть репозиториев тоже.

Если это сделать, получается приложение со всеми зависимостями в 7.4 мегабайта.

В vendor будет при этом:

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

composer\ — маппинг классов.
bin\ — бинарники для глобальной консольки Yii и конвертера markdown.
yiisoft\ — фреймворк + алиасы для расширений (в extensions.php).
ezyang\ — HTMLPurifier.
bower\ — jQuery, PJAX и ещё пара штук для валидации форм.
cebe\ — markdown.
autoload.php — автозагрузчик классов SPL.
.gitignore
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

Sam Dark писал(а): cebe\ — markdown.
А почему эта библиотека для парсинга документации отмечена в качестве обязательной????
Ответить