Solitamente su Symnfony framework utilizzo il contenitore di iniezione di depiction fornito e su Controller I carica i modelli come servizio. Per essere più in dettaglio su un progetto corrente sto avendo il seguente services.yml
:
# Learn more about services, parameters and containers at
# http://symfony.com/doc/current/book/service_container.html
parameters:
# parameter_name: value
services:
# service_name:
# class: AppBundle\Directory\ClassName
# arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
##################### Crud Managers ##########################
pet_manager:
class: AppBundle\Managers\CRUD\PetManager
arguments: ["@doctrine.orm.entity_manager"]
person_manager:
class: AppBundle\Managers\CRUD\PersonManager
arguments: ["@doctrine.orm.entity_manager","@pet_manager"]
############################ Models ###########################
person_model:
class: AppBundle\Models\PersonModel
arguments: ["@person_manager"]
Che sul mio modello ho la Business Logic di base e uso i gestori per recuperare i dati da db o per eseguire azioni di terze parti come interfacciare una API di terze parti, gestire filesystem ecc. Tutti i manager vengono iniettati nel Modelli tramite Iniezione di Decisione.
In Symfony sul mio controller uso:
$personModel = $this->get('person_model');
Per caricare il modello.
Ma questa è considerata una buona pratica-approccio-architettura per poter essere applicata in altri framework o applicazioni php vanilla? Quali avvertenze possono avere?