Najoptymalniejszy sposób na __autoload z wielu katalogów |
Najoptymalniejszy sposób na __autoload z wielu katalogów |
8.09.2014, 17:29:14
Post
#1
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 3 Dołączył: 9.12.2013 Ostrzeżenie: (0%) |
Witam, zrobiłem __autoload, który wygląda tak o:
funkcja autoload_class_existance:
Czy jest to dość optymalny sposób, czy da radę zrobić to lepiej? |
|
|
8.09.2014, 18:12:57
Post
#2
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 10 Dołączył: 2.08.2012 Skąd: DW Ostrzeżenie: (0%) |
A nie lepiej oprzeć to o PSR-0?
|
|
|
8.09.2014, 18:37:27
Post
#3
|
|
Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) |
Zasadnicze pytanie: po co potrzebujesz bawić się w pisanie swojej funkcji ładującej?
-------------------- Google knows the answer...
|
|
|
8.09.2014, 18:47:58
Post
#4
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 3 Dołączył: 9.12.2013 Ostrzeżenie: (0%) |
Nie potrzebuje się bawić, po prostu zastanawiam się na nad najmniejszym i najoptymalniejszym wyjściem
|
|
|
8.09.2014, 19:04:29
Post
#5
|
|
Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) |
Poczytaj sobie o klasie ładującej z PSR-0, jak Ci zaproponował @irekk. Z całym szacunkiem, ale wątpię, żebyś coś lepszego wymyślił
-------------------- Google knows the answer...
|
|
|
8.09.2014, 19:18:30
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) |
Taa zwłaszcza że jest już kilkanaście gotowych klas do autoładowania, które istnieją już od jakiegoś czasu, są przetestowane przez dziesiątki ludzi którzy nie tylko piszą w php, ale i go tworzą. Zawsze możesz użyć include_path, który wraca ostatnimi dniami jak bumerang
|
|
|
8.09.2014, 21:07:22
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Proszę bardzo. 10 stron postów. Same dobre rzeczy
Temat: Wlaczanie plikow autoloader |
|
|
8.09.2014, 21:27:23
Post
#8
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 3 Dołączył: 9.12.2013 Ostrzeżenie: (0%) |
Ok, zastosowałem klasę SplClassLoader, teraz tylko jest jeden problem:
Stuktura wygląda tak o: -root --application -----models -----views -----controllers --libs -----Bootstrap.php No i sprawa wygląda tak, że:
Bo jezeli chce autoloadowac biblioteke, ktora jest poza katalogiem application, to jest mały problem, bo: Warning: require(X:\Server\root\Application\Libs\Bootstrap.php) [function.require]: failed to open stream: No such file or directory in X:\Server\blog\libs\SplClassLoader.php on line 152 Co w takim wypadku zrobic? Ten post edytował Ultear 8.09.2014, 21:27:38 |
|
|
8.09.2014, 21:38:44
Post
#9
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
libs wpakuj do aplications.
|
|
|
8.09.2014, 21:43:58
Post
#10
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 3 Dołączył: 9.12.2013 Ostrzeżenie: (0%) |
Chciałbym później użyć libs w aplikacji backendowej, więc odpada
|
|
|
8.09.2014, 21:55:09
Post
#11
|
|
Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) |
Chciałbym później użyć libs w aplikacji backendowej, więc odpada Dlaczego? Nie możesz zastosować normalnej struktury? Kod src
src/Application -------------------- Google knows the answer...
|
|
|
8.09.2014, 22:03:25
Post
#12
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 3 Dołączył: 9.12.2013 Ostrzeżenie: (0%) |
Mógłbyś mi rozpisać prawidłową strukture MVC?
Byłbym wdzięczny |
|
|
8.09.2014, 22:10:06
Post
#13
|
|
Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) |
Mógłbyś mi rozpisać prawidłową strukture MVC? Nie chcę Ci zmartwić, ale... nie ma czegoś takiego Obecnie spora część projektów, korzysta z loadera z PSR-0, co wiąże się z pewnymi wymaganiami odnośnie struktury. Zobacz na ten projekt na Githubie: https://github.com/thephpleague/flysystem. Masz główny katalog src (ewentualnie lib - jest to główny katalog Twojej aplikacji), katalog tests (gdzie siedzą testy). Przykładowa struktura biblioteki z namespacem Foo: Kod src/ src/Foo src/Foo/Parsers src/Foo/Parsers/HtmlParser src/Foo/Builder src/Foo/MenuBuilder Coś takiego. Mam nadzieję, że załapiesz. Poczytaj sobie poza tym, PSR - warto wiedzieć i wdrażać. -------------------- Google knows the answer...
|
|
|
8.09.2014, 22:13:29
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
1. MVC to jedynie wzorzec architektoniczny i nie ma on ścisłej implementacji - w przeciwieństwie do samej jego definicji.
2. Jeżeli chodzi o strukturę plików w projekcie to właściwie nie ma o czym mówić: PSR-0 oraz jego następna PSR-4 właściwie kończą temat. 3. Jeżeli chodzi o implementację autoloadera to rzuć okiem na tego udostępnianego przez Composera (zresztą w ogóle rzuć okiem na to narzędzie). W środowisku deweloperskim właściwie w pełni przejmuje to zadanie od programisty (można by powiedzieć, że jest to najoptymalniejszy autoloader względem czasu programisty), a w środowisku produkcyjnym wygeneruje Ci zoptymalizowany pod względem czasu działania autoloader. Ten post edytował Crozin 8.09.2014, 22:14:13 |
|
|
10.09.2014, 12:33:40
Post
#15
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 3 Dołączył: 9.12.2013 Ostrzeżenie: (0%) |
Dziękuje wszystkim za udzielanie się tutaj, będę praktykował standardy narzucane przez PSR, a także zobaczę narzędzie wspomnianie przez @Crozin.
Witam ponownie, by nie zaśmiecać forum piszę tutaj. Mianowicie mam jeszcze jeden problem, napotkałem go przy ładowaniu PDO z SplClassLoader Kod Warning: require(C:\WebServ\httpd\mvc\Application\Libs\PDO.php) [function.require]: failed to open stream: No such file or directory in C:\WebServ\httpd\mvc\Application\Libs\SplClassLoader.php on line 152
[php][/php] Ten post edytował Ultear 10.09.2014, 12:45:01 |
|
|
10.09.2014, 13:06:34
Post
#16
|
|
Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) |
Msz zagadkę ma dziś Poprawiłem Twój kod, ale nie wyjaśnię, spróbuj dojść do tego sam, jak będziesz miał problemy, to pisz, ale spróbuj chociaż.
-------------------- Google knows the answer...
|
|
|
10.09.2014, 13:44:40
Post
#17
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 3 Dołączył: 9.12.2013 Ostrzeżenie: (0%) |
Już widzę
Chodzi o \ przy PDO, dziękuje zap moc Z tego co się domyślam jest to nadpisanie przestrzeni nazw, tak? Niestety wciąż uzyskuje błąd :c Kod Warning: require(X:\Server\mvc\Application\Libs\PDO.php) [function.require]: failed to open stream: No such file or directory in X:\Server\blog\Application\Libs\SplClassLoader.php on line 152 Fatal error: require() [function.require]: Failed opening required 'X:\Server\mvc\Application\Libs\PDO.php' (include_path='.;C:\php\pear') in X:\Server\mvc\Application\Libs\SplClassLoader.php on line 152
Ten post edytował Ultear 10.09.2014, 13:45:04 |
|
|
10.09.2014, 13:44:41
Post
#18
|
|
Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) |
Nie nadpisanie, ale przestrzeń globalna: http://php.net/manual/en/language.namespaces.global.php.
-------------------- Google knows the answer...
|
|
|
10.09.2014, 13:59:28
Post
#19
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 3 Dołączył: 9.12.2013 Ostrzeżenie: (0%) |
Wciąż mam problem, pomimo dodania \ wciąż autoloader chce mi czytać z Libsów
|
|
|
10.09.2014, 14:05:49
Post
#20
|
|
Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) |
A Ty coś ten autoloader modyfikowałeś? Jeśli tak, wklej go tutaj, aczkolwiek wszystko powinno działać.
-------------------- Google knows the answer...
|
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 03:04 |