PHP两种类型的依赖项注入之间的差异

PHP两种类型的依赖项注入之间的差异,php,dependency-injection,logic,difference,Php,Dependency Injection,Logic,Difference,我想征求你对这件事的意见 2种成瘾性注射方法的不足之处是什么? 我向您解释代码: 第一个是在制造商中注入要使用的类: /** * @var FileUploader */ private FileUploader $fileUploader; public function __construct(FileUploader $fileUploader) { $this->fileUploader = $fileUploader

我想征求你对这件事的意见

2种成瘾性注射方法的不足之处是什么? 我向您解释代码:

第一个是在制造商中注入要使用的类:


/**
     * @var FileUploader
     */
    private FileUploader $fileUploader;

    public function __construct(FileUploader $fileUploader)
    {
        $this->fileUploader = $fileUploader;
    }
第二种方法是直接注入函数:

/**
     * @Route("/", name="admin_images_index", methods={"GET"})
     * @param ImagesRepository $imagesRepository
     * @return Response
     */
    public function index(ImagesRepository $imagesRepository): Response
    {
        $query = $imagesRepository->findByImage();

        return $this->render('images/index.html.twig', [
            'images' => $query,
        ]);
    }
所以我的问题是:

这两种做事方式的区别是什么?应该选择哪一个?哪一个应该是最有效的?还是只有两种风格

如果任何知道我问题答案的人都能回答那就太好了


非常感谢您将来的回答,祝大家好运。

不同之处在于你们班的结构。如果你想在一个函数中使用更多的注入对象,那么你必须首先使用注入对象来获得漂亮的代码。如果只想在一个函数中使用,则必须使用第二个函数。因为你必须考虑负载,以及这个类会做什么

更新:

负荷是指:

然后将注入到构造函数中,它会将所有数据放入ram中,等待使用它进行更快的处理,因此,如果注入是非常大的对象,则需要将大量的位放入ram中并缓慢加载,这样脚本将使响应变长,无论您处理什么代码。然后,您将在一个类中使用更多的,例如大型对象,然后您可以将其注入构造函数,无论如何,如果使用正确,您将不会得到无意义的代码

总结:

如果只使用一次或小零件,则差别不大。但是,如果您使所有的代码都很重,那么您的负载将缓慢地保持不变


使您的代码更轻松,便于您自己和计算机使用。

请在您的答案中添加更多解释。你说你必须考虑负载是什么意思?