Symfony - 通过服务容器传递 ZipArchive(PHP 核心类)类



我需要将 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;
    }
}

查看服务容器的更多详细信息

希望对您有所帮助。

最新更新