[英]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.