Where to put model helper functions in Symfony2

前端 未结 2 1588
耶瑟儿~
耶瑟儿~ 2021-02-20 14:28

I have the following function:

function array_duplicates($array)
{
    $duplicates = array();
    $unique = array_unique($array);
    for ($i = 0; $i < count(         


        
相关标签:
2条回答
  • 2021-02-20 15:03

    By convention, utility classes go under the Util namespace.

    If you use bundles, a class would go into the YourBundle\Util namespace. If you don't, it would go into the Acme\Util namespace — the src/Acme/Util folder.

    0 讨论(0)
  • 2021-02-20 15:07

    This might be the type of thing you'd put into a service. Create a class like this:

    class ArrayUtils
    {
        function array_duplicates($array)
        {
            ... 
            return $duplicates;
        }
    }
    

    And then define it as a service. If you're using YAML, you'd put something like this into your config.yml file:

    services:
        arrayUtils:
            class:        Full\Path\To\ArrayUtils
    

    Under this configuration, Symfony will create a single instance of your ArrayUtils, and give all your controllers access to it. Then you can call it like this:

    class SomeController
    {
        public function someAction()
        {
            ...
            $duplicates = $this->get("arrayUtils")->array_duplicates($array);
            ...
        }
    }
    

    This is all part of Symfony's dependency injection framework. It's pretty cool, and I recommend reading up on it here: http://symfony.com/doc/2.0/book/service_container.html

    Alternative Option

    Now, that might be a little overkill for such a small chunk of code. If you're only going to be using this in a single bundle, then you might want to just put it into a base controller, and have all your other controllers extend that base controller.

    class BaseController
    {
        function array_duplicates($array)
        {
            ...
        }
    }
    
    class SomeController extends BaseController
    {
        function someAction()
        {
            $this->array_duplicates($array);
        }
    }
    
    0 讨论(0)
提交回复
热议问题