• Web sitemizin içeriğine ve tüm hizmetlerimize erişim sağlamak için Web sitemize kayıt olmalı ya da giriş yapmalısınız. Web sitemize üye olmak tamamen ücretsizdir.
  • Sohbetokey.com ile canlı okey oynamaya ne dersin? Hem sohbet et, hem mobil okey oyna!
  • Soru mu? Sorun mu? ''Bir Sorum Var?'' sistemimiz aktiftir. Paylaşın beraber çözüm üretelim.

PHP’de Program Denetimi

MF-Login

MFC Üyesi
Üyelik Tarihi
27 Kas 2013
Konular
1,276
Mesajlar
2,513
MFC Puanı
60
PHP’de Program Denetimi

PHP’de Program Denetimi
Bilgisayar programı belirli değerlere göre kendi izleyeceği yolu kendisi bulmalıdır Bir Web programı da aynı mantıkla tasarlanır PHP bir kısmını daha önceki bölümlerde bir kısmını da şimdi ele aldığımız araçları kullanarak belirli durumlarda belirli istikametlere gidecek yeri geldiğinde geri dönecek yeri geldiğinde başka bölümlere sıçrayacak bir akış planı tasarlamamıza imkan verir
Web programlarımızda ziyaretçilerimizin sitemizde yaptıkları veya yapmak istediklerini bildirdikleri işe göre sayfalar bu işlere göre sayfa içerikleri sunarız Web programımız ziyaretçimizin hareket tarzına ve amacına uygun olarak ilerler Bir programın akış planını kontrol etmemizi sağlayan unsurlar çoğu zaman programın kendi kendine karar vermesini sağlayan araçlardırPHP’de program denetim unsurları programın gidiş yönünü değiştirmemizi veya olduğu yerde durmasını ve beklemesini veya bir işi biteviye yapmasını sağlar Bu bölümde bu araçları ele alacağız
if Deyimi


İnsan olarak kararlarımızı hemen hemen daima “bir şey öyle ise böyle öyle değilse şöyle davranmak” üzere almaz mıyız? PHP programında if deyimi bunu sağlar Kelime anlamı eğer olan if deyimi ile programımızı karar almaya zorlarız Ne var programımız bizim kadar akıllı olamayacağı için if şartının doğru veya yanlış olması durumunda ne yapacağını da ona biz söyleriz if deyimi şöyle yazılır:
if ( koşullar ) {
koşullar doğru ise yapılacak işlere ilişkin komutlar
}
elseif (diğer koşullar) {
diğer koşullar doğru ise yapılacak işlere ilişkin komutlar
}
else {
diğer her durumda yapılacak işlere ilişkin komutlar
}
PHP if ifadesinin doğru olması halinde ifadeye ait ilk süslü parantezin içindeki komutları icra eder; bu şartlar doğru değilseelseif deyimi ile ileri sürebileceğimiz diğer bir grup şartın doğru olup olmadığını sınayabiliriz Bu şartlar yerine geliyorsa PHPelseif bölümündeki işleri icra eder Nihayet diğer her hangi bir durumda icra edilmesini istediğimiz komutları else bölümünde belirtiriz PHP if deyimi doğru değilse deyime ait süslü parantezin içindeki işleri yapmadan yoluna devam eder; varsa elseif deyiminin şartlarını sınar; elseif bölümü yok fakat else bölümü varsa bu bölümdeki işleri icra eder Deyimde else bölümü de yoksa PHP yoluna if deyiminden sonraki ilk adımdan devam eder Bunu bir örnekle belirtelim:
<?php
$sarki = “Güneş Doğacak”;
if ( $sarki == “Güneş Doğacak” ) {
echo (“Seçtiğiniz şarkının adı: Güneş Doğacak!”);
}
elseif ($sarki == “Beklerim Ben”) {
echo (“Seçtiğiniz şarkının adı: Beklerim Ben!”);
}
else {
echo (“Lütfen bir şarkı seçiniz!”);
}
?>
Çoğu zaman if deyimlerini birden fazla koşulu sınayacak şekilde yazarız; bununla birlikte elseif ve else bölümleri olmadan da yazılabilir:
<?php
if ( $parola == “” ) {
echo (“Sitemize girmek için parola yazmanız gerekir<br>”);
echo (“Lütfen parolayı yazın! <br>”);
}
?>
Buradaki if deyimi $parola değişkeninin boş alfanümerik olması halinde ziyaretçiyi uyarak ve görevi bitecektir Ziyaretçi bir parola yazmışsa daha sonraki komutlar bu parolanın doğru olup olmadığını sınayabiliriz
switch deyimi


PHP’de program akışını yönlendirmekte kullandığımız bir diğer unsur switch deyimidir Adı anahtar anlamına gelen switch deyimi verilen bir değişkenin değerinin sıraladığımız koşullardan hangisine uygun olduğunu sınar ve o koşula ilişkin komutları icra eder PHP’nin yaptığı işi bitirdikten sonra switch deyiminin dışına çıkmasını sağlayan break komutu vardır:
switch ( değişken ) {
case KOŞUL-1 ;
Koşul-1 doğru ise yapılacak işlere ilişkin komutlar
break;
case KOŞUL-2 ;
Koşul-2 doğru ise yapılacak işlere ilişkin komutlar
break;
case KOŞUL-3 ;
Koşul-3 doğru ise yapılacak işlere ilişkin komutlar
break;
case KOŞUL-4 ;
Koşul-4 doğru ise yapılacak işlere ilişkin komutlar
break;
…………………
…………………
default:
diğer her durumda yapılacak işlere ilişkin komutlar
}
switch deyimini yazarken mutlaka break ifadesini kullanmamız gerekmez; switch deyiminin akışı break ile kesilmemişseprogram ilk şart yerine gelmiş olsa bile diğer şartları da sınamaya devam eder ve en sondaki default deyimine ulaşarak (default‘tan sonra noktalı virgül değil iki nokta üstüste işareti olduğuna dikkat edin) bu bölümdeki komutları icra eder Ne var ki programcılık mantığına aykırı olabilir: bir değişkenin içeriği verdiğimiz şartlardan birini tutmuşsa muhtemelen diğer şartları yerine getirmeyecek demektir Bu durumda diğer koşulların sınanması gereksiz e default işlerin icra edilmesi ise hata olur Bu deyimi de bir örnekle görelim:
switch ( $sarki ) {
case “Güneş Doğacak” ;
echo (“Seçtiğiniz şarkının adı: Güneş Doğacak<br>”) ;
break;
case “Derdime Derman” ;
echo (“Seçtiğiniz şarkının adı: Derdime Derman<br>”) ;
break;
case “Haberi Yok” ;
echo (“Seçtiğiniz şarkının adı: Haberi Yok<br>”) ;
break;
case “Sonsuza kadar” ;
echo (“Seçtiğiniz şarkının adı: Sonsuza kadar <br>”) ;
break;
default:
echo (“Seçtiğiniz şarkının adı bilinmiyor<br>”) ;
}
Programımız bu kodu icra ederken $sarki adlı değişkenin değerini buradaki dört isimle karşılaştıracaktır Şarkının adı“Güneş Doğacak” ise ilk durum gerçekleşmiş olacak; program Browser pencerisine şarkının adını yazacak (ve muhtemelen bu sözlerini görüntüleyecek!) ve ikinci adıma break ifadesine geçecektir break switch deyiminin sona ermesini sağlar; PHP yoluna switch deyiminin kapanan süslü parantezinden sonra devam eder Bu örnekte break ifadesi kullanılmamış olsaydı PHP diğer şartları da sınacak ve boşun azaman kaybedecekti; daha da garibi en sondaki default komutu da icra edileceği için programımız Browser pencerisine hem seçilen şarkının adını hem de “Seçtiğiniz şarkının adı bilinmiyor” yazacaktı Bunu gözönünde tutarak switch deyimini daima break ile birlikte yazmamız gerekir
////////////////KUTU///////////////
switch için kısa yol


Kimi zaman uzun uzadıya switch deyimi yazmamız gerekmeyebilir; bir değişkenin değerini sadece bir şarta uygunluk açısından sınamamız gerekir Bunu soru ve iki nokta üstüste işaretleri (? … olarak yazılan işlemci ile yaparız Diyelim ki Web sitemizi ziyaret eden kişinin parola yazıp yazmadığını sıramak istiyoruz:
<?php
$uyari = ($parola == “” ) ? “Parola yazmanız gerekir” : “Teşekkür ederiz” ;
echo ($uyari);
?>
Bu kod parçacığı ziyaretçinin parola girip girmediğini $parola değişkeninin içinin boş olup olmadığına bakarak anlayacak ve $parola değişkenin içi boş ise (yani soru işaretinin sorguladığı durumun doğru olması halinde) iki nokta üstüskte işaretinden önceki metni $uyarı değişkenin içeriği haline getirecek; $parola değişkeninin içi dolu ise (yani koşul yerine gelmiyorsa durum yanlış ise) iki nokta üstüste işaretinden sonraki metni $uyarı değişkeninin içeriği yapacaktır Bir sonraki echo() komutu ise içeriği bu sınav sonucuna göre belirlennen $uyarı değişkeninin değerini Browser penceresinde görüntüleyecektir
/////////////////////////////KUTU BİTTİ///////////////
Döngüler


Yukarıdaki iki denetim ögesi de programın ileri doğru akışını bozmayan araçlardır Oysa bazen programımızın bir koşul gerçekleşincele kadar yerinde sayması ve koşul gerçekleşmedikçe ilerlememesi gerekebilir Kimi zaman da programımıza bir işi bitirmeden ileri gitmemesini biz bildiririz Program akışının bu tür denetimini döngü deyimleri sağlar PHP’de iki tür döngü vardır: bir durum devam ettiği veya etmediği sürece yapılan ve kaç kere tekrar edeceği bilinemeyen while döngüleri ve tekrar sayısı belirli for döngüleri
while döngüsü


Bir değişkenin içeriğinin belirli bir şartı karşılaması veya karşılamaması halinde icra edilir Burada dikkat edeceğimiz noktaprogramın icrası sırasında değişkenin içeriğinin veya koşulun değişmesinin sağlanmasıdır Aksi taktirde pıgramımız sonsuz döngüye girer ve muhtemelen çöker while döngüsü şöyle yazılır:
while (koşul) {
Koşul doğru ise yapılacak işlere ilişkin komutlar
}
Bu yöntemin yaygın kullanıldığı alan bir sayaçla yaptırılan işlerdir Aşağıdaki programı whilephp adılma kaydedip çalışrırsanız PHP Browser’ın yazı türü boyutunu 1′den 7′ye kadar büyüterek aynı metni yazdıracaktır:
<HTML>
<HEAD>
<TITLE>PHP’de Döngü</TITLE>
<meta http-equiv=”content-type” content=”text/html; charset=ISO-8859-9″>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″>
</HEAD>
<BODY>
<?php
$sayac = 1;
while ( $sayac <= 7 ) {
print (“<font size= $sayac >”);
print (“<b><p>İyileri iyilikleri ile alkışlayınız!</b></p>”);
print (“</font>”);
$sayac ++;
}
?>
</BODY>
</HTML>
Programımız while döngüsü içindeki iken sonsuz döngüden kurtulabilmek için yazıyı yazdırdıktan sonra $sayac değişkenini bir arttırıyor Aksi taktirde değişken hiç bir zaman while döngüsünün beklediği şarta kavuşarak 7′ye eşit hale gelemeyecektir(Programı sondaki “$sayac ++;” satırını kaldırarak denerseniz zararsız bir sonsuz döngünün ne olduğunu görebilirsiniz! Ama önce Browser’ın dur düğmesinin yerinde durup durmadığna bir bakın!)
while döngüsün aradığı şartın yerine gelmesi her zaman burada olduğu gibi tabir yerinde ise “elle” yapılmaz; döngünün icra ettiği komutlar veya fonksiyonlar koşulu içeren değişkeni değiştirebilirler Sözgelimi elektronik ticaret sitemizde Web ziyaretçimizin while içinde yaptığı alışverişin tutarını koşul olarak kullanabiliriz ve bu koşulu içeren değişken alışveriş ile değişebilir
dowhile


while döngüsü farkettiğiniz gibi ileri sürdüğümüz şartı iyi yapmadan önce sınar; ve bu şart ortadan kalkmamışsa (yani henüz doğru/true ise) yapacağı işi yapar; başka bir deyişle while döngüsünün yapacağı iş hiç yapılmayabilir Fakat sınamanın iş yapıldıktan sonra yerine getirildiği bir şekli de vardır: dowhile Bu döngü ise şöyle yazılır:
do {
Koşul doğru ise yapılacak işlere ilişkin komutlar
}
while (koşul);
Burada gördğünüz gibi dowhile döngüsü en az bir kere icra edilir; çünkü şartın sınanması yapılacak işe ilişkin komutlardan sonra gelmektedir Bu döngünün aradığı şartın döngünün yaptığı işlerin sonucu veya kod bölümünde bizim tarafımızdan gerçekleştirilmesi için igerekli komutların bulunmasına dikkat etmelisiniz Yoksa bu döngü de sonsuzluğa erişir! Yukarıda örneği bu yöntemle yazalım:
<?php
$sayac = 1;
do {
print (“<font size= $sayac >”);
print (“<b><p>İyileri iyilikleri ile alkışlayınız!</b></p>”);
print (“</font>”);
$sayac ++;
}
while ( $sayac <= 7 ) ;
?>
Bu döngüyü yazarken while satırının sorunda noktalı virgül bulunduğuna dikkat edin
for döngüsü


PHP’de Web programlarımız döngünün belirli bir sayıda olmasını ve mesela bu sayının bizim istediğimiz basamaklarda artmasını gerektiriyorsa döngüyü for deyimiyle kurabiliriz Ayrıca for deyimi sayaç gibi şartın yerine gelmesini sağlayacak arttırma veşa eksiltme işlemlerini kendisi yapacağı için sonsuz döngüye girme tehlikesi de hemen hemen yoktur Bu döngü şöyle yazılır:
for ( $yeni_degisken atama ; koşul ; artış basaması ) {
Koşul doğru ise yapılacak işlere ilişkin komutlar
}
for deyiminin ilk ögesi döngü sayacı olarak kullanılacak bir değişken oluşkturulması ve buna değer atanmasına ilişkindir; sonra bir noktalı vrigül ile bu sayacın sınırı olan koşul belirtilir Yine noktalı virgül ile ayırarak sayaç değişkeninin artış hızı verilirBunu da yine yukarıdaki örnekle gösterelim:
<?php
for ($sayac = 1; $sayac <= 7 ; $sayac++ ) {
print (“<font size= $sayac >”);
print (“<b><p>İyileri iyilikleri ile alkışlayınız!</b></p>”);
print (“</font>”);
}
?>
Buradaki kod while ve dowhile göre çok daha kısa; ve while döngüsü sayacı arttırmayı sağlayan satır unutulsa bile çalışacağı halde for döngüsü unsurlara ilişkin noktalı virgüller eksik olursa çalışmayacak ve bize böylece sonsuz döngü tehlikesini hatırlatmış olacaktır for döngüsü kendi sayacını verdiğiniz şartı karşılayıncaya kendisi arttıracak yani buradaki örneği göre $sayaç değişkeni 7 oluncaya kadar çalışacak ve şart karşılandığı anda sona erecektir
//////////////////KUTU///////////////
foreach


PHP’nin programcıya çok kolaylık sağlayan bir diğer döngüsü foreach döngüsüdür Ancak bir değişkenin bütün elemanlarını tekrar sayısında esas alan bu döngünün çalışma ilkelerini görebilmek için dizi değişken kavramını ele almış olmamız gerekiyorŞimdilik bu döngünün varlığını bir kenara yazıp dizi değişkenlere kadar unutabilirsiniz
////////////////////KUTU BİTTİ///////////////
Döngüyü sona erdirmek için: break


Programımızın akışı bazen döngünün durdurulmasını gerektirir Örneğin sayaç değişkenini ziyaretçinin vermesi gerektiği ve vermediği durumda döngünün başlamaması yerinde olur Programın gerektirdiği böyle bir sebeple döngüyü break komutuyla durduruz
Sözgelimi aşağıdaki kodda kullandığımız $tekrar değişkenini değerini ziyaretçiden form yoluyla aldığımızı varsayalım:
<?php
$tekrar = 10 :
for ($sayac = 1; $sayac <= $tekrar ; $sayac++ ) {
if ( $tekrar <= 0 )
break;
print (“<font size= $sayac >”);
print (“<b><p>İyileri iyilikleri ile alkışlayınız!</b></p>”);
print (“</font>”);
}
?>
Bu kod parçasını bir sayfa kodunun içine yerleştirir ve önce bu şekliyle danha sonra $tekrar= 0 yazarak sınarsanız break komutunun işe yaradığını göreceksiniz ($tekrar değişkeninin değerini Form yoluyla ziyaretçiden değişken değeri almayı öğreninceye kadar şimdilik kaydıyla biz yapıyoruz Ayrıca buradaki if deyiminin süslü parantez olmadan yazıldığına dikkat edin
Döngüyü sürdürmek için: continue


break ifadesinin döngüyü tamamen durdurduğunu farkettiniz mi? Oysa programımızın akışı kimi zaman da döngünün sadece belirli bir durumda kendisinden beklenen işi yapmamakla birlikte böyle tümüyle kesilmesini de gerektirmez Yine yukarıdaki örneğe dönersek sayaç değişkenini ziyaretçinin vermesi gerektiği ve vermediği durumda döngünün tümüyle kesilmesini değil de sadece sayacı gösteren $sayac değişkeninin sıfırdan büyük bir değere ulaşlmasını beklememiz yerinde olabilir Bu devamlılığı continue komutuyla sağlarız:
Yine bu örnekte kullandığımız $sayaçc değişkeninin değerini ziyaretçiden form yoluyla aldığımızı varsayarak kodu şöyle değiştirebiliriz:
<?php
$sayac = -5 :
for (; $sayac <= 7 ; $sayac++ ) {
if ( $sayac <= 0 )
continue;
print (“<font size= $sayac >”);
print (“<b><p>İyileri iyilikleri ile alkışlayınız!</b></p>”);
print (“</font>”);
}
?>
Bu durumda PHP conktinue komutunu gördüğü anda for döngüsünün geri kalan kısmını icra etmek yerine başa dönecek ve döngüyü yeniden icra etmeye başlayacaktır Döngünün ilk satırınnda kod parçasını bir sayfa kodunun içine yerleştirir ve önce bu şekliyle danha sonra $sayac= 1 yazarak sınarsanız continue komutunun programı sayaç değişkeninin değeri 1 oluncaya kadar durdurduğunu ama bu sırada for döngüsünün devam ettiğini göreceksiniz ($sayac değişkeninin değerini Form yoluyla ziyaretçiden nasıl alacağımızı daha sonra göreceğiz)
Buraya kadar PHP programı oluşturabilmek için gerekli temel yazım kurallarını yapıtaşlarını ve program akışında yararlanacağımız kontrol ögelerini ele almış olduk Şimdi bu unsurların hepsini bir arada kullanabileceğimiz gruplarıfonksiyonları ele alabiliriz
 
Üst