1. Brak wsparcia dla Composera.
2. Niby wykorzystujesz przestrzenie nazw, a mimo to korzystasz ze Starej_Konwencji_Nazewnicta.
3. Ten "prosty" autoloader jest zbędny.
4. Interfejs Downloadera jest źle napisany. W żaden sposób nie umożliwia przekazania linku do filmu, który chcemy pobrać.
Sam interfejs dla użytkownika też do najwygodniejszych nie należy. Trzeba ręcznie na podstawie filmu określić z czego skorzystać, a to mogłoby być zrobione automatycznie. Wystarczyłaby jakiś obiekt skupiający wszystkie Downloadery, gdzie każdy z nich implementując interfejs Downloader ma metodę
supports($url) zwracająca TRUE/FALSE. W użyciu wyglądałoby to już całkiem sensownie:
$downloader = ...;
echo $downloader->get('http://sprocked.com/movie/show/ORGa')->getLink(); echo $downloader->get('http://video.anyfiles.pl/videos.jsp?id=32364')->getLink();
Wnętrze metody get():
public function get($url) {
// rzuc wyjatkiem gdy $urlParts nie jest poprawne
foreach ($this->downloaders as $downloader) {
if ($downloader->supports($urlParts)) { // albo samo $urlParts['host']
return $downloader->get($urlParts);
}
}
// rzuc wyjatkiem, nie ma czego zwrocic
}