编写器包:自动加载和扩展另一个包



我正在使用Composer创建我的第一个PHP包之一,我遇到了一个问题。

目前我正在开发一个包,他的主类从另一个包扩展了一个类,所以在我的composer.json上,我已经将我扩展的包声明为需求:

"require": {
        "php": ">=5.3.0",
        "ext-mbstring": "*",
        "author/BasePackage": "dev-master"
},

并且,如果我发布composer update,我会在我的项目中获得一个很好的vendor目录,并在那里下载author/BasePackage依赖项。

所以我的问题是,在我的主类文件srcExtended.php,我需要手动做一些像require_once __DIR__ . "/../vendor/autoload.php";为了自动加载BasePackage,所以我可以做class Extended extends BasePackageBasePackage

这样可以吗?我应该如何加载我的包依赖?当我将这个包提交到GitHub左右时,我忽略了vendor目录,如果有人在他们的项目上使用它,require_once __DIR__ . "/../vendor/autoload.php";将失败,因为它不会在我期望的地方。

我该怎么做?

谢谢。

不行。

你可以放心地假设任何正在使用你的包的人都在使用Composer。他将使用Composer的自动装弹器。所以他既可以从包中加载你自己的类,也可以从包中加载你的包所依赖的任何其他类,只要你把它列为包中的依赖项。

不要手动加载其他类!你不需要。

您的包中的测试应该包括引导中的vendor/autoload.php -这将允许您的类直接可用,因为其他包类也可以自动加载。任何示例脚本都应该包括创建的自动加载器。

如果你的包在其他地方被使用,那么自动加载器的作用是一样的:在自动加载器被包含之后,Composer下载的所有类都可以直接使用。

相关内容

  • 没有找到相关文章

最新更新