ProxyManager LTS 使用教程
项目介绍
ProxyManager LTS 是一个为 ocramius/proxy-manager 库提供长期支持的 fork 版本。它扩展了对更广泛 PHP 版本的支持,并保持与 PHP >=7.1 的兼容性。该项目不依赖于 Composer 2,因此可以在 Composer 1 中使用,同时采用友好的版本控制策略,便于渐进式迁移。
项目快速启动
安装
首先,通过 Composer 安装 ProxyManager LTS:
composer require friendsofphp/proxy-manager-lts
基本使用
以下是一个简单的示例,展示如何使用 ProxyManager 创建一个延迟初始化的代理对象:
use ProxyManager\Factory\LazyLoadingValueHolderFactory;
use ProxyManager\Proxy\LazyLoadingInterface;
require_once 'vendor/autoload.php';
$factory = new LazyLoadingValueHolderFactory();
$proxy = $factory->createProxy(
MyClass::class,
function (& $wrappedObject, $proxy, $method, $parameters, & $initializer) {
$wrappedObject = new MyClass();
$initializer = null; // 禁用进一步的初始化
return true; // 初始化成功
}
);
// $proxy 现在是一个延迟初始化的代理对象
$proxy->someMethod();
应用案例和最佳实践
延迟加载
ProxyManager 最常见的用途是实现延迟加载。例如,在大型应用程序中,某些对象的初始化成本很高,可以通过代理模式延迟到实际使用时再进行初始化。
访问控制
ProxyManager 还可以用于实现访问控制,例如通过代理对象限制对某些方法的访问。
缓存
在需要缓存结果的场景中,可以使用 ProxyManager 创建代理对象,在代理对象中实现缓存逻辑。
典型生态项目
Symfony ProxyManager Bridge
Symfony 框架通过 symfony/proxy-manager-bridge
组件与 ProxyManager 集成,提供了对延迟服务的支持。尽管从 Symfony 6.2 开始不再需要 ProxyManager Bridge,但了解其集成方式对于理解 Symfony 的内部工作机制仍然有帮助。
Doctrine ORM
Doctrine ORM 使用 ProxyManager 来生成实体代理,实现延迟加载和缓存机制。
通过以上内容,您可以快速了解并开始使用 ProxyManager LTS,同时了解其在不同项目中的应用和最佳实践。