PHP 5.3 ve referans olarak yeni dönüş değeri atama

0 Cevap

Referans olarak yeni dönüş değeri atama deprecated PHP 5.3 olmuştur. Bu nedenle,

$obj =& new Foo();

şimdi E_DEPRECATED hatası atar.

5.3 eski kod çok büyük bir uygulama yükseltirken, bu istenmeyen bildirimlerinin bir sürü yol açar.

Bu sorunun olası bir düzeltme olarak, ben = new ile =& new tüm örneklerini bulmak ve değiştirmek için normal bir ifade kullanarak düşünüyor yaşıyorum. Örneğin, aşağıdaki tüm PHP dosyaları bulmak ve tüm örneklerini yok edecek =& new:

find ./ -name '*.php' | xargs perl -p -i -e 's/=(\s*)&(\s*)?new\b/= new/g'

Aşağıdaki soruların cevaplarını arıyor:

  1. Sadece iyi çalışır? Ben potansiyel sorunlar çalıştırmak olabilir?
  2. Eğer değilse, kod örnekleri burada =& new = new PHP 5.3 davranışı değişecektir ile değiştirilmesi.
  3. Bu popüler kütüphanelerin herhangi örnekleri bir soruna neden olduğu bilinmektedir olacaktır.
  4. Eğer büyük miktarda sabitleme ile başa çıkmak için başka ne fikirler tavsiye edersiniz =& new?

Bu sadece iyi çalışır şüpheli, ama ben belaya çalışabilir kenar durumlarda arıyor. Evet, ben sadece hata raporlama ayarlarını değiştirmek olabilir biliyorum. Ama bunları düzeltmek istiyorum, bildirimleri gizlemek istemiyorum.

0 Cevap