gpt4 book ai didi

php - 如何从 Composer 包中查找安装供应商的基本目录

转载 作者:行者123 更新时间:2023-12-02 03:06:18 25 4
gpt4 key购买 nike

我正在尝试从 Composer 包中查找应用程序的基目录。是否有 Composer API 或正确的方法来完成此任务。

澄清一下,如果我的软件包安装看起来像这样,并且我在这里有文件(使用 psr-4):

/home/project/vendor/Acme/my-package/src/

如何动态查找/home/project?

更新信息:

我正在尝试从根目录加载 .env 文件,该文件包含通过包内的 Dotenv 包的 API URL 端点。

最佳答案

这应该做:

<?php

$root = null;

// Set the current directory.
// Make sure you set this up so
// that you get out of your own root.
// Assuming this php file is at the root
// of this composer package, this should suffice.
$directory = dirname(__FILE__);

// Go up until you find a composer.json file
// which should exist in the ancestors
// because its a composer package.
do {
$directory = dirname($directory);
$composer = $directory . '/composer.json';
if(file_exists($composer)) $root = $directory;
} while(is_null($root) && $directory != '/');

// We either are at the root or we got lost.
// i.e. a composer.json was nowhere to be found.
if(!is_null($root))
{
// Yay! we are at the root.
// and $root contains the path.
// Do whatever you seem fit!
bootstrapOrSomething();
}
else
{
// Oh no! Can we default to something?
// Or just bail out?
throw new Exception('Oops, did you require this package via composer?');
}

@sven 在某些情况下,此策略可能会有所帮助。就像任何项目的通用控制台应用程序 (phar) 一样,避免全局安装,但仍加载引导文件。 Composer允许bin文件安装在根目录https://getcomposer.org/doc/articles/vendor-binaries.md ,但允许用户将 phar 文件放置在他们认为合适的任何地方是一个优点。

人们可能会争论控制反转,但在我看来,简单性有时应该发挥作用。

关于php - 如何从 Composer 包中查找安装供应商的基本目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29374978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com