Zend Skeleton Application содержит этот composer.json в своей корневой папке проекта. Вы видите, что для этого требуются определенные модули, в том числе один для установки. Вы также видите autoload
. Теперь каждый из загружаемых / требуемых модулей может делать то же самое, создавая структуру дополнительных файлов composer.json и требований. В связанном файле вы видите, что zendframework/zend-mvc
требуется ("zendframework/zend-mvc": "^3.0.1",
)
Взгляните тогда на файл zendframework / zend-form composer.json. Там вы увидите дополнения require
ключей и версий, а также дополнительный ключ autoload
. Все они (и даже больше) объединяются для создания единого устанавливаемого пакета. Этот пакет является вашей полной установкой и, после установки, всего на вашей карте vendor/
в вашем проекте (рядом с корневым файлом composer.json
вашего проекта).
Ниже я получил слегка измененный (убрал некоторые вещи, не относящиеся к вопросу и выделил другие) снимок экрана composer.json для текущего проекта.
Слева вы видите структуру папок. Внизу вы видите файлы composer.json
и composer.lock
.
.json (средний экран) содержит корневые требования для проекта. Поскольку каждый пакет может иметь свои собственные требования, composer.lock
генерируется во время установки (файл справа). Этот файл содержит каждую установленную версию. (Создано с помощью команды composer install
).
Как видно из файла .lock
, где-то есть требование для пакета 51systems/doctrine-encrypt
. Как вы также можете прочитать, этот пакет имеет свои собственные требования и пространство имен для загрузки.
![showing json and lock files](https://i.stack.imgur.com/XIlsg.png)
Теперь в процессе установки Composer также создается ваша автозагрузка.
Zend Framework запускает автозагрузку в самом приложении, но использует включенные файлы из файла vendor/autoload.php
. Ниже немного от public/index.php
, относящихся к автозагрузке. Для полной установки установите фреймворк или посмотрите на Github.
// Composer autoloading
include __DIR__ . '/../vendor/autoload.php';
// ... other stuff
// Run the application!
Application::init($appConfig)->run();
Хорошо, это показывает, что мы включаем vendor/autoload.php
. Посмотрим:
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit7befb6b36ba61da7e01a592b255158ab::getLoader();
Хммм ... да, это весь файл. Не много. Однако мы можем следить и за этим.
В папке vendor
вы найдете папку с именем composer
. Здесь вы увидите несколько файлов, начинающихся с autoload_
, они гарантируют, что все файлы, зарегистрированные через эти composer.json
файлы (config PSR-0
или PSR-4
в ключе autoload
), будут загружены.
Итак, включая vendor/autoload.php
действительно достаточно. Пролистайте их и увидите.
Затем вы используете пространства имен для использования других классов. Вы спрашивали об этом, но, видя объем этого вопроса, вы должны сделать это отдельным вопросом. Читайте также о пространствах имен со ссылкой, которую я отправляю вам в комментариях.
Обсуждение выходит из-под контроля, поэтому пошагово сделайте следующее:
- Убедитесь, что у вас есть настройки хоста (Вкл .: Ubuntu (Apache) , Windows 10 (Apache) , Mac (Apache) , Ubuntu (nginx) , Windows 10 (nginx) , Mac (nginx) ) (пока это будет пустая папка, назовите ее «skeleton», hostname »скелет .loc ")
- Загрузите Zend Skeleton Application (прямая .zip ссылка)
- Распаковать в новую папку с шага 1 («скелет»)
- Открыть папку хоста "skeleton" в терминальной сессии
- Запустите
composer install
(из сеанса терминала "skeleton") (вы хотите "вставить в module.config.php
во время установки для всех параметров (на этот раз не требователен), это option 1
(каждый раз))
- Дождаться запуска установки
- Посетите "skeleton.loc" (возможно, канонический: http://skeleton.loc/) в вашем браузере, вы должны увидеть изображение ниже (но для ZF3;), скопировал его из интернета)
![zf2 start image as demo](https://i.stack.imgur.com/XwKbj.png)