Где в Symfony 3 объявлять глобальные функции(heplers)?

Где в Symfony 3 можно описывать функции которые будут доступны во всём приложении?
  • Вопрос задан
  • 918 просмотров
Решения вопроса 2
lexxpavlov
@lexxpavlov
Программист, преподаватель
Сделать папку в корне src, сделать неймспейс, создать класс, в нём сделать статический метод.
<?php
namespace MyFunctions;

class Calc
{
    public static function add($a, $b)
    {
        return $a + $b;
    }
}

<?php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use MyFunctions\Calc;

class DefaultController extends Controller
{
    /**
     * @Route("/", name="homepage")
     */
    public function indexAction()
    {
        $sum = Calc::add(10, 20);

        return $this->render('default/index.html.twig', array(
            'sum' => $sum,
        ));
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sggr
@sggr
PHP, Ruby, GO
Пишу полноценный ответ, как это должно быть в Symfony. Не пытайтесь переносить практики других фрейморков типо Yii и Laravel на Symfony, это разные продукты для разных целей.
В идеологии Symfony нет понятия хелпер как в Yii, ROR, Laravel. Вам необходимо объединить часто используемые функции в Service(называть это можно как угодно) по характеру функционала, поместить это в DI контейнер и инжектить в те классы в котором нужен этот сгруппированный функционал.
И задумайтесь, если у вас есть такие классы хелперы, которые используются направо и налево - значит вы промахнулись с архитектурным решением. Один класс одна обязанность. Понимание SOLID и практика поможет вам выйти на другой уровень объектного проектирования и разработки в целом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы