我在库包中使用apc用户缓存函数(https://packagist.org/packages/hazardland/db)但正如你所知:
在PHP 5.5之前存在扩展ext_apchttp://pecl.php.net/package/apc(用户缓存+操作缓存)
php 5.5中有ext_apcuhttp://pecl.php.net/package/APCu它只实现用户缓存功能而不实现操作缓存。
因此,在我的composer.json中,我需要需要这两个存在中的一个:ext_apc或ext_apcu,无论用户拥有哪个。有可能设置这样的扩展依赖关系吗?
如果我只需要ext_apc,我将失去php5.5.x用户,但如果我只要求ext_apcu,我将丢失php5.4.x用户。
研究后更新:
因此,composer中有两个指令,分别是provide和replace,但它们都无济于事,因为我需要ext-apcu是由ext-apc提供的,而且ext-*-s是composer的硬编码虚拟包,至少composer团队需要更改它们(我甚至在packagist.org上的虚拟包列表中找不到ext-apc或ext-apcu。)
只加载ext-apcu扩展和之后:
composer show --platform
返回此:
ext-apc 4.0.7 The apc PHP extension
ext-apcu 4.0.7 The apcu PHP extension
因此,只需要ext-apc就可以处理这两种情况。