{{Laracast Laravel 5 Fundamentals, 6, Environments and Configuration, 14.01.2015, 26.06.2016, https://laracasts.com/series/laravel-5-fundamentals/episodes/6}} %%(hvlraw) %% (0:00) Добро пожаловать. Итак, давайте перейдём к разговору о конфигурации, а также о переменных окружения в Laravel 5. В предыдущем уроке мы уже немного говорили об этом. У нас есть файл %%(t).env%% в корне проекта, содержащий ряд ключей и значений. Так как же именно Laravel ссылается на них? Это делается через определенные файлы конфигурации. Обратите внимание, у нас есть папка %%(t)config%%. Давайте взглянем. Большинство проектов будет использовать какое-либо соединение с базой данных, не так ли? (0:30) Так давайте взглянем на наш файл конфигурации базы данных (%%(t)database.php%%). И заметьте, он всего лишь возвращает простой массив PHP. И вы можете многое узнать просто читая эти комментарии. Обратите внимание на то, что Тейлор Отвел, создатель Laravel, делает действительно отличную работу по обеспечению идеально отформатированных и отлично читаемых комментариев для каждого из этих пунктов. И помимо того, если вы хотите, чтобы ваш мозг ещё немного взорвался, заметьте, что на протяжении всего фреймворка, в его стиле комментирования каждая строка на три символа короче предыдущей. (1:00) Вы обнаружите это по всему фреймворку. И это только небольшой, тривиальный пример того как детально и заботливо создавался этот фреймворк. Именно поэтому я и использую его. Как бы то ни было, давайте прокрутим вниз. И вы увидите, что у нас есть различные соединения. И это потому, что для любого приложения, базы данных, которые вам потребуются, могут быть совершенно разными. Например, для небольшого проекта (возможно, вы создаете простой список дел To-Do или что-то подобное). (1:30) В подобных случаях, возможно вам потребуется всего лишь файловая база данных SQLite. Вам не нужно будет больше ничего делать. API для вас будет таким же. Таким образом, вы просто обновите ваш файл конфигурации, и всё готово. Или для следующего проекта, вы хотите использовать MySQL или PostgresSQL или SQL Server. Laravel идёт с этими драйверами по умолчанию. Теперь, если я прокручу вверх - смотрите сюда (допустим, что мы используем MySQL). Вам нужно указать имя хоста и базы данных, а также имя пользователя и пароль, верно? (2:00) Но мы не записываем их здесь жёстко. На самом деле, это своего рода плохой стиль напрямую вписывать такие вещи. Вы не захотите так делать. Ведь это будет внесено в вашу систему контроля версиями. Также у вас будут проблемы если вы кому-то отправите свои локальные файлы... Это может быть странно. Когда вы оправите это на GitHub, вы не хотите, чтобы сообщество видело эти пароли. Так что это будет безумием, если вы пойдёте по этому пути. Вместо этого, если вы станете ссылаться на переменную окружения – это гораздо лучшее решение. (2:30) Мы можем вставить это в систему управления версиями без каких-либо опасений. Теперь, если вы думаете: "Ну, Джефф, ведь это всё равно находится в этом файле, так что люди по-прежнему смогут увидеть эту секретную информацию и пароли." Но нет, на самом деле это не так. И это потому, что git всегда игнорирует наши файлы окружения. Позвольте я вам покажу. В нашем файле %%(t).gitignore%% – он указан здесь (%%(t).env%%). Который по сути означает – когда вы делаете коммит, он просто игнорирует этот файл, его не нужно включать. (3:00) Таким образом, для локального сервера разработки вы можете его настроить. Когда же вы вносите его в производственное окружение, то вы можете вручную создать файл окружения на той стороне, и с помощью этого подхода, мы на самом деле получаем очень гибкое решение. Так или иначе, назад в наш файл %%(t)database.php%%, мы можем видеть, что хост... будем искать переменную окружения %%(t)DB_HOST%%, но если не нашли её, то мы будем использовать значение по умолчанию (%%'localhost'%%). И то же самое верно и для названия базы данных, и для имени пользователя и пароля. (3:30) Теперь, если мы посмотрим – вот они. Так что, когда вы устанавливаете Laravel, вы можете использовать эти значения по умолчанию, если вы установили Homestead, как мы это делали в уроке №2. Но если вы его не установили, и ваши настройки немного отличаются – это единственный файл, который нужно поправить. Итак, давайте представим, что для нашего первого проекта нам просто нужна БД SQLite. Хорошо, мы идем к %%(t)database.php%% прокручиваем файл до самого верха и выбираем наше соединение по умолчанию. Им будет SQLite: %% 'default' => 'sqlite', %% (4:00) И опять же, чтобы напомнить вам – здесь перечислены все соединения, любое из которых вы можете выбрать. И если по какой-то причине вы хотите использовать что-то другое, то файл можно дополнить и включить ваш собственный драйвер. Так что теперь, когда мы установили новое значение по умолчанию – вот наш массив подключения для SQLite. И обратите внимание, что мы ссылаемся на файл %%(t)database.sqlite%% в нашем каталоге %%(t)storage%%. Который будет находиться вот здесь. Так что давайте возьмём и создадим этот файл. И мы можем просто использовать %%(t)touch%% – это будет простой файл базы данных: %%(sh) touch storage/database.sqlite %% (4:30) Хорошо, на этом всё! Теперь мы используем SQLite. Так что теперь, когда вы понимаете переменные окружения и конфигурацию немного лучше, не забывайте, что у вас тут есть все эти различные конфигурационные файлы для всего вашего приложения. Например, хотите режим отладки? Какой URL у приложения? Какой часовой пояс вы хотите использовать? Все такие настройки можно регулировать в папке %%(t)config%%. Так что в качестве домашнего задания, пройдитесь по всем этим файлам. (5:00) Вам не нужно запоминать всё это, но просто позвольте некоторым из этих вещей осесть в вашей голове, так чтобы вы поняли основную мысль относительно того, что здесь можно конфигурировать.