Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Composer能否处理路径中的二进制依赖项?_Php_Composer Php - Fatal编程技术网

Php Composer能否处理路径中的二进制依赖项?

Php Composer能否处理路径中的二进制依赖项?,php,composer-php,Php,Composer Php,我知道它可以确定php、hhvm、ext和一些库依赖项。在PATH上的命令和二进制文件上是否也会出现同样的情况?事实上,例如,我编写脚本以确保它的存在。这可以通过自己的Composer功能来实现?您可以使用Composer钩子来实现,比如预安装cmd或预更新cmd,它执行PHP方法。这是我的测试: composer.json src/Acme/Composer/Hooks.php 您可以使用Composer钩子实现这一点,比如pre-install cmd或pre-update cmd,它执行一

我知道它可以确定php、hhvm、ext和一些库依赖项。在PATH上的命令和二进制文件上是否也会出现同样的情况?事实上,例如,我编写脚本以确保它的存在。这可以通过自己的Composer功能来实现?

您可以使用Composer钩子来实现,比如预安装cmd或预更新cmd,它执行PHP方法。这是我的测试:

composer.json

src/Acme/Composer/Hooks.php


您可以使用Composer钩子实现这一点,比如pre-install cmd或pre-update cmd,它执行一个PHP方法。这是我的测试:

composer.json

src/Acme/Composer/Hooks.php


困难,因为它依赖于操作平台;当然,测试版本或为Youp安装版本并不容易。是的,版本控制是不可能处理的。但我认为,您可以跨平台测试状态,只使用香草PHP。这很困难,因为它取决于操作平台;当然,测试版本或为Youp安装版本并不容易。是的,版本控制是不可能处理的。但是我认为你可以通过跨平台的方式来测试存在性,只需要使用香草PHP。经过一些研究,我认为这是最跨平台的方法。顺便说一句。编写器挂钩仅在根包中运行。如果你把它们添加到你的库中,它们就没有效果了!经过一些研究,我认为这是最跨平台的方法。编写器挂钩仅在根包中运行。如果你把它们添加到你的库中,它们就没有效果了!
{
  "require": { "pimple/pimple": "*" },
  "autoload": { "psr-0": { "Acme\\": "src/" } }
  "scripts": {
    "pre-install-cmd": "Acme\\Composer\\Hooks::checkBinary",
    "pre-update-cmd": "Acme\\Composer\\Hooks::checkBinary"
  }
}
<?php
namespace Acme\Composer;

use Composer\Script\Event;

class Hooks
{
    public static function checkBinary(Event $event) {
        $io = $event->getIO();
        $path = explode(':', getenv('PATH'));
        // do something with $path elements or anything else
        if ($somethingWentWrong) {
            // Throwing an Exception will cause Composer to stop processing.
            throw new \Exception('Check your PATH');
        } else {
            $io->write('checkBinary() completed.');
        }
    }
}