我需要将 ZipArchive 类作为我的一个类的依赖项传递。我希望可以做到,但不知道如何在 services.yml 文件中定义。
请有任何想法。
我会在
服务结构中实例化核心 php 对象,并提供一个 setter 来覆盖这个对象(即稍后进行测试):
服务.yml:
app.my_service:
class: AppBundlerServicesMyService
AppBundle\Services\MyService:
namespace AppBundleServices;
class MyService
{
protected $ziparchive;
public function __construct()
{
$this->ziparchive = new ZipArchive();
}
public function setZipArchive(ZipArchive $zipArchive)
{
$this->zipArchive = $zipArchive;
return $this;
}
}
您可以将 ZipArchive 类作为服务的参数传递
首先,您需要为 ZipArchive 创建服务
services:
lib.ziparchive:
class: LibZipArchive #your ZipArchive Class Namespace
然后,您可以将lib.ziparchive
传递给您的课程服务
app.my_service:
class: AppBundlerServicesMyService
arguments: ['lib.ziparchive']
在 MyService 类中,需要创建构造函数。
namespace AppBundleServices;
use LibZipArchive
class MyService
{
protected $ziparchive;
public function __construct(ZipArchive $ziparchive)
{
$this->ziparchive = $ziparchive;
}
}
查看服务容器的更多详细信息
希望对您有所帮助。