Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.lang.php > #16145
| From | Marek S <precz@spamowi.com> |
|---|---|
| Newsgroups | pl.comp.lang.php |
| Subject | Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? |
| Date | 2019-04-14 22:27 +0200 |
| Organization | ATMAN - ATM S.A. |
| Message-ID | <q90548$dop$1@node1.news.atman.pl> (permalink) |
Witam,
Wyjaśnię, że stawiam pierwsze kroki w Symfony 4. Dotarłem do etapu
tworzenia Service Providerów w jakimś kursie. Oczywiście ja, jakto ja,
nigdy bezmyśnie nie przepisuję tego, co w kursie mówią lecz od razu
buduję życiowe sytuacje symulując praktyczne użycie.
No i albo czegoś nie ogarniam, albo autowiring to jakaś ściema i kula u
nogi, czasem nawet uniemożliwiająca korzystanie z tej funkcjonalności.
Korzystanie z klas w klasyczny sposób dla PHP wydaje się być
nieporównywalnie lepszym podejściem. Sprostujcie mnie. Zapewne czegoś
nie dostrzegam.
Oto przykład kontrolera, gdzie poległem:
<?php
namespace App\Controller;
use App\Entity\Users;
use App\Services\MarekService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class DefaultController extends AbstractController {
/**
* DefaultController constructor.
*/
public function __construct(MarekService $marekService) {
array_unshift($marekService->gifts, "constr");
}
private function getRandom(MarekService $marekService): array {
return $marekService->gifts;
}
/**
* @Route("/default", name="default")
*/
public function index(MarekService $marekService) {
$users =
$this->getDoctrine()->getRepository(Users::class)->findBy([], ['name' =>
'ASC']);
return $this->render('default/index.html.twig', [
'controller_name' => 'DefaultController',
"users" => $users,
"gifts2" => $this->getRandom(),
"gifts" => $marekService->gifts,
]);
}
}
Załóżmy, że wszystkie metody będą potrzebowały korzystać z MarekService.
Jeśli chodzi o metody publiczne, te, które budują routing lub
konstruktor, to wszystko ok choć, moim zdaniem, niepotrzebnie dużo
piszemy przekazując do każdej z tych metod regułkę:
MarekService $marekService
Prościej byłoby w konstruktorze przypisać do zmiennej prywatnej:
$this->prv=new MarekService();
...i dalej w kodzie posługiwać się $this->priv zamiast każdorazowo
wstrzykiwać coś.
Po drugie, przy wstrzykiwaniu powstała sprzeczność. Popatrzcie na metodę
prywatną $this->getRandom(). Wstrzykuję do niej MarekService, a z
drugiej strony chcę ją użyć bez przekazywania parametrów (na dole
skryptu), bo nie ma po co ich przekazywać. Metoda ma mi coś zwrócić i
koniec, kropka. Gdybym bazował na $this->priv, to taka sprzeczność nie
miałaby miejsca.
--
Pozdrawiam,
Marek
Back to pl.comp.lang.php | Previous | Next — Next in thread | Find similar
Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Marek S <precz@spamowi.com> - 2019-04-14 22:27 +0200
Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-15 00:56 +0200
Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Marek S <precz@spamowi.com> - 2019-04-15 23:38 +0200
Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-16 17:55 +0200
Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Marek S <precz@spamowi.com> - 2019-04-17 00:11 +0200
Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-17 10:36 +0200
Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Marek S <precz@spamowi.com> - 2019-04-17 22:26 +0200
Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-30 16:13 +0200
csiph-web