Yazılar
Mühendislik

GLPI 11 ve 12 için tek kod tabanı: nelere dikkat ettim

Aynı eklentiyi iki büyük sürümde tek paketle dağıtmak mümkün; ama birkaç tuzağı önceden bilmek gerekiyor.

Kasım 20265 dk okumaGLPI · PHP

Sayru-Yön eklentilerinin hepsi GLPI 11 ve 12 kurulumlarında aynı zip ile çalışıyor. Bunu seçmemin nedeni basit: müşteriler aynı anda farklı sürümlerde ve iki ayrı dal bakımı iki kat hata demek. Aşağıdakiler, bu kararı alırken en çok zaman kaybettiren noktalar.

Tip bildirimli özellikler

GLPI 12, bazı sınıf özelliklerini tip bildirimli hale getirdi. 11'de alışkanlıkla public $dohistory = true; yazdığınız yerde 12, üst sınıftaki public bool $dohistory ile çakıştığı için ölümcül hata veriyor. Çözüm, özelliği üst sınıfın bildirimiyle birebir aynı tipte yazmak; 11 bundan rahatsız olmuyor.

// 11 ve 12'de birlikte çalışır
public bool $dohistory = true;
public static $rightname = 'plugin_ornek';

Ön yüz sayfaları ve CSRF

Form action değerini PHP_SELF'ten almak 11'de sessizce kırılıyor; adresi kendiniz yazın. CSRF denetimini de elle çağırmayın, çekirdek bunu zaten yapıyor ve ikinci çağrı belirteci tüketiyor.

Küçük ama ölçülebilir bir hız kazancı

Eklentinin locales klasörü boşsa her __() çağrısı yaklaşık 0,16 ms'ye mal oluyor; yüzlerce çağrı olan bir sayfada bu hissediliyor. Boş bir en_GB.mo dosyası göndermek yeterli.

Test kurulumu

Her iki sürüm için ayrı test kurulumu tutuyorum ve paket oraya ilk kez müşteride değil, orada açılıyor. Sürüm atlamadan önce yükleme kontrolü (loadcheck) tüm sınıfları bir kez yükleyip tip hatalarını yakalıyor.

  • Sürüm sabitini çekirdek açılmadan önce tanımlamayın; paylaşılan kurulumda eklentiyi devre dışı bırakıyor.
  • Kurulum SQL'inde MariaDB'ye özgü sözdizimi kullanmayın; müşteri MySQL 8 olabilir.
  • Güncellemeler eklemeli olsun: mevcut raporu, kuralı, hakkı asla yeniden yazmayın.
yeni projelere açıkBirlikte çalışalım