Kayıt: Jul 20, 2002 Mesajlar: 3836 Konum: Balıkesir
Tarih: 2007-08-03, 10:31:58 Mesaj konusu: DERS-6: Program Denetleme İşlemleri-2
switch komutu
Aslında bunu PHP-Nuke kullanan arkadaşlar modüllerde görebiliyorlar. İşte şimdi bu modüllerde kullanılan komutu öğreniyoruz. Kısacası PHP dersleri sonunda sizlerde kendi blok ve modüllerinizi rahatlıkla yazabilecek ve/veya ufak sorunları çözebileceksiniz. İş mantığını öğrenmekte.
Bu komutta bir değişken oluşturulur ve değişik seçenekler oluşturulur. Bu değişken hangi seçeneğe uyuyorsa o komutlar yazılır.
NOT: Switch komutu yerine if komutu da kullanılabilir. Yani switch ile yaptığımızı if ile de yapabiliriz. Ancak ileriki derslerde göreceğiniz üzere switch komutu if komutuna göre biraz daha hızlı çalışır. Ama dikkat edelim, bütün if komutlarını switch ile yazamayız. Yani switch komutu if komutu yerine duruma göre kullanılabilir yada kullanılamaz. Bunu zamanla görürsünüz. Gelelim nasıl yazılır sorusuna.
Alıntı:
switch($degisken) {
case "birinci şart":
bu şart doğru ise yapılacak komutlar
break;
case "ikinci şart":
bu şart doğru ise yapılacak komutlar
break;
…..//bu şekilde uzatabiliriz. Limitimiz yok//
default: ##Buraya dikkat noktalı virgül değil iki nokta üst üste kullanıyoruz.##
yukarıda yazılan şartlardan hiçbiri yerine gelmiyorsa yapılacak komutlar
break;
}
Önemli bir ayrıntıya değineyim.
case ile yapılan her şart kontrolünden sonra break komutu ile sonlandırmamız gerekiyor. Sonlandırmazsak ne olur? Şart gerçekleşse bile şartın bitmediğini görmediğinden diğer şartları da dener ve sonuç oluşmaz. Sizde ortada kalırsınız
Konuyu fazla uzatmadan basit bir örnek veriyorum.
Kod:
switch($dil) {
case "PHP":
echo "PHP dilini öğreniyoruz";
break;
case "ASP":
echo "ASP dilini öğreniyoruz";
break;
case "Perl/CGI":
echo "Perl ile CGI programlama öğreniyoruz";
break;
default:
echo "Hiçbir dili öğrenmiyoruz. Boş boş oturuyoz";
break;
} //switch komutunu sonlandırmayı unutmayın.
Şimdi var mısınız basit bir modül yazalım? Uygulamaya başlıyoruz kemerlerinizi bağlayın… Daha dur bir şey öğrenmedik ne modülü diyenleriniz olabilir. Bayağı bir şey öğrendik. Geri dönün ve dersleri tekrar edin.
Modüle başlamadan önce modüllerle ilgili ön bilgi vereyim.
Modüller PHP-Nuke ile yaptığınız sitede sayfalarınızı oluşturan eklentilerdir. Örneğin şu anda bu yazıyı okuduğunuz forum sayfası Forums modülüyle karşınıza gelmektedir. Modüllere www.siteniz.com/modules.php?name=Modül_Adı şeklinde girersiniz. Modül Adı yerine modules klasöründeki, modülün klasörünün ismini (BÜYÜK-küçük harf ayrımına dikkat ederek) yazarız.
Öncelikle modules klasörüne PHP_Modul1 adında bir klasör ve içerisine boş bir tane index.php dosyası oluşturun. index.php dosyasını açın ve yazmaya başlıyoruz.
Kod:
<?PHP
yazarak PHP komutunun başladığını belirtiyoruz. Modülümüzde 3 tane sayfa olacak. Bir tanesi giriş, 2 tanesi ise alt sayfa şeklinde. Hemen ilk yazılması gerekenleri yazıyoruz.
Kod:
if ( !defined('MODULE_FILE') )
{
die("You can't access this file directly...");
}
switch($degisken) { //switch başladı...
// modules.php?name=PHP_Modul1°isken=php şeklinde link verdiğimizde çıkacak sayfa başladı....
case "php":
echo "PHP bir script dilidir. Yani .exe yada .com uzantısına sahip programlar gibi derlenmesine gerek yok. Ancak PHP scrptlerinizi çalıştırabilmeniz için bu dilden anlayan bir programa ihtiyacınız var.Bu programın web server tarafından çalıştırılabilir olması gerekmektedir. Başka bir ifadeyle web server programınızı (Apache, PWS yada ISS gibi) PHP anlar hale getirmeniz gerekmektedir.";
break;
// modules.php?name=PHP_Modul1°isken=php şeklinde link verdiğimizde çıkacak sayfa bitti.
//modules.php?name=PHP_Modul1°isken=html şeklinde link verdiğimizde çıkacak sayfa başladı...
case "html":
echo "Hyper Text Markup Language( Hiper Metin İşaret Dili ) kısaca HTML diye adlandırdığımız kodları anlatmaya çalışacağım.
Anlatıma başlamadan yapmış olduğum dil hatalarından dolayı özür dileyerek affınıza sığınıyorum..
Anlatıma 0 dan başlıyarak profesyonele doğru ilerleteceğiz.Bu yazı dizimizde anlatılanları sizinde harfiyen uygulamanız gerekiyor diye düşünmekteyim....";
break;
//modules.php?name=PHP_Modul1°isken=html şeklinde link verdiğimizde çıkacak sayfa bitti...
#Modüle ilk girişte çıkacak sayfa başladı.
default:
echo "<p>Merhaba,<br>
Bu benim ilk modül çalışmam. Modülüme hoşgeldiniz. Bir iki alt sayfa yaptım. Siz
bu alt sayfalara gönderecem. İlk sayfamız PHP üzerine kısaca bir yazı, ikinci
sayfamız ise HTML üzerine kısa bir yazı. </p>
<p>İlk sayfamıza gitmek için <a href=\"modules.php?name=PHP_Modul1°isken=php\">
tıklayın</a>.</p>
<p>İkinci sayfamıza gitmek için
<a href=\"modules.php?name=PHP_Modul1°isken=html\">tıklayın</a>.</p>
<p><b>NOT: switch </b> komutunda $degisken adında bir değişken tanımladık.
Buna göre linkleri şu şekilde vermeliyiz. <br>
PHP Sayfamıza modules.php?name=PHP_Modul1&degisken=php<br>
HTML Sayfamıza modules.php?name=PHP_Modul1&degisken=html</p>";
break;
#Modüle ilk girişte çıkacak sayfa bitti.
}//switch bitti.
En modül bitti. Sonuna
Kod:
?>
yazarak PHP nin bittiğini gösteriyoruz. Burada aklınıza takılan şeyler için önceki dersleri incelemenizi öneririm.
Modülün index.php dosyasını toplarsak şu hale gelmiş olacak.
Kod:
<?php
if ( !defined('MODULE_FILE') )
{
die("You can't access this file directly...");
}
// modules.php?name=PHP_Modul1°isken=php şeklinde link verdiğimizde çıkacak sayfa başladı....
case "php":
echo "PHP bir script dilidir. Yani .exe yada .com uzantısına sahip programlar gibi derlenmesine gerek yok. Ancak PHP scrptlerinizi çalıştırabilmeniz için bu dilden anlayan bir programa ihtiyacınız var.Bu programın web server tarafından çalıştırılabilir olması gerekmektedir. Başka bir ifadeyle web server programınızı (Apache, PWS yada ISS gibi) PHP anlar hale getirmeniz gerekmektedir.";
break;
// modules.php?name=PHP_Modul1°isken=php şeklinde link verdiğimizde çıkacak sayfa bitti.
//modules.php?name=PHP_Modul1°isken=html şeklinde link verdiğimizde çıkacak sayfa başladı...
case "html":
echo "Hyper Text Markup Language( Hiper Metin İşaret Dili ) kısaca HTML diye adlandırdığımız kodları anlatmaya çalışacağım.
Anlatıma başlamadan yapmış olduğum dil hatalarından dolayı özür dileyerek affınıza sığınıyorum..
Anlatıma 0 dan başlıyarak profesyonele doğru ilerleteceğiz.Bu yazı dizimizde anlatılanları sizinde harfiyen uygulamanız gerekiyor diye düşünmekteyim....";
break;
//modules.php?name=PHP_Modul1°isken=html şeklinde link verdiğimizde çıkacak sayfa bitti.
#Modüle ilk girişte çıkacak sayfa başladı.
default:
echo "<p>Merhaba,<br>
Bu benim ilk modül çalışmam. Modülüme hoşgeldiniz. Bir iki alt sayfa yaptım. Siz
bu alt sayfalara gönderecem. İlk sayfamız PHP üzerine kısaca bir yazı, ikinci
sayfamız ise HTML üzerine kısa bir yazı. </p>
<p>İlk sayfamıza gitmek için <a href=\"modules.php?name=PHP_Modul1°isken=php\">
tıklayın</a>.</p>
<p>İkinci sayfamıza gitmek için
<a href=\"modules.php?name=PHP_Modul1°isken=html\">tıklayın</a>.</p>
<p><b>NOT: switch </b> komutunda $degisken adında bir değişken tanımladık.
Buna göre linkleri şu şekilde vermeliyiz. <br>
PHP Sayfamıza modules.php?name=PHP_Modul1&degisken=php<br>
HTML Sayfamıza modules.php?name=PHP_Modul1&degisken=html</p>";
break;
#Modüle ilk girişte çıkacak sayfa bitti.
} //switch bitti.
?>
Bir sonraki konumuz döngüler… O konuya kadar şöyle geriye dönerek bir tekrar yapsanız fena olmaz. Döngülerde görüşmek üzere hoşçakalın.
Kayıt: Jul 20, 2002 Mesajlar: 3836 Konum: Balıkesir
Tarih: 2007-08-03, 13:30:47 Mesaj konusu:
Önceki dersleri düzenli takip edenler için bazı şeyler zor değil ancak yine de konu biraz karmaşık gelebilir.
Şimdi önceki derste program denetimi diye başladığımız seride if komutunu öğrenmiştik. Bu if komutu ne işe yarıyordu? Bazı şartlar yada koşullar yerine gelirse programa şunu yap demeye yarıyordu. Bu switch de aynı mantıkta aslında. Ama bunda sadece tek değişken kullanıyoruz. Bu değişken için çeşitli alternatifler sunuyoruz. Hangi uyarsa onu yap gibi. Eğer hiçbiri olmazsa aynı if te olduğu gibi bir işlem oluyor. if dersinde gördüğümüz else burada default oluyor. Soyutu bırakıp ve somuta dönersek;
default:
case "Değişkenin içeriğinde ne olduğunu anlamadım";
break;
}
İlk örnekle ikinci örnek benzerlik olarak aynı. Alttakinde $degisken adlı değişkenin değerini asp olarak değiştirdim ve sonucu etkiledi.
Ancak alttaki if komutunu switch ile yazamayız. Birden fazla değişken var.
Kod:
$degisken1="php";
$degisken2="123";
if($degisken1=="php" || $degisken2!="") {
echo "Değişken İçeriği PHP";
} elseif($degisken1=="asp" AND $degisken2=="123") {
echo "Değişken İçeriği ASP";
} else {
echo "Değişkenin içeriğinde ne olduğunu anlamadım";
}
Ders içinde basit birde modül yazdım. Aslında php-nuke modüllerine bakarsanız bu şekilde yazılanı yok gibi. Ancak o konulara gelmediğimizden bu şekilde yazdım modülü.
Örneğin Content Modülü şu şekilde.
Kod:
switch($pa) {
case "showpage":
showpage($pid, $page);
break;
case "list_pages_categories":
list_pages_categories($cid);
break;
default:
list_pages();
break;
}
Burada yer alan list_pages(); gibi şeyler fonksiyonlardır. Bu şekilde yapmak için fonksiyon konusunu öğretmem lazım. O konu ise birkaç ders sonra.
Kayıt: May 19, 2007 Mesajlar: 423 Konum: Niye Bize mi Gelecen
Tarih: 2007-08-03, 14:26:54 Mesaj konusu:
tamam hacom şimdi biraz daha netleşti önceki dersleri takip ediyorum ama bu biraz karışıktı ama şimdi netleşli Netopsiyonm sayesinde baya bişey ögrendim : )
Kayıt: Nov 18, 2005 Mesajlar: 943 Konum: Trabzon/izmir 61-35
Tarih: 2007-08-03, 14:44:15 Mesaj konusu:
linklerde proplem olmuş bu şekilde cıkıcana
modules.php?name=PHP_Modul1&degisken=php
bu şekilde cıkmış o yüzden modul linkleri calışmıyor :)
modules.php?name=PHP_Modul1°isken=php
linkleri düzelttim bide opentaple acıp footer ve header.php yi include ettim
Kod:
<?php
if ( !defined('MODULE_FILE') )
{
die("You can't access this file directly...");
}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
include ("header.php");
OpenTable();
switch($degisken) { //switch başladı...
// modules.php?name=PHP_Modul1°isken=php şeklinde link verdiğimizde çıkacak sayfa başladı....
case "php":
echo "PHP bir script dilidir. Yani .exe yada .com uzantısına sahip programlar gibi derlenmesine gerek yok. Ancak PHP scrptlerinizi çalıştırabilmeniz için bu dilden anlayan bir programa ihtiyacınız var.Bu programın web server tarafından çalıştırılabilir olması gerekmektedir. Başka bir ifadeyle web server programınızı (Apache, PWS yada ISS gibi) PHP anlar hale getirmeniz gerekmektedir.";
break;
// modules.php?name=PHP_Modul1°isken=php şeklinde link verdiğimizde çıkacak sayfa bitti.
//modules.php?name=PHP_Modul1°isken=html şeklinde link verdiğimizde çıkacak sayfa başladı...
case "html":
echo "Hyper Text Markup Language( Hiper Metin İşaret Dili ) kısaca HTML diye adlandırdığımız kodları anlatmaya çalışacağım.
Anlatıma başlamadan yapmış olduğum dil hatalarından dolayı özür dileyerek affınıza sığınıyorum..
Anlatıma 0 dan başlıyarak profesyonele doğru ilerleteceğiz.Bu yazı dizimizde anlatılanları sizinde harfiyen uygulamanız gerekiyor diye düşünmekteyim....";
break;
//modules.php?name=PHP_Modul1°isken=html şeklinde link verdiğimizde çıkacak sayfa bitti.
#Modüle ilk girişte çıkacak sayfa başladı.
default:
echo "<p>Merhaba,<br>
Bu benim ilk modül çalışmam. Modülüme hoşgeldiniz. Bir iki alt sayfa yaptım. Siz
bu alt sayfalara gönderecem. İlk sayfamız PHP üzerine kısaca bir yazı, ikinci
sayfamız ise HTML üzerine kısa bir yazı. </p>
<p>İlk sayfamıza gitmek için <a href=\"modules.php?name=PHP_Modul1°isken=php\">
tıklayın</a>.</p>
<p>İkinci sayfamıza gitmek için
<a href=\"modules.php?name=PHP_Modul1°isken=html\">tıklayın</a>.</p>
<p><b>NOT: switch </b> komutunda $degisken adında bir değişken tanımladık.
Buna göre linkleri şu şekilde vermeliyiz. <br>
PHP Sayfamıza modules.php?name=PHP_Modul1&degisken=php<br>
HTML Sayfamıza modules.php?name=PHP_Modul1&degisken=html</p>";
break;
#Modüle ilk girişte çıkacak sayfa bitti.
} //switch bitti.
CloseTable();
include("footer.php");
?>
bu arada bu alt sayfa örneğinde functionlar yok bunu linkekle modulunde size bahsetdiğim şekilde ayarlanırmı 2 inci 3 üncü ve sonraki sayfaları bu örnek gibi oluşturabilirmiyim yani
Kayıt: Jul 20, 2002 Mesajlar: 3836 Konum: Balıkesir
Tarih: 2007-08-03, 15:05:12 Mesaj konusu:
@mavisce: Yapmak istediğiniz modülü bildiğim için size örnek olması amaçlı modülü yazdım. Yoksa hiç girmek istemiyordum.
Fonksiyon olmadan da bu şekilde birden fazla sayfa oluşturabilirsiniz. Alıntı yaptığım örneklerde de görüleceği üzere değişken değeri uygunsa yani şart gerçekleşmişse istediğiniz komutları yazabilirsiniz.
Kayıt: Jul 20, 2002 Mesajlar: 3836 Konum: Balıkesir
Tarih: 2007-08-26, 15:06:44 Mesaj konusu:
php-nuke dünyasında kalacaklar switch olayını iyi öğrenseler fena olmaz. Yoksa modül yazamazsınız. Yazsanız bile if ile yazarsınız ve bu da hiç hoş olmaz.
Bu forumda yeni başlıklar açamazsınız Bu forumdaki başlıklara cevap veremezsiniz Bu forumdaki mesajlarınızı değiştiremezsiniz Bu forumdaki mesajlarınızı silemezsiniz Bu forumdaki anketlerde oy kullanamazsınız