Hata Denetimi


    × Bunları biliyor muydunuz?
"Şablon sihirbazında (Wizard) (5.5.60) sürümünden beri döngülerin sonunda kullanılan : sembolünün kullanım zorunluluğu kaldırılmıştır."


Hata denetimi projenizde hangi hatanın oluşması durumunda nasıl davranması gerektiğini belirlemeniz için yapılır. Aşağıda projenizde hata ile karşılaşılması durumunda sistemin nasıl davranacağını belirleyebileceğiniz ayar yapılandırmaları yer almaktadır.

 

# Yapılandırma


Belirtilen dosyada yer alan ayarlar ve kullanımları şöyledir.

Yapılandırma: Config/Project.php
Error
string $mode = 'development' Projenin hangi modda çalıştığıdır. Hata denetimi yapabilmek için bu modda kalması gerekir.
int
$errorReporting = E_ALL
Hangi hata türlerinin raporlanacağıdır. Ön tanımlı olarak tüm hata türleri açıktır.
array $escapeErrors = [] Hangi hata türlerinin dikkate alınmayacağıdır. Bu diziye hata türlerinin isimleri yazılabileceği gibi numarası da yazılabilir.
array
$exitErrors = [0, 2]
Hangi hata türlerinde sistem çalıştırılmasının durdurulacağıdır.
 

 

# Mode


Projenin yayın modudur. Projenin geliştirilme aşamasında yada yayında iken hata denetimin açık olup olmaması sağlanır.

Seçenekler
development Bu seçenek proje geliştirme aşamasında tavsiye edilir. tüm hata denetimlerini açık hale getirir.
publication Bu seçenek proje yayına alındığında tercih edilmelidir. Kullanıcıların olası hata veya kod kesintileri ile karşılaşmaması sağlanır.
restoration Bu seçenek proje üzerinde belli bölümlerde çalışma yapılacağı zaman tercih edilmelidir.  Hem kullanıcılar olası hatalarla karşılaşmamış olur hemde çalışma yapılan bölüm için hata denetimi açık hale getirir.
Kullanım
'mode' => 'publication'

 

 

# Error Reporting


ZN Framework hata denetim sistemini açmak veya kapatmak için kullanılır.

Seçenekler
E_ALL Hata denetimi açık hale gelir.
0 Hata denetimi kapalı hale gelir. 
Kullanım
'errorReporting' => E_ALL 

 

 

# Escape Errors


Hangi hata türlerinin görmezden gelineceğini belirlemek için kullanılır. Yani genellikle tanımsız değişken veya dizi nesnelerine yönelik alınan undefined türü hataları kapatmak için kullanılabilir.

Seçenekler

Aşdağıdaki dizide yer alan anahtar veya değerler bu ayar dizisine tanımlanabilir.

Hata Kodu Hata Adı Açıklama
1 ERROR Ölümcül çalışma anı hataları. Bellek ayırma sorunu gibi giderilemeyen hatalar bu sınıfa girer. Böyle hatalar betiğin çalışmasının durmasına sebep olur.
2 WARNING Çalışma anı uyarıları (ölümcül olmayan hatalar). Betiğin çalışması durmaz.
4 PARSE Derleme anı çözümleme hataları. Çözümleme hatalarını sadece çözümleyici üretir.
8 NOTICE Çalışma anı bildirimleri. Betikte bir hataya sebep olabilecek fakat betiğin normal çalışmasını esnasında oluşmayabilecek bir şeylerin saptandığını belirtir. Bu hata türleri PHP 8 ile beraber WARNING olarak üretilmektedir.
16 CORE_ERROR PHP'nin başlatılması sırasında oluşan ölümcül hatalar. PHP çekirdeği tarafından üretilmesi dışında ERROR gibidir.
32 CORE_WARNING PHP'nin başlatılması sırasında oluşan uyarılar (ölümcül olmayan hatalar). PHP çekirdeği tarafından üretilmesi dışında WARNING gibidir.
64 COMPILE_ERROR Ölümcül derleme anı hataları. Zend betik motoru tarafından üretilmesi dışında ERROR gibidir.
128 COMPILE_WARNING Derleme anı uyarıları (ölümcül olmayan hatalar). Zend betik motoru tarafından üretilmesi dışında WARNING gibidir.
256 USER_ERROR Kullanıcı üretimi hata iletileri. PHP işlevi trigger_error() tarafından PHP kodunda üretilmesi dışında ERROR gibidir.
512 USER_WARNING Kullanıcı üretimi uyarı iletileri. PHP işlevi trigger_error() tarafından PHP kodunda üretilmesi dışında WARNING gibidir.
1024 USER_NOTICE Kullanıcı üretimi bildirim iletileri. PHP işlevi trigger_error() tarafından PHP kodunda üretilmesi dışında NOTICE gibidir.
2048 STRICT Yazdığınızı PHP kodunun ileriye dönük uyumluluğunu ve birlikte çalışabilirliğini en iyilemek amacıyla PHP tarafından yapılan önerileri etkin kılar.
4096 RECOVERABLE_ERROR Yakalanabilir ölümcül hata. Tehlikeli olma olasılığı bulunan bir hata oluştuğunu fakat yorumlayıcıyı kararsız durumda bırakmadığını belirtir. Hata, kullanıcı tarafından bir eylemci tanımlanarak yakalanmadığı takdirde betik ERROR hatasıyla sonlanır.
8192 DEPRECATED Çalışma anı bildirimleri. Gelecek sürümlerle çalışmayacak kodlar hakkındaki uyarıları etkin kılar.
16384 USER_DEPRACATED Kullanıcı üretimi kullanımı önerilmiyor bildirimleri. PHP işlevi trigger_error() tarafından PHP kodunda üretilmesi dışında DEPRECATED gibidir.
32767 ALL Desteklenen (PHP 6'da STRICT dışında kalan) tüm hatalar ve uyarılar.
Kullanımı
Dosya: Controllers/home.php
<?php namespace Project\Controllers;

class Home extends Controller
{
    public function main()
    {
        echo $undefined;

        echo 'Code Continue';
    }   
}
Type :NOTICE
Error:Undefined variable: undefinedFile :/var/www/html/Projects/Example/Controllers/home.php
Line :7

Code Continue
'escapeErrors' => ['NOTICE']
Code Continue
Uyarı: NOTICE uyarı türleri PHP 8'de WARNING olarak üretilmektedir.

PHP 8 de benzer denetimi yapmak için aşağıdaki gibi kullanabilirsiniz. İleride bu tip kullanımdan kaynaklanan hataları almamak için aşağıdaki gibi düzenleme yapabilirsiniz.

'escapeErrors' => ['NOTICE', 'WARNING']

 

 

# Exit Errors


Oluşan hata türlerinden hangilerinde kod akışının durdurulacağına karar vermek için kullanılır. Yani dizi içinde belirtilen değerlerin türüne göre oluşan hatalarda kod akışı exit ile sonlandırılırken diğerlerinde kod akışı devam eder.

Seçenekler

Escape Errors seçenekleri ile aynıdır.

Kullanımı 
'exitErrors' => [2, 'NOTICE']
Type :NOTICE
Error:Undefined variable: undefinedFile :/var/www/html/Projects/Example/Controllers/home.php
Line :9
Uyarı: NOTICE uyarı türleri PHP 8'de WARNING olarak üretilmektedir.