2012-12-15 12 views
9

Zaczynam używać Composer w projekcie, w którym historycznie miałem wszystkie zależności pod kontrolą wersji.Mechanizm ładujący Composer vs Symfony 2

Ten projekt obecnie korzysta z Symfony 2 autoloader. Ponieważ Composer ma własny mechanizm automatycznego ładowania (vendor/autoload.php), zastanawiam się, czy nadal potrzebuję korzystać z Symfony ClassLoader.

Zakładam, że mogę po prostu używać autoloadera kompozytor autoload moje zajęcia projektowe, a także:

$loader = require 'vendor/autoload.php'; 
$loader->add('MyProject', 'src'); 

Czy jest jakaś wada w użyciu autoloadery Composer dla całego projektu?

Czy istnieją funkcje autoloadera Symfony, których nie znajdę w autoloaderze Composer?

Odpowiedz

13

Możesz po prostu zamówić autoloader kompozytora. Jedyne, czego mu brakuje, to ApcClassLoader, który przyspiesza działanie z APC, ale wprowadza pewną złożoność (trzeba wyczyścić pamięć podręczną podczas wdrażania). Używanie opcji -o oznaczającej kompozytor (przy instalacji lub uruchomieniu automatycznego zrzutu pamięci) da ci mapę klasy, która jest mniej więcej równa APC pod względem szybkości, ale bez złożoności.

+0

Aby użyć opcji -o (--optimize), należy wygenerować mapę klasy z "dump-autoload-comptoser -optimize" na każdym wdrożeniu, zamiast czyścić pamięć podręczną, ale zgodził się, że jest o wiele bardziej niezawodny. Bardzo łatwo uzyskać konflikty kluczy podręcznych między etapami lub wydaniami, nawet jeśli wyczyścisz pamięć podręczną we właściwy sposób, jak opisano tutaj: http://stackoverflow.com/a/12859565/160565 –