【发布时间】:2018-01-23 19:46:27
【问题描述】:
我目前正在开发自己的 packageagist 包,其中包含另一个包。我想我不太了解 autoload 的用法。
我的包是一个休息框架,依赖于AltoRouter。我的核心需要加载 AltoRouter 并且由于自动加载器负责我使用以下内容将其包含在我的文件中:
require_once __DIR__.'/../vendor/autoload.php';
我的项目中的文件结构如下:
project-root/
├── src/
| └── core.php
└── vendor/
├── autoload.php
└── altorouter/
现在这对于开发我的包很有效,但是一旦我想通过 packagist(以及作曲家)分发它,一切都会出错。
一旦我开始另一个项目,使用 composer 请求我的自定义包并尝试运行我的包的代码,require_once(在 core.php 中)将搞砸一切,因为它指向一个(现在)错误的位置。
我做错了什么吗?我必须以不同的方式构建我的“包”项目吗?
解决方案:
不要在你的库文件中包含autoload.php。将其包含在引导文件中(例如 index.php)
【问题讨论】:
标签: php composer-php autoload autoloader