Czy w PHP mogę dołączyć katalog skryptów?
tj. zamiast:
include('classes/Class1.php');
include('classes/Class2.php');
czy jest coś takiego:
include('classes/*');
Nie można znaleźć dobrego sposobu na włączenie kolekcji około 10 podklas dla konkretnej klasy.
get_include_path()
nadal nie może automatycznie określić kolejność załadunku (klasa bazowa może być załadowany po dłuższym klasy, w wyniku błędów)Oto sposób, w jaki dołączam wiele klas z kilku folderów w PHP 5. To zadziała tylko, jeśli masz klasy.
źródło
Zdaję sobie sprawę, że jest to starszy post ALE ... NIE ZAWIERAJ SWOICH ZAJĘĆ ... zamiast tego użyj __autoload
Wtedy za każdym razem, gdy wywołasz nową klasę, która nie została jeszcze uwzględniona, php automatycznie uruchomi __autoload i załączy ją dla ciebie
źródło
Jeśli używasz php 5, możesz zamiast tego skorzystać z automatycznego ładowania .
źródło
to tylko modyfikacja kodu Karstena
źródło
Jak to zrobić w 2017 roku:
Zalecane w dokumentacji PHP tutaj: Klasy autoloadingu
źródło
autoload
wejdzie do gry tylko wtedy, gdy ktoś spróbuje np. Stworzyć obiekt klasy, który nie został jeszcze załadowany.Możesz użyć set_include_path :
http://php.net/manual/en/function.set-include-path.php
źródło
classes/
przy użyciuinclude
/require
Jeśli chcesz uwzględnić wszystko w katalogu ORAZ jego podkatalogach:
Nie zapominaj, że użyje kolejności alfabetycznej, aby dołączyć twoje pliki.
źródło
The entries are returned in the order in which they are stored by the filesystem.
- php.net/manual/en/function.readdir.phpJeśli chcesz dołączyć kilka klas bez konieczności definiowania każdej klasy na raz, możesz użyć:
W ten sposób możesz po prostu zdefiniować klasę w pliku php zawierającym klasę, a nie całą listę
$thisclass = new thisclass();
Co do tego, jak dobrze obsługuje wszystkie pliki? Nie jestem pewien, czy może to spowodować nieznaczne zmniejszenie prędkości.
źródło
Jeśli nie ma żadnych zależności między plikami ... oto funkcja rekurencyjna, aby dołączyć WSZYSTKIE pliki php we WSZYSTKICH podkatalogach:
źródło
źródło
Sugeruję użycie funkcji readdir (), a następnie zapętlenie i dołączenie plików (patrz 1. przykład na tej stronie).
źródło
Nie pisz funkcji () w celu dołączenia plików do katalogu. Możesz utracić zakresy zmiennych i być może będziesz musiał użyć „globalnego”. Wystarczy zapętlić pliki.
Możesz również napotkać trudności, gdy dołączony plik ma nazwę klasy, która będzie rozciągać się na inną klasę zdefiniowaną w innym pliku - która nie jest jeszcze uwzględniona. Więc uważaj.
źródło