簡體   English   中英

依賴注入與靜態

[英]Dependency Injection vs Static

我正在學習symfony框架,我想知道:如果我需要類似幫助器(例如)的東西,最好是制作服務(對我的控制器進行依賴注入)或創建靜態函數更好。 每種方法的優缺點是什么?

先感謝您 :)

對於添加可執行特定進程的可重用庫的最佳方法,這是一個非常重要的問題。

Symfony的方法是將它作為服務並在服務容器中注冊它。

<?php 

namespace Acme\MainBundle\Services;

class MobileHelper
{
    public function formatMobile($number)
    {
        $ddd = substr($number, 0, 2);
        $prefix_end_index = strlen($number) == 11 ? 5 : 4;
        $prefix = substr($number, 2, $prefix_end_index);
        $suffix = substr($number, -4, 4);

        return sprintf('(%s) %s-%s', $ddd, $prefix, $suffix);
    }

    public function unformatMobile($number)
    {
        $number = preg_replace('/[()-\s]/', '', $number);

        return $number;
    }
}

然后在services.yml上

  mobile.helper:
    class: Acme\MainBundle\Services\MobileHelper

然后你可以在你的控制器中使用它,如:

$mobileHelper = $this->get('mobile.helper');
$formattedMobile = $mobileHelper->formatMobile('11999762020');

控制器中的靜態函數似乎不是一種非常Symfony的做事方式。 服務和依賴注入往往是一種方法,因為它立即將功能與單個控制器分離,並使其更容易重復使用。 認為這種方法可能還會提高您構建該服務的邏輯。 Symfony的最佳實踐是針對輕型控制器,因此任何繁重的業務邏輯都應該轉移到服務中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM