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:
- Sadece iyi çalışır? Ben potansiyel sorunlar çalıştırmak olabilir?
- Eğer değilse, kod örnekleri burada
=& new
= new
PHP 5.3 davranışı değişecektir ile değiştirilmesi. - Bu popüler kütüphanelerin herhangi örnekleri bir soruna neden olduğu bilinmektedir olacaktır.
- 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.