2016-05-28 4 views
0

Я устанавливаю репозиторий, устанавливаемый композитором. Я прочитал документацию Composer и успешно установил свой репозиторий в соответствии с инструкциями. То, что я понял о разнице между и require-dev, заключалось в том, что require-dev предназначен для декларации зависимостей, которые не являются обязательными для этого, поэтому репозиторий работает правильно.Сомнения о требовании и требовании-dev от Composer

Однако, я наблюдал за composer.json некоторых библиотек на Github, как Zend Form и Respect Validation, и на этих двух местах хранения, есть пакеты, которые необходимы к тому, что эти хранилища работает должным образом и перечислены в require-dev. Например, зависимость egulias/email-validator указана в require-dev в разделе «Проверка соблюдения», но по адресу this file эта зависимость требуется для того, чтобы работает функция проверки подлинности электронной почты. Итак, почему эта зависимость не указана в require?

То же самое происходит с zendframework/zend-captcha, что необходимо для работы Captcha element.

ответ

1

Эта зависимость требуется для того, чтобы Работа с Email Validator работала.

Это не так. Вы можете видеть, что Respect\Validation\Rules\Email имеет дополнительную зависимость от Egulias\EmailValidator\EmailValidator. Если задан egulias/email-validator, тогда класс будет use it, в противном случае он будет возвращаться к filter_var. Класс будет работать в любом случае. Что может сделать пакет: suggest вы его установите.

+0

Это правда. Но и для Zend Captcha? Я просмотрел код, и я не вижу способа использовать его без использования элемента Zend \ Captcha. См. Метод setCaptcha. Если я предоставляю массив или что-то, что реализует интерфейс Traversable, он использует компонент Factory of Zend \ Captcha. Другой вариант - предоставить что-то, что реализует AdapterInterface компонента Zend \ Captcha ... – user3753202

+1

То же самое для 'Zend \ Form \ Element \ Captcha'. Документация метода 'setCaptcha' требует' zend-captcha', но это не означает, что 'zend-form' имеет зависимость от' zend-captcha'. Если приложение _your_ использует 'setCaptcha', то ваша ответственность - передать некоторый экземпляр' ZendCaptcha \ AdapterInterface', и для этого вам необходимо установить этот пакет. Кроме того, большинство людей, которые предпочитают использовать 'zendframework/zend-form', могут не использовать Captcha. Вы действительно не хотите устанавливать зависимость, которую вы не используете в любом случае. – Federkun

+1

Я хочу сказать, что 'zend-form' не использует' zend-captcha' напрямую. Вам нужно создать какой-либо объект с пакетом 'zend-captcha' в вашем приложении, а затем передать этот объект компоненту' zend-form', который сможет управлять им. Но это не значит, что 'zend-form' требует' zend-captcha'. Ваше приложение. – Federkun