bennothommo / packager
v0.2.2
2023-01-22 11:05 UTC
Requires
- php: ^7.4.0 || ^8.0
- ext-openssl: *
- ext-zip: *
- ext-zlib: *
- composer/composer: ^2.1.0
- symfony/process: ^4.3.4 || ^5.0 || ^6.0
Requires (Dev)
- dms/phpunit-arraysubset-asserts: ^0.4.0
- phpstan/phpstan: ^1.6
- phpunit/phpunit: ^8.5.15 || ^9.5.4
- symfony/phpunit-bridge: ^4.3.4 || ^5.0 || ^6.0
Replaces
- bennothommo/packager: v0.2.2
README
在PHP应用程序中运行Composer命令,执行Composer搜索和查询。这个库作为Composer命令的PHP包装器,允许通过PHP进行包管理,并使用Composer、Packagist API和您自己的项目锁文件来获取已安装或可用的包信息。
实际上您不需要安装Composer,因为这个库将作为依赖引入Composer应用程序,但是您需要Composer来安装这个库。
用例
这个库最初是为了给 Winter CMS 提供Composer通过PHP的使用,以支持其升级和插件架构。Winter CMS用户群中有一部分更喜欢基于Web的安装方法,并宁愿不使用(或者根本不能)使用命令行Composer应用程序。
因此,这个库利用Composer维护依赖项的功能,并以一种可以程序化控制并以更友好的格式呈现给这些用户的方式实现。
安装
通过Composer安装
composer require winter/packager
使用
这个库目前支持以下Composer命令
install
search
show
update
version
(--version)
您可以在PHP脚本中创建一个Composer
实例并运行这些命令,定义一个包含composer.json
文件的作业目录,以及一个用于存储缓存的包的本地目录。
<?php use Winter\Packager\Composer; $composer = new Composer(); $composer ->setWorkDir('/home/me/project/') ->setHomeDir('/tmp/composer'); // Get the Composer version $version = $composer->version(); // Run an install or update on the entire project, including dev dependencies $install = $composer->install(); $update = $composer->update(); // Install project without dev dependencies $install = $composer->install(false); // Show installed packages $show = $composer->show(); // Search packages $results =
每个命令的文档将很快推出。
限制
- Composer在底层使用
symfony/process
执行各种操作。大多数共享主机都不会允许这样做,要么通过阻止proc_*
函数或pcntl
扩展来实现。如果您的托管主机也这样做,您将无法使用脚本或某些插件。
安全影响
请注意,这个库确实引入了一些您在使用前可能需要考虑的安全影响。
- 如果在基于Web的环境中使用了这个库,您必须允许运行Web服务器的用户对供应商文件夹和文件进行写入。您不应使供应商文件夹可公开访问,否则这将成为攻击的简单途径。
- 允许在Composer中运行脚本可能会授予脚本访问您的Web环境或外围PHP应用程序。除非您绝对信任您的依赖项,否则不应运行脚本。
特别感谢
- Composer团队
- Stack Overflow上的用户"Endel",因为 这个答案 为这个库的灵感。