![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 360 Pomógł: 12 Dołączył: 17.09.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jak metoda __autoload załadować controler model i view z odzielnych katalogów
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Użyć sobie composer jako autoloader i iść w konwencje psr-4 czyli namespace do ładowania klas.
Jeśli jednak upierasz się przy tym to jako argument __autoload() dostajesz nazwę klasy którą skrypt próbuje załadować. Albo na podstawie nazwy klasy parsujesz ścieżkę albo np. tworzysz tablicę klas z ich miejscem na dysku. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 70 Pomógł: 4 Dołączył: 16.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
z tym że __autoload jest zaplanowane do usunięcia.
zalecane jest użycie spl_autoload_register() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
@pasman na prawdę? Gdzie to wyczytałeś? Bo w dokumentacji nic na ten temat nie piszą.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 360 Pomógł: 12 Dołączył: 17.09.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
dobra composer tylko że jak z tego użyć.
struktura katalogów to -app --controller ---home.php --model ---home.php --view ---home ----index.twig jak zrobie classmap app/controler, app/model to zwróci mi tylko ścieżkę do modelu jak używać namespace bo nie mogę tego rozgryżć Ten post edytował ghastblood 8.06.2015, 15:07:08 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
W pliku composer.json w głównym kat. coś takiego:
Kod { "autoload": { "psr-4": { "App\\": "app/" } } } W pliku np. controller/home.php:
w modelu:
Zmień nazwy katalogów na Wiekie litery (Controller,Model), app może zostać. Potem robisz Kod composer dump-autoload i w pliku który odpalasz np. index.php robisz np:
Potem jeśli chcesz się odwołać do kontrolera Home dajesz new App\Controller\Home(); lub użycie use App\Controller\Home; i new Home(); Ten post edytował Pyton_000 8.06.2015, 15:13:04 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 360 Pomógł: 12 Dołączył: 17.09.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
$page = new App\Controller\home();
Fatal error: Class 'App\Core\App\Controller\home' Plik index odwołuje się do $app = new App\Core\Application(); a w klasie Application chce odwołać się do App\Controller\Home(); |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 24 Dołączył: 12.05.2013 Skąd: Hamburg Ostrzeżenie: (0%) ![]() ![]() |
@pasman na prawdę? Gdzie to wyczytałeś? Bo w dokumentacji nic na ten temat nie piszą. Zaplanowane nie jest, ale ostrzegają, że może być usunięte. Cytat spl_autoload_register() provides a more flexible alternative for autoloading classes. For this reason, using __autoload() is discouraged and may be deprecated or removed in the future. @ghastblood: Pokaż dokładnie co masz plikach php. Chodzi o namespace. Bo ewidentnie coś namieszałeś. Ten post edytował Xelah 8.06.2015, 17:11:15 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Od ostrzeżenia do statusu deprecated jeszcze dużo wody minie, więc do podstawowych rzeczy wystarcza.
Dodaj \ na początku namespacze czyli \App |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
__autoload() nawet pojawi się w php7 wiec bez obaw o jego używanie
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 10.07.2025 - 11:02 |