it-swarm-tr.com

Joomla sürümlerinde farklı yöntem imzaları için `` Sıkı standartlar '' uyarısı nasıl çözülür

Bir uzantıyı Joomla 3.x'i destekleyecek şekilde güncellerken, bir işlev imzasının 2.5'ten beri değiştiği ve Strict standards Uyarısıyla sonuçlandığı birkaç durumla karşılaştık.

Örneğin JTable sınıfında _getAssetParentId() değişti

protected function _getAssetParentId($table = null, $id = null)
{
    ...
}

buna Joomla 3.x'te:

protected function _getAssetParentId(JTable $table = null, $id = null)
{
    ...
}

Bu küçük bir fark ama uyarıyı atmak yeterli.

Tek bir sınıf dosyası kullanarak Joomla 2.5 ve 3.0'ı destekleyen diğer uzantılara bakıldığında, sorunu görmezden geliyorlar.

Açıkçası, 3.x için uyarıyı düzeltirsek, o zaman 2.5 yükleme uyarısı verir ...

Bizim için bir seçenek olmayan "çözümler" şunları içerir:

  • iki ayrı sürüme özgü sınıf dosyası kullanma
  • uyarıları kapatma

Bu çatışmayı nasıl çözersiniz?

7
Craig

İş yerinde tüm PHP uyarıları, hataları ve katı standart ihlallerini çözmeye çalışıyoruz. İmzaların farklı olduğu gibi durumlarda, iki ayrı, sürüme özgü sınıf kullanarak bunu çözmenin bir yolu yoktur. Yine de bunun sizin için bir seçenek olmadığını merak ediyorum.

Sürüme özgü sınıf dosyalarının uygulanması gerçekten kolaydır, ancak bazı yerlerde birden fazla yerde güncelleme yapacağınız için bakımı biraz daha zordur. Bu durumda yapılacak en iyi şey, IMO, otomatik yükleme için tüm bileşen sınıflarınızı tutan bir kök src/ Klasörüne sahip olmak, ardından overrides/$VERSION Klasör. Ardından, otomatik yükleyiciyi geçerli sürüme bağlı olarak uygun yerlere uygun sırayla bakacak şekilde ayarlayabilirsiniz.

Gerçekten daha kolay bir yol olsaydı, ancak PHP imzaların eşleşmesini sağlayabileceğiniz dinamik yöntem aşırı yüklemesine izin vermez.

9
Don Gilbert

Bildiğim kadarıyla bu katı uyarıyı çözemezsiniz. Çünkü imzalar 2.5 veya 3.x'te her zaman farklı olacaktır.

Ya 3.x için düzeltin ve 2.5'te yoksayın ya da tam tersi.

Verimli bir ortamda, bu uyarıyı asla görmemelisiniz çünkü geliştirme ayarlarında yalnızca katı uyarılar göstermelisiniz.

4
Bakual

PHP'nin durumu ile ilgili büyük bir sorun var, bazı sunucular hala 5.2 kullanıyorken, diğerleri 5.3 veya 5.4'te güvende kalıyor. 5.5'te güncel kalanlar da var.

Bu, "neyi destekleyeceğiniz" konusunda büyük bir soruna yol açar. Çeşitli sürümlerin pazarına giderseniz, 5.2'nin en yaygın kullanılan, ancak güvensiz olduğunu söyleyebilirim. 5.3 ve 5.4, Joomla'nın 3'te aradığı şeydir, ancak bir kullanıcı 5.5'te ise katı standart uyarılar diğer sürümlerden farklı olabilir.

Her ne kadar PHP hataları ile üstünden geçmez, çünkü hala yapıldığına dair uyarısı, mevcut sürümün işlemek için olduğu anlamına gelmez, ancak yine de Çoğu geliştirici için, Notice ve Strict Standards uyarıları çoğunlukla göz ardı edilebilir, çünkü birini düzeltirseniz farklı bir PHP sürümünde başka birini tetikleyebilirsiniz).

Hepsini kaldırmak bir OKB geliştiricisi için en iyisidir. Açık hatalar düzeltilmelidir, ancak açıkladığınız gibi, Joomla'nın bir PHP sürümüne çok fazla) odaklanmasına ve PHP sürümü de.

Bunun tek doğru çözümü Joomla'nın PHP sürümünü test etmek ve buna dayanarak dosyaları yüklemek) için "bootstrap" 'tadır, bu Joomla taban kurulum boyutunu iki katına çıkarmanın ve herhangi bir siteyi gerçekten bozmayan hatalar için daha fazla çalışma yapılmalıdır Don Gilbert'ın cevabı bu konuya biraz daha ayrıntılı bir şekilde giriyor.

Cevabım biraz garip, ama başkalarının toplam karışıklık anlamak yardımcı olabilir hissediyorum PHP olduğunu.

1
Jordan Ramstad