Geniş Ekran Modu Otomatik Ekran Boyutu Font Boyutunu Azalt Font Boyutunu Azalt Font Boyutunu Normal Yap Yazdır

Karar Kontrol Mekanizması

Php 5 ile gelen yeniliklerin başında hata kontrol mekanizmasında yapılan yenilik gelmektedir. Php 4'te tüm olasılıklar mantıksal denetlemelerle yapılırken php 5'te ise tıpkı java'da olduğu gibi "try" yapısı kullanılarak, bir nevi java'yla entegrasyona gidilmekte olduğu görülüyor. Her ne kadar anlaşılması çok kolay bir yöntem olsa da, bu yöntem biraz amatör olarak değerlendirilebilir. İşte bu mantıktan yola çıkan php geliştiriciler grubu, php dilini nesne tabanlı bir dile çevirmek için çaba sarf ettiler. Aldığımız duyumlara göre java’nın web teknolojisinde tıpkı microsoft’un asp’sinde olduğu gibi jsp’de de artık farklı diller kullanabileceğiz. En azından bunun üzerinde çalışan firmalar işin sonunu getirebilirlerse java’nın altyapısından yararlanarak jsp içerisinde php, perl, python gibi dilleri kullanabileceğiz

Karar Kontrol Mekanizması

try{
        //Karar kontrolü
}
catch ( Hata olgusu ){
        //Hata olduğu takdirde yapılacak işlem
}
 
Basit olarak PHP 5 ile gelen hata kontrol mekanizması yukarıdaki gibidir. Bu mekanizma her ne kadar Java programlama diline benzese de, Java ile aynıdır demek Java programlama diline büyük haksızlık olur. Zira Java’nın içerisinde gelen büyük Java kütüphanesi PHP ile birlikte gelmiyor. Onun için PHP 5 ile Java’yı kıyaslamak büyük bir yanılgı olur.


Yukarıda verdiğimiz karar kontrol mekanizmasında, işlemin nerede yapılacağı ve işlem hatalı çıkması durumunda nelerin yapılacağını belirten “catch” mekanizmasının çalışma mantığını kavramanız için basit bir örnek vererek konumuzu somutlaştıralım.
   
<?php

$sayi = 10.1;

try
{
    if (! is_int($sayi) )

     throw new Exception("Sayı Değil");
}

catch (Exception $e)
{
die("{$e->getMessage()}");
}

echo "$sayi değişkeni sayıdır";

?>
 
 
Yukarıdaki kodu incelersek, burada oluşturduğumuz değişkene bir değer atayıp, bu değerin sayı değeri olup olmadığını bir mantıksal denetleme ile kontrol ediyoruz. Mantıksal denetlemede sayı değeri olmaması durumunda işlem yapmak için (!) ünlem işareti koyuyoruz. Belirtilen işlemin true yani doğru olarak dönmesi durumunda verilecek hata raporunu belirlemek için de “throw new Exception” kalıbını kullanıyoruz. Hata işlemi yapıldığında oluşacak pozisyonu belirlemek için catch bölümünde Exception kalıbını kullanarak, oluşan hatayı bu kalıbın önünde oluşturacağımız değişkene atıyoruz. Süslü parantezler içinde de oluşan bu hatanın ne olduğunu yazdırıyoruz. Tanımladığımız $sayi değişkenine tam sayı değeri vermediğimiz için, mantıksal denetleme doğal olarak Exception, yani oluşabilecek hata durumunda yapılacak işlemler bölümünde tanımladığımız hata metnini "{$e->getMessage()}" deyimi ile ekrana yazdırıyor..

Yukarıda gördüğünüz gibi uygulamanızdaki kodları try blogu içine yazarak istisna yöntemini kullanmaya başlayabilirsiniz. Bu blok arasına yazdığız kodlarda bir hata meydana gelirse, istisna fırlatma denilen işlemin uygulanmasını başlatılır.

İstisna Fırlatalım
throw new Wxception(‘Mesaj’,code);

throw anahtar sözcüğü ile istisna yönetimi mekanizmasını tetikleyebilirsiniz. Bu anahtar sözcük bir nesne almayı bekler.En basit durumda Php5 teki yerleşik Exception sınıfının bir örneğini oluşturabilirsiniz.

Bu sınıfa ait yapılandırıcı iki parametre alır, Bir mesaj ve bir kod.Bunlar bir hata mesajını ve bir hata kod numarasını temsil eder.

Try bloğunun altında bir tanede catch bloğu vardır. Buda fırlatılan istisnaların yakalanmasını sağlar.

Hata Kodu

Açıklaması

getMessage()

Exception bölümünde tanımlanan hata mesajını verir

getCode()

Hata kodu

getFile()

Hatanın oluştuğu dosyanın diziniyle birlikte adı

getLine()

Hata numarası

toString()

Tüm hata kodlaması


Burada verdiğimiz karar kontrol mekanizmasını çalıştırırsak karşımıza “Sayı Değil” cümlesi gelecektir. Peki bu karar kontrol mekanizmasının sonunda yazdığımız echo satırına ne oldu? Deneyimli programcılar anlayacaktır; PHP herhangi bir hatayla karşılaştığı durumda dosyanın okunmasını durdurarak, alt kısmı göz ardı etmekte. Bir nevi exit kullanmış gibi PHP okumayı kesmekte. Bu özelik if mantıksal denetlemesinde yoktu. Yukarıdaki örneği biraz değiştirelim:
 
$sayi = 10.1;

if (!is_int($sayi)) {
echo "Bu bir sayıdır";
}
else {
echo "Bu bir sayı değildir";
}
echo "Bağımsız metin";

Yukarıdaki komut yapısını çalıştırdığımızda her halükarda mantıksal denetlemenin sonundaki echo komutu çalışacaktır. Bu ayrımı göz önüne alarak programlarınızı oluşturmanızda yarar var.


PHP 5 ile gelen karar kontrol mekanizmasını daha kararlı kullanmak için bir fonksiyon oluşturup, bu fonksiyonda hata düzeneğini bir kerede tanımlayıp, istediğimizde bu fonksiyonu çağırarak işlemlerimizde kullanabiliriz.
 
<?php

function hata($e)
{
         return "Dosya adı : {$e->getFile()} <br>
        Hata numarası : {$e->getLine()} <br>
        Hata mesajı : {$e->getMessage()} <br>
        Hata kodu : {$e->getCode()}"
;
}

$sayi = 10.1;

try
{
        if (! is_int($sayi) )
        throw new Exception("Sayı Değil");
}

catch (Exception $e)
{
        die(hata($e));
}

?>
 
Yukarıda tek yaptığımız muhtemel hataların neler olacağını belirlemek için tanımladığımız fonksiyon içerisine yerleştirmekten ibaret. Fonksiyonu çağırmak için, catch özelliğinin süslü parantezleri içerisine yerleştirip, Exception alanında tanımladığımız hata içeriğini toplayan değişkeni de bu fonksiyonun parantezleri içerisine koyarak, hata özelliklerini fonksiyonun içerisine gönderiyoruz. Böylece oluşan hataları fonksiyonda tanımladığımız motoru devreye sokarak, oluşan hata argümanlarını listeleyerek oluşturduğumuz kodda nerede hata olduğunu kolayca tespit ediyoruz.


Görüldüğü gibi PHP 5 ile gelen karar kontrol mekanizması zannedildiği kadar zor bir işlem değil. Burada verdiğimiz bilgiler ışığında hata kontrol mekanizmasının işleyişinin mantığını kavradıysanız, ilerleyen sayfalarda PHP 5’i kavrama babında zorlanmayacaksınız. Zira PHP 5’i kavramanın ilk aşamasında karar kontrol mekanizması bulunmakta. Bu konuyu kavrayıp yeni nesne yönelimini de öğrenirseniz özellikle veritabanı işlemlerinde artık nesne yönelimlerini kullanarak kod geliştirerek profesyonelliğe bir adım atabilirsiniz.

  Basit exception örneği
 
<?php
function inverse($x) {
    if (!$x) {
        throw new Exception('Sıfıra bölüm hatası.');
    }
    else return 1/$x;
}

try {
    echo inverse(5) . "<br/>";
    echo inverse(0) . "<br/>";
} catch (Exception $e) {
    echo 'Yakalanan Taşma: ',  $e->getMessage(), "n";
}
?>
 

<?php
function SayiBolen($Sayi){

        $Bolunmus=$Sayi-2;

        if($Bolunmus<0){
                throw new Exception('Sayı sıfırdan küçük');
        }
        else {
                echo "$Bolunmus<br/>";
                SayiBolen($Bolunmus);
        }
}

try {
        SayiBolen(20);
}
catch (Exception $Problem){
        echo 'Hata Mesajınız '.$Problem->getMessage();
}
?>
 
  İç içe kullanılmış bir excepti
<?php
$Sayi=-2;
try {
        if($Sayi>0){
                try{
                        if($Sayi<10){
                                echo "Sayi 0 dan büyük 10 dan küçük";
                        }
                        else {
                                throw new Exception();
                        }
                }
                catch(Exception $Problem){
                        echo "Sayi 10 dan büyük";
                }
        }
        else {
                throw new Exception();
        }
}
catch(Exception $Problem){
        echo "Sayi sıfırdan küçük";
}
?>
 

Kaynak edergi.linux.org.tr/
Bu içerikle ilgili henüz herhangi bir yorum yapılmamıştır. Bu içerikle ilgili Yorumunuzu eklemek için burayı tıklayınız.

Php Dersleri

Xampp Kurulumu
Php,apache,mysql hepsini tek dosyayla kurulumu
Xampp Kurulumu
Xampp apache, mysql, php ve phpmyadmin için kolay ve basit kurulum sağlayan bir uygulamadır.
PHP kurulumu
Windows 7 Üzerine Apache, Mysql, Php ve NetBeans Kurulumu (WAMP)
PHP nedir?
HTML kodlarının arasına yerleştirilmiş php kodlarından ayrıştırıp işleyerek sonuçta saf HTML formatı...
Verileri doğrulamak için PHP ile filtreleme işleml...
Ziyaretçilerden gelen verilerin istediğimiz formata uygunluğunu kontrol etmeliyiz ki, güvenlik açığı...
Php Mysql to XML
Bu yapıyı geliştirerek mysql veritabanınızdaki datalarınızı xml standartlarına dönüştürebilirsiniz.
Utf8 İle Iso-8859-9 Dönüştürmek
Bu işlemde php nin mb_convert_encoding fonksiyonunu kullanıyoruz.
Php5 İle Xml Dosya Oluşturmak
İngilizce bir makaledir.
Php4 İle Xml Dosya Oluşturmak
İngilizce bir makaledir.
Php İle Excel Dosyası Oluşturmak
Genelde, herhangi bir biçimlendirme söz konusu olmadığında, veritabanındaki bir bilgiyi ya da başka ...
Curl(client Url Library Functions) Nedir?
Curl ile kullanıcı kontrolü nasıl yapılır?
Harici Dosya İnclude
İnclude kullanımı ve örnekler
Class İçerisinden Class Tanımlamak
İç içe klaslar oluşturmak
Php Regular Expression
İngilizce bir makaledir.
Mysql_fetch_object, Mysql_fetch_array, Mysql_fetch...
Mysql_fetch_object, mysql_fetch_array, mysql_fetch_row, mysql_fetch_assoc, mysql_result kullanımı...
Php İle Mysql Veritabanından Bilgi Çekme
Mysql_fetch_assoc, mysql_fetch_row, mysql_fetch_object, mysql_fetch_array ve mysql_result metodları
Mysql İle Veritabanı Bağlantı Fonksiyonları
Mysql_result, mysql_fetch_array, mysql_fetch_row, mysql_fetch_object
Phpde Exception İstisna Yönetimi
Phpde istisna kontrol ve yönetimi
Excepiton
Exception türkçe anlamı istisna olan kelimedir. İstisnalar php'de hata yönetimini kolay, genişletile...
En iyi 25 php template motoru
Php tabanlı web siteleri dizayn ederken, php kodlarını html kodlar arasına gömeriz. Fakat gün gel...
WinBinder İncelenmesi
WinBinder indirmek ve yüklemek , WinBinder Yapısı Hakkında Bilgiler , WinBinder Örnekleri , WinBinde...
Oop - Nesne Yönelimli Programlama
Artık ister istemez her programcının bulaştığı bu teknik hakkında sayısız makale yazılmıştır bu güne...
Nesneye Yönelimli Php
Classlarla ilgili ingilizce bir makale
Basit Class Yapılarında Kullanılan Kelimeler
New, ::, __construct, __autoload kullanımları
Classlarda Kullanılan Özel Kelimeler
Public, private, protected, extends, _construct
$_sessıon
$_sessıon[] değişkeni o anki oturumla ilgili olan değişkenleri tutmakta görevli olan varsayılan olar...
  • 1
  • 2

Ödev Gönder | İncelenmeyi Bekleyen Ödevler | Uygulama Resimleri | Uygulama Resmi Gönder | İnternet Üzerinden Sınav | Test Sorusu Gönder | Sınıf Karneleri | Anketler | Linkler
www.dijitalders.com

bilgidijitalders.com
Bu sayfalar en iyi 1024 x 768 ekran çözünürlüğünde görüntülenir.
Site içerikleri, site kullanıcıları tarafından yollanan içeriklerdir. Her hangi bir içeriğin lisanslı yahut şahsınıza ait olduğunu tarafımıza iletirseniz gerekli düzenlemeyi yapacağız. Kullanılan içerikler, siteyi kullanan öğrenciler ve araştırmacılar için kolaylık sağlamak amacıyla oluşturulmuştur.
Sayfada HATA! Olduğunu Düşünüyorsanız | Sık Kullanılanlara Ekle | www.dijitalders.com'u Ana Sayfam Yap | Web Tasarımcıya e-Posta
Bu site 845,375 kişi tarafından ziyaret edilmiştir.