@sseffa, Laravel 4 içerik yönetim sisteminden sonra bu yeni çalışmanız için de sizi kutluyorum. Bununla birlikte çalışmanızla ilgili önerilerim olacak. Bu önerileri değerlendirirken Kapağının Altındaki Laravel: Facade (
http://serginari.com/blog/kapaginin-altindaki-laravel-facade/) ve Laravel Paketleri Laravel Yolundan Gidiyor mu? (
http://serginari.com/blog/laravel-paketleri-laravel-yolundan-gidiyor-mu/) başlıklı yazılarımı okumanızı kuvvetle tavsiye ederim.
Laravel Facade'ın en önemli gerekçesi test edilebilirliği kolaylaştırmak amacıyla, "statik property ve metodlar barındırmayan sınıfları" statik sözdizimi aracılığıyla kullanabilmektedir.
1- Paketinizde Facade kullanmanıza karşın VideoApi sınıfınız statiktir. Sınıfınız oluşturucu metodla oluşturulmalı ama Facade aracılığıyla static gibi erişilebilmelidir.
2- Örneklerinizde sınıfı $videoApi = VideoApi::getInstance('youtube'); şeklinde açıktan oluşturmak zorunda kalıyor, ayarlamalar v.s. yapıp birkaç metod kullandıktan sonra çıktı alıyorsunuz. Laravel'de beklediğimiz ise, şöyle bir sözdizimidir: VideoApi::setType('youtube')->setId($id)->getVideoList();
hatta sınıf metodları uygun ayarlanarak kısaca,
VideoApi::getVideoList('youtube', $id)
diyebilmeliyiz. Böylece kod tekrarından da kurtulmuş oluruz. VimeoApi ve YoutubeApi'nin birçok metodunun gövde kısımları birbirinin tıpatıp aynısı olduğuna göre bence doğrudan VideoApi sınıfında protected bazı özellikler ayarlanarak vimeo veya youtube tipleri ve id ayarlanabilir. Yine bazı protected metodlarla da kod tekrarlarında uzak durulabilir. Böylece rota tanımlamalarınız da
Route::get('video/{type}/{id}/{listveyadetay}', function (......... gibi olabilir.
3- Paket yapımında sık karşılaştığım ve sizin pakette de gördüğüm bir yanlış da, servis sağlayıcısının defer propertisinin false ayarlanmasına karşın provides metodu'nun da koyulmuş olmasıdır. Gerçi siz bu metoddan boş biz dizi döndürmüşsünüz ama provides metodu sadece defer özelliği true ayarlanmış ise implemente edilmek zorundadır.
4- Paket kurulumunda VideoApi aliasının ayarlanmasını öneriyorsunuz, ama servis sağlayıcınızdaki register metodunda da bu aliası ekletiyorsunuz.
Bir de küçük bir düzeltme gerekiyor: getVideoDetail metodunun döndürdüğü dizinin altıncı anahtarı Vimeo için upload_date iken youtube için uploaded'dir. Sanırım, bunların aynı olması gerekir.
Tekrar başarılar diliyorum.