public class MarkdownParser { }
Następnie wykorzystujemy je w tych klasach, gdzie są potrzebne:
public class NewsController { @Autowired final NewsDAO newsDAO; @Autowired final MarkdownParser markdownParser; @GetMapping("/read/{id}") return markdownParser.parse(newsDAO.getById(id)); } }
W Phalcon PHP też istnieje wstrzykiwanie zależności, ale w nieco mniej wygodnej formie. Otóż w pliku startowym musimy skonfigurować wszystkie komponenty (oprócz wstępnie dostępnych) w ten sposób:
// Uwaga: jest set() i setShared() $di->set('markdownParser', function() { return new MarkdownParser; });
Klasa MarkdownParser dziedziczy po Phalcon\Mvc\User\Component
class MarkdownParser extends \Phalcon\Mvc\User\Component { public function parse($input) { /* kod metody */ } }
Raz zarejestrowany komponent jest widoczny wszędzie i wynika z tego dużo problemów. Ponadto IDE nie wie o tym i bez dodatkowych zabiegów nie podpowiada składni.
public class NewsController extends \Phalcon\Mvc\Controller { public function readAction($id) { $this->view->text = $this->markdownParser->parse(News::findFirstById($id)); } }
Jak zaimplementować podpinanie zależności à la Spring w PHP? Macie jakiś pomysł?