Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Metoda "Ustaw domyślną przestrzeń nazw", Jak napisać taką metodę i co ona właściwie robi?
trzczy
post 16.01.2016, 17:47:53
Post #1





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Dałem się w ciągnąć w rozkminę warstwy modelu na SO: http://stackoverflow.com/questions/5863870...ructured-in-mvc

Miałbym takie pytanie: jak by mogła wyglądać definicja funkcji setDefaultNameSpace, użytej w tym fragmencie kodu:

  1. $serviceFactory->setDefaultNamespace('Application//Service');

W ogóle ciekawi mnie takie zadanie: "Ustaw domyślną przestrzeń nazw". Normalne zastosowanie namespace ogarniam, tylko chodziłoby o to ustalanie domyślnej namespace za pomocą metody.
Z góry dziękuję

Ten post edytował trzczy 16.01.2016, 17:51:03
Go to the top of the page
+Quote Post
com
post 16.01.2016, 18:34:51
Post #2





Grupa: Zarejestrowani
Postów: 3 033
Pomógł: 366
Dołączył: 24.05.2012

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


to jest fabryka, wiec normalnie ustawia property na to co dostaje w parametrze wink.gif
Go to the top of the page
+Quote Post
trzczy
post 16.01.2016, 18:42:42
Post #3





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Ma to coś wspólnego z namespace? Z ustawieniem przestrzeni nazw? Bo gdyby nie słowo namespace w nazwie tej metody, to by była dla mnie prosta sprawa.

edit: W sumie to, co jest w parametrze to jest jakby ścieżka folderów, bo ma ukośniki jak w ścieżkach folderów. Więc chyba to jednak nie ma nic wspólnego z namespace.

Ten post edytował trzczy 16.01.2016, 18:48:16
Go to the top of the page
+Quote Post
Pyton_000
post 16.01.2016, 18:46:11
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Pewnie chodzi o to że ustawia się namespace dla klas ładowanych w Fabryce.
Go to the top of the page
+Quote Post
com
post 16.01.2016, 18:53:22
Post #5





Grupa: Zarejestrowani
Postów: 3 033
Pomógł: 366
Dołączył: 24.05.2012

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


dokładnie tka jak napisał Pyton_000, bo skąd fabryka ma wiedzieć w jakiej przestrzeni są te pliki, to jest uniwersalna klasa nie zależy ona od tej konkretnej implementacji.
Go to the top of the page
+Quote Post
trzczy
post 16.01.2016, 18:58:12
Post #6





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Gdyby chodziło o ustalenie namespace dla klas, to jak by wyglądała taka metoda, która pobiera z parametru ścieżkę namespace i ustawia ją jako "defaultową" dla klasy, z której buduje obiekt?
Go to the top of the page
+Quote Post
com
post 16.01.2016, 19:01:27
Post #7





Grupa: Zarejestrowani
Postów: 3 033
Pomógł: 366
Dołączył: 24.05.2012

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


no tak jak normalnie zwykły setter
  1. class example
  2. {
  3. private $namespace;
  4. function setNamespace($namespace)
  5. {
  6. $this->namespace = $namespace;
  7. }
  8. }


Ten post edytował com 16.01.2016, 19:02:04
Go to the top of the page
+Quote Post
Pyton_000
post 16.01.2016, 19:04:26
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


I tworzenie:

  1. public function create() {
  2. $class = $this->namespace . '\\CustomClass';
  3. return new $class;
  4. }
Go to the top of the page
+Quote Post
trzczy
post 16.01.2016, 19:15:48
Post #9





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Rozumiem. Zatem, jeśli dana przestrzeń nazw by była uwzględniona w autoloaderze, to ta metoda setDefaultNameSpace by była niepotrzebna?

Ten post edytował trzczy 16.01.2016, 19:17:31
Go to the top of the page
+Quote Post
com
post 16.01.2016, 19:26:36
Post #10





Grupa: Zarejestrowani
Postów: 3 033
Pomógł: 366
Dołączył: 24.05.2012

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


można to zupełnie inaczej rozwiązać np użyć composera i autoloading z psr-4, tam jest ustawiana, żeby można było fabrykę zrobić jako reużywalny kod wink.gif
Go to the top of the page
+Quote Post
trzczy
post 16.01.2016, 19:58:29
Post #11





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Dzięki za bardzo pomocne odpowiedzi.
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: 28.04.2024 - 17:47