Zgodnie z podręcznikiem Cake App::import()
jest porównywalny ze sposobem, w jaki działa require_once()
. Z tego co rozumiem, można załadować klasy przy użyciu App:uses()
i plików dostawców przy użyciu App:import()
.
Dokumentacja API mówi the following na ten temat:
Wszystkie klasy, które zostały załadowane w przeszłości przy użyciu App::import(‘Core’, $class)
będą musiały być ładowane przy użyciu App::uses()
odnosząc się do właściwego opakowania. Ta zmiana zapewniła dużą wydajność w ramach.
- Metoda nie wygląda na zajęcia rekurencyjnie, to bezwzględnie wykorzystuje wartości dla ścieżek zdefiniowanych w
App::build()
- to nie będzie w stanie załadować
App::import('Component', 'Component')
korzystanie App::uses('Component', 'Controller');
.
- Ładowanie klas podstawowych nie jest już możliwe przy użyciu
App::import('Lib', 'CoreClass');
. Zaimportowanie nieistniejącego pliku, podanie niewłaściwego typu lub nazwy pakietu, lub wartości parametrów dla parametrów i $file
spowoduje fałszywą wartość zwracaną.
App::import('Core', 'CoreClass')
nie jest już obsługiwany, zamiast niego należy użyć App::uses()
, aby umożliwić autoloadingowi klasy zajmij się resztą.
- Ładowanie plików dostawców nie wygląda rekurencyjnie w folderze dostawców, nie będzie również konwertować pliku na podkreślony, tak jak to miało miejsce w przeszłości.
Przewodnik migracji ma również some things to say o App:uses()
i jest dobrym punktem wyjścia w ogóle porównać najlepsze praktyki do 2,0 ze starszymi metodami z 1,3 i niższy.
This related question oferty z plikami ładowanie dostawcy w Placek 2.0, nie mogę zweryfikować twierdzenie przez Jose Lorenzo że App:import()
jest „głupie wrapper” dla require_once()
, ani stwierdzenie, że jest to preferowany sposób w tym pliki. Jedyne odniesienie, jakie mogłem znaleźć dla tego ostatniego, to Coding Standards dla twórców ciastek, a mianowicie. programiści wnoszący wkład do rdzenia Ciasta, a nie aplikacje oparte na strukturze.
EDIT
Powiedzmy chcesz zaimportować Twitter OAuth library, zamieszkały w Vendor/twitter
, główny plik klasy jest twitteroauth.php
w Vendor/twitter/twitteroauth/twitteroauth.php
:
App::import('Vendor', 'twitteroauth', array('file' => 'twitter'.DS.'twitteroauth'.DS.'twitteroauth.php'));
proste. Bezpośredni. Poprawny. Dziękuję Ci! – zmonteca