Workbench ve Composer Paketleri Karışması
Workbench üzerinde bir paket geliştiriyordum. Paketim bir kaç pakete bağımlıydı. Kendi composer.json dosyasına bağımlılıkları tanımladım ve update işlemini gerçekleştirdim. Ancak app'in bağlı bulunduğu paketler arasında da aynı paket varmış. Şuanda güncellemeye çalıştığım zaman aşağıdaki hatayı alıyorum.
Fatal error: Cannot redeclare crypt_random_string()
Bu sorunu nasıl çözebilirim? Paket geliştirmesi yaparken ana uygulamadan ayrı bir laravel uygulaması üzerinde mi geliştirme yapmam gerekiyor?
Bağımlılıkların böyle bir sorun çıkaracağını sanmıyorum.
Paket bağımllılıkları konusunda larevelin core yapısıda diğer paketler gibi çalışır. Paket başka bir pakette varsa ve yüklenmişse tekrar yüklemez. Bu bağımlılık yönetiminin tek amacı gerekli paketleri yüklemek değil aynı zamanda aynı paketleri kullanan diğer paketler için yeniden yüklemeyi engellemektir.
Cevap için teşekkür ederim. Workbench üzerinde çalıştığım paketteki tüm bağımlılıkları kaldırdım ve composer update yaptım. Daha sonrasında tekrar aynı paketleri ekledim ve yeniden update yaptım sorun düzeldi.
Dünden beri bu sorunu nasıl çözerim diye uğraşıyordum. Takıltılıyım galiba biraz. Sorunu istediğim paketi kullanarak çözdüm ve çözümü paylaşmak istedim.
Workbench üzerinde çalıştığım paketin testlerini yazmak için kullanışlı bir sınıf bulmuştum. (orchestral/testbench) Bu paketi composera ekledikten sonra bir başka bağımlı paket iniyordu. (phpseclib/phpseclib) Bu paketin içeriğinde ise bir method daha önce app'de de bulunduğundan çakışıyordu ve konuya sorun olan hatayı karşımıza çıkartıyordu.
Cannot redeclare crypt_random_string()
Test için kullandığım testbench paketini composer'a ekledikten sonra ("orchestra/testbench": "2.1.*") aşağıdaki bölümü de composer dosyasına ekliyorum.
Bu eklediğim bölümde sorun çıkartan kütüphanenin çalışan sürümü dahil edilmiş oluyor anladığım kadarıyla. Bu da bizim sorunumuzu çözmüş oluyor.