lmn / composer-update-manager
通过代码安装 composer 更新的库
v0.2.4
2022-06-19 21:49 UTC
Requires
- php: 5.6.* || 7.*
- composer/composer: 1.10.*
Requires (Dev)
- phpunit/phpunit: 5.7.*
This package is auto-updated.
Last update: 2024-08-29 23:23:48 UTC
README
检查您的 composer.lock 是否最新。此类将生成一个过时包的文件并提供过时包的数量。您还可以更新特定包
我不建议在生产环境中更新包
创建管理器
此包附带预定义的 ComposerUpdateManager 工厂。此工厂将创建具有文件存储的管理器。默认设置适用于 Linux 用户。
<?php $managerFactory = new Lmn\ComposerUpdateManager\FileManagerFactory(); $manager = $managerFactory->createComposerUpdateManager();
获取过时包进行更新
默认文件存储作为缓存的一种形式,因此您可以始终请求过时包。此列表不会自动刷新。要刷新此列表,请调用 checkAvailableUpdates
方法。方法 getAvailableUpdates
返回 Lmn\ComposerUpdateManager\Package
的列表。
<?php $managerFactory = new Lmn\ComposerUpdateManager\FileManagerFactory(); $manager = $managerFactory->createComposerUpdateManager(); $available = $manager->getAvailableUpdates();
检查更新
要运行包检查,您必须调用 ->checkAvailableUpdates()
方法。实际上,如果您使用 Composer
作为 ApplicationInterface
,它将运行 composer outdated --direct
。此过程稍微耗时,可能需要几分钟,因此我们建议在某种队列/后台进程中运行它。
<?php $managerFactory = new Lmn\ComposerUpdateManager\FileManagerFactory(); $manager = $managerFactory->createComposerUpdateManager(); $available = $manager->checkAvailableUpdates();
还值得一提的是,您可能需要增加您的
memory_limit
到256M
获取过时数量
<?php $managerFactory = new Lmn\ComposerUpdateManager\FileManagerFactory(); $manager = $managerFactory->createComposerUpdateManager(); $available = $manager->getOutdatedCount();
创建 ComposerUpdateManager
要创建实例,您必须提供存储关于过时包信息的方式。
- StorageInterface - 我们提供
FileStorage
,它接受包含file_path
的配置数组。此file_path
是一个用于存储过时包输出的文件。 - ApplicationInterface - 检查过时包的应用程序。我们只有
Composer
类作为选项。此类需要两个配置值home
,它是 composer 命令的变量,以及root_path
,它是 composer.json 文件的路径。
home
通常设置为__DIR__ . '/vendor/bin/composer'
示例
<?php $manager = new Lmn\ComposerUpdateManager\ComposerUpdateManager( new Lmn\ComposerUpdateManager\Storage\FileStorage([ 'file_path' => './storage/tmp/outdated_output.txt' ]), new Lmn\ComposerUpdateManager\Application\Composer([ 'home' => __DIR__ . '/vendor/bin/composer', 'root_path' => '../' ]) ); ?>