PHP 5'de basit bir karar-kontrol mekanizması
PHP 5'de karar kontorol mekanizması değiştiği önceki makalemizde söylemiştik.Şimdi ise karar kontol mekanizması hakkında basit bir örnek vereceğiz. Aşağıda ki kod yapısında karar kontrol mekanizmasını try ile gerçekleştiriyoruz ama hata kodlarını bir fonksiyonda topluyoruz.
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?
#Hata oluştuğunda çalışacak fonksiyon
function hata ( Exception $hata )
{
$mesaj = "<h2>Hata:</h2>"
."Hata Kodu: {$hata->getCode()} <br />\n"
."Hata Mesajı: {$hata->getMessage()} <br />\n"
."Hata Satırı: {$hata->getline()} <br />\n"
."Hata Dosyası: {$hata->getFile()}";
return ($mesaj);
}
#işlem yapan fonksiyon
function deneme ($toplam, $n)
{
if ( $n == 0 )
throw new Exception("Belirtilen Sayı 0");
return ( $toplam / $n );
}
#hata kontrol mekanizması
try
{
$a = deneme(100,0);
print "Deneme = {$a}";
}
catch (Exception $hata)
{
print hata($hata);
}
?>
Yukarıda ki kod yapısını satır satır anlatacak değilim.Önemli olan bikaç noktaya parmak basmak isterim.Öncelikle şunu belirtmek isterim:Kodları oluştururken bırakında kod yazın.Birkaç satırlık kod yazarak sistem mimarisi yapmayın.
Hata çıkması durumunda çalıştıracağımız bir fonksiyon oluşturup, bu fonksiyonda hata kodlarını çıkartıyoruz."Hata kodları belirttim, ayrıca açıklamaya lüzum yok"
İkinci fonksiyonda ise değişkenin değerinin 0 olup olmadığını test ediyoruz.
Sistem mimarisinde hata kontrol mekanizması için de, try sisteminden yararlanıyoruz.Hata kontrol mekanizmasında fonksiyonu çağırıp 100 ve 0 sayısını fonksiyona iletiyoruz.
Yukarıda basit bir kod oluşturduktan sonra bu uygulamayı azcık somutlandırmak için başka veritabanı işlemi oluşturalım.Önce MySQL 4.1 için gerekli Tablo ve verilerini verelim.
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
CREATE TABLE uyeler (
no int(10) unsigned NOT NULL auto_increment,
adi varchar(20) NOT NULL default '',
soyadi varchar(20) NOT NULL default '',
user varchar(15) NOT NULL default '',
pass varchar(8) NOT NULL default '',
KEY no (no)
) ENGINE=MyISAM;
INSERT INTO uyeler VALUES (1,'İlknur','Yılmaz','ilknur','123456');
INSERT INTO uyeler VALUES (2,'Birgül','Er','birgul','450416');
INSERT INTO uyeler VALUES (3,'Fatma','Saraç','fatma','45116');
INSERT INTO uyeler VALUES (4,'Gülden','Onat','gulden','213456');
SQL kodunu verdikten sonra sıra geldi MySQL veritabanı bağlantısı için gerekli olan nesnemizi oluşturmaya.Klasik nesne ile MySQL bağlantısından biraz farklılık göstermekle beraber mantık silsilesi yine aynı.
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?
class mysql
{
private $host;
private $user;
private $pass;
private $db;
private $baglanti;
private $query;
private $result;
public function __construct($host, $user, $pass, $db) {
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
$this->db = $db;
}
public function connection()
{
try
{
$this->baglanti = new mysqli($this->host,$this->user,$this->pass,$this->db);
if ( ! $this->baglanti )
throw new Exception("MySQL veritabanına Bağlanamadım");
}
catch (Exception $error)
{
die("{$error->getMessage()} {$error->getLine()}");
}
}
public function sorgu($query)
{
try
{
$this->result = $this->baglanti->query($query);
if ( ! $this->result )
throw new Exception("Sorgumuz çalışmadı");
}
catch (Exception $error)
{
die("{$error->getMessage()} {$error->getLine()}");
}
return $this->result;
}
public function veriListeleme()
{
try
{
echo "<table width='50%' border=1 align='center'>
<tr>
<td>No</td>
<td>Adı</td>
<td>Soyadı</td>
<td>User</td>
<td>Pass</td>
</tr>";
while ( $oku = $this->result->fetch_assoc()) {
echo "<tr>
<td>$oku[no]</td>
<td>$oku[adi]</td>
<td>$oku[soyadi]</td>
<td>$oku[username]</td>
<td>$oku[PASSWORD]</td>
</tr>";
}
$this->result->close();
echo "</table>";
}
catch (Exception $error)
{
die("{$error->getMessage()} {$error->getLine()}");
}
}
public function kop()
{
return $this->baglanti->close();
}
}
?>
Yukarıda ki komut yapısında dikkat edilmesi gereken en önemli husus en başta yer alan __construct fonksiyonu.Bu fonksiyon olmadan nesnemizin sabit değişkenleri görevini yürütemez.Ayrıntılı bilgi için:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Diğer fonksiyonlar yukarıda gösterdiğimiz gibi try karar-kontrol mekanizmasıyla oluşturuluyor.Yukarıda ki komut satırını mysql.class.php adıyla kaydedin.
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?
include("mysql.class.php");
$nesne = new mysql("localhost","root","","test");
$nesne->connection();
$nesne->sorgu("select * from uyeler");
$nesne->veriListeleme();
$nesne->kop();
?>
Yukarıda ki komut satırında da MySQL için verileri listelemek için nesnemiz içerisinde ki fonksiyonları teker teker çağırıyoruz.
Yukarıda ki komut satırlarını iyice inceleyip, özümsedikten sonra PHP 5 ile MySQL 4.1 versiyonunu nesne kalıplarını kullanarak geliştirme işlemine yelken açabilir, kodlarınızı daha profesyonelce hazırlanmış bir şekle sokabilirsiniz.Unutmayın, biz burada PHP 5'in karar-kontrol mekanizmasını kavramanız için mümkün olduğunca basite indirgedim.Bir başka PHP 5 makalesinde görüşmek dileğiyle, uzun kod yazın, performansınızı artırın