yeni dönüş değeri atamak PHP 5.3 deprecated olmuştur. Bu şekilde, hatası E_DEPRECATED
hatası veriyor. 5.3 eski kod bir sürü büyük bir uygulama yükseltirkenPHP 5.3 ve referans ile yeni dönüş değeri atama referans
, bu istenmeyen duyuruların bir sürü yol açar.
Bu sorunun olası bir çözümü olarak, =& new
'un numaralı tüm örneklerini bulmak ve değiştirmek için normal bir ifade kullanmayı düşünüyorum. Örneğin, aşağıdaki tüm PHP dosyaları bulmak ve =& new
tüm örneklerini silecek:
find ./ -name '*.php' | xargs perl -p -i -e 's/=(\s*)&(\s*)?new\b/= new/g'
aşağıdaki soruların yanıtlarını Aranan:
- gayet çalışacak mı? Hangi olası sorunlara girebilirim?
- Değilse,
=& new
'un= new
ile değiştirildiği kod örnekleri, PHP 5.3'teki davranışı değiştirecektir. - Bu popüler kitaplıkların herhangi bir örneğinin bir soruna neden olduğu bilinir.
=& new
muazzam miktarlarda sabitlemeyle uğraşmak için başka hangi fikirleri önerirsiniz?
Bunun iyi çalıştığından şüpheliyim, ancak sorun yaşadığım kenar durumlarını arıyoruz. Evet, hata raporlama ayarlarını değiştirebileceğimi biliyorum. Ama uyarıları saklamak istemiyorum, onları düzeltmek istiyorum.
E_DEPRECATED, hataların değil, bildirimler sınıfına aittir. Bunu düzeltmek için acele etmeniz gerekmediğinden emin değilim (magic_quotes, php 4.2'de onaylanmamış olarak bildirilmişti). Regex'e gelince: 'new''den sonra' \ b 'eklemelisiniz, ancak aksi takdirde uygulanabilir bir yeniden yazma yaklaşımı var. Ancak, yalnızca beklenen işlem mantığını (eğer olası değil) bozduğunu test edebilirsiniz. – mario
@mario E_DEPRECATED sadece bir hata * seviyesi *. Her iki şekilde de başvurmak uygun olur. Bununla birlikte \ b ile iyi bir nokta. – mfonda