Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Konstruktor
robertoniko98
post 26.01.2020, 13:44:52
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 26.01.2020

Ostrzeżenie: (0%)
-----


Witam,
jestestem poczatkującym programistą i uczę sie Symfony. Mam pytanie dotyczące konstruktora. Jeśli do własnej klasy dodałem np logger i wygląda to tak:

use #klasa loggujaca;
  1. class MyClass
  2. {
  3. private $logger;
  4.  
  5. public function __construct(Logger $logger)
  6. {
  7. $this->logger = logger;
  8. }
  9.  
  10. public function doSth()
  11. {
  12. $this->logger->info('test');
  13. }
  14. }

To jesli chcę wywołać MyClass to jedynym rozwiązaniem jest $logger = new \klasaLoggera; $mojaklasa = new \MyClass; $mojaklasa->doSth(); Czy jest jakiś inny prostszy sposób żeby logger był używany "domyślny" bez tworzenia jego instancji;

Ten post edytował robertoniko98 26.01.2020, 14:15:49
Go to the top of the page
+Quote Post
nospor
post 27.01.2020, 10:17:24
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Skorzystaj z serwisow (services) w symfony. Tam tworzysz definicje klas i ich parametrow i zautomatu tworza ci sie obiekty z ich zaleznosciami.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LowiczakPL
post 27.01.2020, 14:15:09
Post #3





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Cytat(robertoniko98 @ 26.01.2020, 13:44:52 ) *
To jesli chcę wywołać MyClass to jedynym rozwiązaniem jest $logger = new \klasaLoggera; $mojaklasa = new \MyClass; $mojaklasa->doSth(); Czy jest jakiś inny prostszy sposób żeby logger był używany "domyślny" bez tworzenia jego instancji;


Jeśli zrobisz sobie serwis o którym pisze nospor to tam gdzie potrzebujesz loggera wstrzykujesz go czy to w kontrolerze czy to w innym serwisie a instancja klasy robi się automatycznie.

W kontrolerze wstrzykujesz logger w konkretnej metodzie przykładowo tak

  1. public function nazwaMetody(LoggerService $logger)
  2. {
  3. $logger->info('test');
  4. }


Natomiast w innym serwisie wstrzykujesz logger w kontrolerze.

  1. public function __construct(LoggerService $logger)
  2. {
  3. $this->logger = logger;
  4. }


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 05:55