Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony-通过服务容器传递ZipArchive(PHP核心类)类_Php_Symfony - Fatal编程技术网

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

Symfony-通过服务容器传递ZipArchive(PHP核心类)类,php,symfony,Php,Symfony,我需要将ZipArchive类作为我的一个类的依赖项传递。我希望可以这样做,但不知道如何在services.yml文件中定义 任何想法都可以。您可以将ZipArchive类作为服务的参数传递 首先,您需要为ZipArchive创建服务 services: lib.ziparchive: class: Lib\ZipArchive #your ZipArchive Class Namespace 然后您可以将lib.ziparchive传递给您的类服务 ap

我需要将ZipArchive类作为我的一个类的依赖项传递。我希望可以这样做,但不知道如何在services.yml文件中定义


任何想法都可以。

您可以将ZipArchive类作为服务的参数传递

首先,您需要为ZipArchive创建服务

services:
    lib.ziparchive:
        class: Lib\ZipArchive   #your ZipArchive Class Namespace

然后您可以将
lib.ziparchive
传递给您的类服务

    app.my_service:
        class: AppBundler\Services\MyService
        arguments: ['lib.ziparchive']

在MyService类中,您需要创建构造函数

namespace AppBundle\Services;

use Lib\ZipArchive

class MyService
{
    protected $ziparchive;

    public function __construct(ZipArchive $ziparchive)
    {
        $this->ziparchive = $ziparchive;
    }

}
查看更多详细信息以了解更多信息


希望有帮助。

您可以将ZipArchive类作为服务的参数传递

首先,您需要为ZipArchive创建服务

services:
    lib.ziparchive:
        class: Lib\ZipArchive   #your ZipArchive Class Namespace

然后您可以将
lib.ziparchive
传递给您的类服务

    app.my_service:
        class: AppBundler\Services\MyService
        arguments: ['lib.ziparchive']

在MyService类中,您需要创建构造函数

namespace AppBundle\Services;

use Lib\ZipArchive

class MyService
{
    protected $ziparchive;

    public function __construct(ZipArchive $ziparchive)
    {
        $this->ziparchive = $ziparchive;
    }

}
查看更多详细信息以了解更多信息


希望对您有所帮助。

我将在服务构造中实例化核心php对象,并提供一个setter来覆盖该对象(即用于稍后的测试):

services.yml:

app.my_service:
    class: AppBundler\Services\MyService
AppBundle\Services\MyService:

namespace AppBundle\Services;

class MyService
{
    protected $ziparchive;

    public function __construct()
    {
        $this->ziparchive = new ZipArchive();
    }

    public function setZipArchive(\ZipArchive $zipArchive)
    {
        $this->zipArchive = $zipArchive;

        return $this;
    }

}

我将在服务构造中实例化核心php对象,并提供一个setter来覆盖该对象(即用于稍后的测试):

services.yml:

app.my_service:
    class: AppBundler\Services\MyService
AppBundle\Services\MyService:

namespace AppBundle\Services;

class MyService
{
    protected $ziparchive;

    public function __construct()
    {
        $this->ziparchive = new ZipArchive();
    }

    public function setZipArchive(\ZipArchive $zipArchive)
    {
        $this->zipArchive = $zipArchive;

        return $this;
    }

}

谢谢你的回答,但是我的问题是ZipArchive是一个PHP核心类,我们可以通过容器注入核心类吗?我收到错误“\\ZipArchive”不是“zip_archive”服务的有效类名。也许symfony文档就是您所需要的。谢谢您的回复。我做了一些类似于LMS94的回答谢谢你的回答,但我的问题是ZipArchive是一个PHP核心类我们可以通过容器注入核心类吗?我收到错误“\\ZipArchive”不是“zip_archive”服务的有效类名。也许symfony文档就是您所需要的。谢谢您的回复。我做了一些类似于LMS94的回答为什么不在类本身中实例化它?如果它的核心没有问题,那么为什么不在类本身中实例化它呢?如果它的核心,那么这应该是没有问题,这应该是所有你需要的。我做了一些类似的解决方案。谢谢这应该是你所需要的。我做了类似的解决方案。谢谢