![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 3.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym zapytać, czy da się skłonić funkcję "autoload" do ładowania klas z dwóch różnych folderów, w zależności od przekazywanego parametru.
Mam prosty framework, a w nim dwa katalogi: core\classes i app\controllers chciałbym wywołać funkcję z core, np. db::get(); - i załadować klasę z core\classes\db_class.php a równocześnie załadować właściwy kontroler z app\controllers\pages_controller.php funkcja autoload może ładować brakujące klasy, ale czy da się nią pokierować w zależności od jakiegoś parametru? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Zamiast korzystać z __autoload() skorzystaj z spl_register_autoload i utwórz dwa osobne autoloadery.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 37 Pomógł: 7 Dołączył: 21.11.2004 Skąd: Kraków / Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Można zrobić np tak. Nazwy klas tworzysz według takiego wzorca:
core_classes_dbClass.php A autoload tak wygląda:
Czyli każde _ to jest spearator katalogów. Możesz oczywiście korzystać z innego wzorca nazewnictwa, ja do tego dorzucam zawsze class (u mnie by to było: class.db.php). Pamięasz o dobrym nazewnictwie i problem z głowy ![]() W twoim konkretnym przypadku, musiałbyś z nazw plików wywalić _ i dać np . -------------------- Każda dobrze napisana rzecz wciąga pod wode i zapiera dech...
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 156 Pomógł: 31 Dołączył: 23.02.2009 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
Można zrobić np tak. Nazwy klas tworzysz według takiego wzorca: core_classes_dbClass.php Albo zamiast tworzyć przydługie nazwy plików, możesz skorzystać z http://pl2.php.net/manual/en/language.namespaces.php |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 4 Dołączył: 15.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nazewnictwo w PHP 5.3+ powinno być zgodne z http://groups.google.com/group/php-standar...-proposal?pli=1.
Autoload najlepiej niech odbywa się za pomocą obiektu class loader'a, na przykład. https://github.com/symfony/symfony/blob/mas...ClassLoader.php. Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 04:16 |