Varsayılan parametreli fonksiyonlar

27 Mayıs 2008 Salı

- Varsayılan parametreli fonksiyonlar;

Bir fonksiyon içerisinde, kullanılan parametrelere varsayılan değerler de atanabilir. Parametrelere varsayılan değer atandığında, fonksiyon herhangi bir parametreye gerek duyulmadan da çağrılabilir. Bu durumda fonksiyonumuz, tanımlamada kullanılan parametrenin varsayılan değerini,parametre girilmiş olarak kabul edecek ve o parametrelerle çalışacaktır.

<?php
function faktor($varsayilan = 5)
{
$islem = 1;
for ($i = 1; $i <= $varsayilan; $i++)
$islem *= $i;
return $islem;
}
print faktor(). "<br/>";
print faktor(10)
?>

Örneğimizde kendisine atanan değerin faktöryelini bulan bir fonksiyon tanımlanmış ve alacağı parametreye varsayılan olarak 5 değeri atadık. Ardından önce kod parçamızdan faktor() fonksiyonumuz parametresiz olarak çağırdık,. Fonksiyonumuz varsayılan değer olarak 5 i kabul edip 120 değerini tarayıcımıza yansıtmıştır. Daha sonra faktor() fonksiyonumuza 10 değerini atayarak bir kez daha başvurup, varsayılan parametre değeri yerine, girmiş olduğumuz parametre ile işlem yapmasını sağlamış olduk.

- Parametre sayısı değişen fonksiyonlar;

Yapısı gereği bazı fonksiyonların alacağı parametre sayısı belli olamayabilir. Bu tür fonksiyonlar, fonksiyonun işleme alacağı değişken sayısının önceden kesinleştirilmemiş olmasından dolayı tasarlanırlar ve farklı sayılarda değişken üzerinde işlem yapabilmemizi sağlarlar. Bu tür fonksiyonlar tasarlanırkenuygulayacağımız yöntem, fonksiyona gönderilen parametrelerin, kaç adet olduğunu func_num_args(), fonksiyonu ile saptamamız, ardından parametrenin func_get_arg(); fonksiyonu ile indisli olarak çağrılması olacaktır. indisleme işlemi sıfırdan başlayarak, değişken saytısının bir eksiğine kadar yapılır.
Aşağıdaki örneğimizi dikkatle inceleyelim.

<?php
function carp()
{
$carpim = 1;
$degiskenAdedi = func_num_args();
for($i = 0; $i < $degiskenAdedi; $i++)
$carpim *= func_get_arg($i);
return $carpim;
}
print carp(1, 1, 1) ."<br/>";
print carp(5, 10, 10);

?>

Örneğimizde, tasarlamış olduğumuz fonksiyonun kendisine geçirilen farklı sayıdaki parametreleri alarak her bir değişkeni bir biri ile çarpmasını ve sonucu tarayıcımıza yansıtmasını sağladık.

func_num_args(); fonksiyonu hakkında daha geniş bilgi için burayı ziyaret ediniz.

func_get_arg(); fonksiyonu hakkında daha geniş bilgi için manuali ziyaret ediniz.

- Bir fonksiyonu durdurmak,

Bir fonksiyon, tüm deyimler çalıştırıldığında veya, return anahtar kelimesi kullanıldığında durur. Bir fonksiyon durdurğunda, ana kod parçasındaki, fonksiyona çağrı yapıldıktan sonraki deyime geri dönülür.

function deneme()
{
print "Bu deyim Çalıştırılacaktır";
return;
print " bu deyim ise returnden sonra kullanıldığından çalıştırılmayacaktır.";
}
print deneme();

Bir fonksiyonun çalıştırılmasını durdurmak için return anahtar kelimesine başvurmamızın temel sebebi, fonksiyonumuzun muhtemel bir hata koşulunu gerçekleştirme olasılığıdır. Fonksiyon içinde return deyimi çalıştırıldığında, o fonksiyon içerisinde returnden sonrayı takip eden deyimler görmezden gelinecektir.

- Fonksiyondan değer döndürmek;

Yukarıda fonksiyonları durdurmak için kullanmış olduğumuz return anahtar kelimesi, aynı zamanda o fonksiyonun, kendilerini çağıran kodla iletişim kurulması içinde kullanılır. Bu sayede fonksiyonu çağıran kod parçası, bu sonucu kullanıp kullanmayacağını, nasıl göstereceğini veya nasıl kullanacağını seçebilir.

- Statik değişkenler;

Bazı durumlarda, sadece bir fonksiyon için gerekli olan bir değişken tanımlamak zorunda kalabiliriz. Bunu yapmanın en iyi yolu, o değişkeni fonksiyonumuzun içierisinde tanımlamaktır. Ancak fonksiyonların kapsam özellikleri nedeniyle fonksiyon içerisinde tanımlanan değişkenlerin, fonksiyonların çalışması durduğunda yok olduğunu öğrenmiştik. Eğer bir fonksiyon içinde fonksiyonumuzun çalışması durduğunda değerini yitimeyen bir değişken tanımlamak ve o fonksiyon çağrıldıkça bu değişkene baş vurmak istiyorsak bu değişkeni static olarak bildirmeliyiz.

function ekle () {
static $degisken = 10;
$degisken++;
print $degisken;
}
// Başka kodlar buraya girebilir
ekle(); // Çıktımız burada 11 değerinde
print "<br/>";
ekle(); // Çıktımız burada 12 değerinde

Fonksiyonumuz her çağrıldığında static deyimi ile bildirdiğimiz değişkenin içindeki verinin kod parçamız tarafından işlendiğine ve değerinin ise fonksiyonda üretilen değer olarak saklandığına dikkat ediniz.

Gönderen _nl2br zaman: 02:16 0 yorum  

Fonksiyonlar

26 Mayıs 2008 Pazartesi

Belirli bir işlemi gerçekleştirmek için çağrı yapan bir arabirim gerektiren ve seçime bağlı olarak bir sonuç döndüren kod modülüne fonksiyon diyoruz. Tek ve kesin bir işlemi gerçekleştiren kodları ayırmaya, kodun okunmasını kolaylaştırmaya, aynı işlemi tekrarlamak gerektiğinde kodu yeniden kullanmamıza olanak sağlarlar.
Php'de fonksiyonları 2 temel grupta toplamak olasıdır.
1- Php'nin kendi yerleşik fonksiyonları.
2- Kullanıcı tanımlı fonksiyonlar.

Bir fonksiyonu çağırırken kullandığımız genel yol ;

function(parametre1, parametre2, ...) ;

gibidir. Eğer parametre gerektirmeyen bir fonksiyona başvuruyorsak çağrımız;

function_ismi();

biçiminde olacaktır. Bu biçimde çağrılan bir fonksiyondan değer döndürmesi beklenmez. Örneğin sunucumuzda yüklü php bileşenleri için bilgi almamızı sağlayan phpinfo(); fonksiyonu bu tür fonksiyonlardandır. Bir parametre almadığı gibi genellikle döndürdüğü değeri dikkate almayız.
Parametre gerektiren fonksiyonumuza çağrı yaparken parametreyi veriyi saklayan bir değişken veya veri ile fonksiyon adından sonraki parantezler içerisine yerleştirerek geçiririz.

$karaktersay = strlen("mehmet);

Örneğimizde mehmet verisinin sahip olduğu karakter verisini öğrenmek amacıyla php' nin yerleşik fonksiyonu olan strlen(); fonksiyonuna parametre olarak mehmet adını geçirdik.
Bir fonksiyona parametre geçirmekle, ham veriden stringe stringten bir diziye kadar bir çok veri kalıbını değerlendirmeye alırız. Parametreler herhangi bir veri tipinde olmakla bazı fonksiyonlar özel veri tioleri gerektirir. Bir fonksiyonun kaç parametre aldığını, bunların nleri temsil ettiğini, ne tür veri tipi ile işlem yaptığını anlamak için fonksiyonun prototiplerinden yararlanırız. strlen(); fonksiyonunun prototipine bakalım. http://tr2.php.net/manual/en/function.strlen.php

int strlen ( string $string );

Prototibi incelediğimizde fonksiyon adından önce gelen int sözcüğü, bu fonksiyonun bir tam sayı döndüreceğini gösterir. Fonksiyonun alacağı parametreler ise parantezin içindedir.

Php fonksiyon adlarına yapılan çağrılarda, değişkenler gibi büyük küçük harf ayrımına duyarlı değildir. Php' de function_iSMi(); ile function_ismi(); yazmak arasında bir fark yoktur.

Kullanıcı tanımlı fonksiyonlar;

Halihazırda php'nin yerleşik fonksiyonları ile bir çok işlemimizi yapabiliriz. Ancak bazen bu bize yeterli olmaz. Hazırladığımız betiklerde, bir çok kez kullanmak istediğimiz kod parçaları yazıyorsak, bunları tekrar tekrar yeniden yazmak yerine, bir fonksiyon olarak tanımlama, gerektiğinde bu fonksiyona başvurarak işlemlerimizi yapmak, işimizi hem oldukça kolaylaştıracak,hem zaman kazandıracak hem de yazdığımız kodların daha hızlı ve tutarlı çalışmasını sağlayacaktır.

- Temel yapı;

Php' de bi fonksiyon bildirmek, yeni bir fonksiyon yaratmamıza neden olur. Bildirme işlemi anahtar sözcük function ile başlar. Bu bildirimin ardından fonksiyonumuzun adını, gereken parametreleri, ve bu fonksiyonun çağrılması durumunda çalıştırılacak kodu bildiririz.

function fonksiyonum()
{
print "Ben çağrıldım vede ahanda burdayım.";
}
print fonksiyonum();
Bu fonksiyonu çağırmak, tarayıcıda "Ben çağrıldım vede ahanda burdayım." ifadesinin yansıtılmasına neden olur.

Php'de yerleşik olan fonksiyonlara tüm php scriptlerinde erişebilir onlarla işlem yapabiliriz. Ancak kendi tanımladığımız fonksiyonlara sadece içinde bildirdiğimiz program boyunca erişebilir onlarla yapacağımız işlemleri sadece o program içerisinde gerçekleştirebiliriz.
Fonksiyonumuz içerisinde kullandığımız süslü parantezler, ihtiyaç duyduğumuz işi gerçekleştirecek kodu kapsar. Bu parantezlerin içinde, başka fonksiyonlara yaptığımız çağrılar, yeni fonksiyonların veya değişkenlerin bildirimleri, düz HTML kodları, farklı dosyaları ithal etmek gibi bir php scripti içinde geçerli olan her şey bulunabilir. Bir fonksiyon içerisinde, php'den çıkıp düz HTML kodu yazmak istersek, Php fonksiyon yapısı buna da olanak sağlar. Bunun için php kapanış etiketi olan ?> ile php'den çıkılır ve düz HTML etiketlenmesine devam edilir. Ardından yeniden php başlangıç etiketi açılarak <?php kalan php işlemleri yapılır ya da fonksiyon kapatılır.

<?php
function fonksiyonum()
{
?>
Ben Çağrıldım ve işte burdayım
<?php
}
print fonksiyonum();
?>

Bu örneği print fonksiyonum(); satırını kaldırarak ta deneyiniz.

- Fonksiyonları adlandırmak;

Fonksiyonlarımızı isimlendirirken, vereceğimiz fonksiyon adının, kısa ama açıklayıcı olduğuna dikkat edersek bu ileride karşılaşacağımız olması muhtemel hataların önüne daha hata olmadan geçmiş olur. Bununla birlikte php' de fonksiyon tanımlarken uymamız gereken bir kaç basit kural daha var.
- Fonksiyonumuzun adı, php'de önceden tanımlı yada daha önce kendimizin tanımlamış olduğu fonksiyon adı ile aynı olamaz.
- Kullanacağımız fonksiyon adlarında, sadece harfler, sayılar ve alt çizgiler bulunabilir.
- Fonksiyon adları bir sayı ile başlayamaz.

function ismi()
function ismi2()
function ismi_getir()
function _ismi()

Geçerli fonksiyon tanımlarıdır ama;

function 1_ismi()
function ismi-bir()
function phpinfo()
function strlen()

Bu tür fonksiyon tanımlamalar php için geçerli değildir.

- Parametreler;

Parametrenin tanımı; Çağrıldığında bir fonksiyona verilen ve bu fonksiyon çağrıldığında elde edilecek sonucu etkileyen bilgiler ya da verilerdir. Bir çok fonksiyonun işini yapabilmesi için, bir yada birden fazla parametreye ihtiyacı vardır ve parametreler bir fonksiyona veri geçirebilmemizi sağlarlar. Aşağıda geçirdiğimiz parametrenin karesini döndüren bir fonksiyon yapısı örneklenmektedir.

<?php
function kare($x)
{
return $x * $x;
}

print '5 in karesi'. kare(5). 'tir';
?>

Örneğimizde ilk önce function bildirimi ile bir fonksiyon tanımlayacağımızı bildirdik ve ardından fonksiyon adımız olan fonksiyonum' u yazdık. Ardından fonksiyonumuzun alacağı parametreyi parantezler arasında bildirdik. ardından kod bloğumuzu açarak, fonksiyonumuzun döndürmesini istediğimiz değerin işlemini bildirdik ve kod bloğumuzu kapattık. Daha sonra fonksiyonumuzun dışından tarayıcımızda karesini yansıtmak istediğimiz sayıyı fonksiyonumuzu çağırıp parametre olarak işlenecek değer olması için paranteslerin içine girdik ve tarayıcımızın " 5 in karesi25tir" ifadesini yansıtmasını sağladık. Örneğimizi farklı sayılar deneyerek geliştirebilirsiniz. Örneğimizde kullandığımız return ifadesi, bir fonksiyonun değer döndürülmesi isteniyorsa kullanılır. Bu değer fonksiyonun yaptığı işlemin sonucu olabileceği gibi, o işleme bağlı olarak true ya da false olarak bir boolean değer olabilir.
Şimdi 1'den verdiğimiz parametre ye kadar olan sayıların toplamını oluşturan bir kod parçası tasarlayalım.

<?php
function toplam($x)
{
$toplam = 0;
for($i = 1; $i <= $x; $toplam += $i, $i++);
return $toplam;
}
print '1 den 5 e kadar olan sayıların toplamı' .toplam(5).' tir';
?>

Kodumuzu toplam fonksiyonu olarak tanımlayıp parametre olarak verebileceğimiz her hangi bir rakamı temsil eden $x parametresini bildirdik. kod bloğumuzun içinde döngüden önce bir başlangış değeri saptadık. ardından bir for döngüsü ile 1' den verdiğimiz parametre değeri kadar sayacımızın çalışmasını ve ardından elde ettiği değeri toplayarak, $toplam adlı değişkende depolamasını ve döngümüzün koşulu yerine getirildiğinde bu değişken içinde depolanan değeri return ifadesiyle fonksiyonumuzun çıktısı olarak bize göndermesini bildirdik. Fonksiyonumuzu print deyimi ile çağırdığımızda verdiğimiz 5 sayısını parametre olarak alıp bize 1'den 5' e kadar olan sayıları toplayıp yansıttığını gördük.

- Fonksiyonlarda kapsam;

Fonksiyonlarda değişken kapsamı farklı davranışlar gösterir. Bir değişkenin kapsamı, o değişkenin nerelerde görünür ve kullanılabilir olduğunu belirler. Php'de değişkenlerin kapsamını belirleyen bir kaç kural vardır.

- Bir fonksiyonda bildirilen değişkenler, içinde bildirilmiş oldukları deyimden fonksiyonun sonundaki kapatma parantezine kadar geçerlidirler. Buna fonksiyonun kapsamı denir. Bu tip değişkenler ise yerel değişkenler olara bilinir.
- Fonksiyonların dışında bildirilen değişkenler, içinde bildirilmiş oldukları deyimden, dosyanın sonuna kadar geçerlidir. Ancak fonksiyonların içerisinde geçerli olamazlar. Buna genel(global) kapsam adı verilir. Bu tür değişkenler ise global değişkenler olarka bilinirler.

<?php
function fonk()
{
$deg = 2;
}
$deg = 1;
fonk();
print $deg;
?>

Fonksiyonumuz çağrıldığında $deg değişkeninin değerinin 2 ye ayarlandığına, ama bu değişimin fonksiyon içindeki $deg değişkeni ile sınırlı kaldığına, çıktımızın genel değişken olan 1 e ayarlı olarak tarayıcıya yansıttığına dikkat ediniz.
Eğer fonksiyon içerisinde aynı adlı değişkemizin fonksiyonumuz tarafından işlenmesini istiyorsak $GLOBALS [] anahtar sözcüğünü kullanarak değişkenimizi programımızın tamamı için genel hale getirebiliriz.

<?php
function fonk ()
{
$GLOBALS["deg"] = 2;
}
$deg = 1;
fonk();
print $deg;
?>


Global anahtar sözcüğü kullanıldığında, $deg değişkenimiz fonksiyon çağrıldıktan sonra fonksiyonun dışındada varlığını sürdürecektir. Artık kodumuz $deg değişkenini 2 olarak yorumlayabilir. Global anahtar sözcüğünümkullanarak, bir değişkeni tüm program boyunca kapsam içerisinde tutabiliriz.

- require ve include deyimleri kullanmak, kapsamı etkilemez. Eğer deyim bir fonksiyonun içindeyse, fonksiyon kapsamı geçerlidir. Eğer fonksiyon dışındaysa genel kapsam içindedir.
- Değişkenler, unset() fonksiyonu çağrılarak silinebilirler. Bir değişken bu fonksiyon kullanılarka silindiyse artık kapsamda değildir.

- Bir fonksiyona referansla veya değerle parametre geçirmek;

Fonksiyon parametrelerinin normal çağrılma yoluna, "değerle parametre geçirmek" adı verilir. Fonksiyona bir parametre geçirdiğimizde, geçirilen değeri içeren yeni bir değişken yaratılır. Bu değişken orjinal değişkenin bir kopyasıdır. Ancak bu değişkenin değeri fonksiyon içinde yaptığı işleme göre farklı, fonksiyon dışında ise ilk tanımlandığı haliyle farklı olur. Fonksiyonların kapsam kuralları gereği, global anahtar sözcüğünü kullanmadığımız sürece bu durum böyledir. Global anahtar sözcüğü kulanmak ise bazen sıkça tercih edeceğimiz bir yol olmayabilir. Eğer programınızı farklı sayfalara bölmüş yada modüle rbir biçimde tasarlamışsanız, muhtemelen çalışması bitmiş olan değişkenleri bellekten silmek isteyeceksiniz. Belkide bir değişkenin tüm programınız boyunca global kapsam içerisinde kalmasını tercih etmeyeceksiniz. İşte bu tür durumlarda, uygulamak isteyeceğiniz yol, en kolay yol olarak fonksiyonunuza parametre geçirerek çıktı üretmek olacaktır. Aşağıdaki kodu incelerseniz, bunun bazen oldukça karmaşıklaşabildiğini göreceksiniz.

<?php
function ekle($eklenen, $deger = 1)
{
$eklenen = $eklenen + $deger;
}

$eklenen = 10;
ekle($eklenen);
print $eklenen
?>

Kod parçamızın çıktısının verdiğimiz parametre değeri ile aynı yani 10 olarak kaldığını göreceksiniz. Bunun nedeni kapsam kurallarıdır. Kodumuz $eklenen adında 10 değerini içeren bir değişkeni yaratır ve ardından ekle adlı fonksiyonu çağırır. Fonksiyon içinde yaratılan 10 değerli değişkene 1 değeri eklenir ve $eklenen değişkeninin değeri, fonksiyonun yapısı boyunca 11 olarak saklanır. Bu fonksiyonu çağıran koda döndüğümüzde $eklenen adlı değişkenimiz genel kapsam içerisinde ve bambaşka bir değişkendir. Fonksiyon içindeki $eklenen değişkeni genel kodumuz içindeki $ekle değişkeni ile kopya olmasından başka hiç bir benzerliği yoktur. İşte bu yüzden de $eklenen değişkenimizin değeri 11 olarak değişmemiştir.

Parametreyi referansla geçirmek çok daha kolay ve daha sade bir yoldur. Parametre bir fonksiyona geçirildiğinde, fonksiyonun yeni bir değer yaratmasını sağlamaktansa, orjinal değişkeni gösteren bir referans işaretiyle fonksiyona dahil olur. Bu değişkeninde normal değişkenler gibi $ işaretiyle belirlenen bir işareti vardır ve diğer değişkenlerle aynı biçimde kullanılabilirler. Ancak, bu değişkenin kendi değeri yoktur ve sadece orjinalinin bir referansıdır. Bu referans değişkende yaptığımız her değişiklik orjinal değişkeni de direkt olarak etkiler. Parametrenin referansla geçirme işleminde kullanılacağını önüne bir & (ampersand - ve-) işareti koyarak bildiririz. Bu parametremiz fonksiyon tanımlamada kullandığımız parantezlerin içerisinde olur. Böylelikle fonksiyonumuzda ek bir değişikliğe de gitmemize gerek kalmaz.

Yukarıdaki kod parçamızı, parametremizi referansla geçirerek yeniden düzenlersek;

<?php
function ekle(&$eklenen, $deger = 1)
{
$eklenen = $eklenen + $deger;
}

$eklenen = 10;
print $eklenen. "
";

// Referansla geçirilmiş hali
ekle($eklenen);
print $eklenen // Artık değişkenimiz 11 değerine sahip
?>

Parametreleri bir referans ile geçirme işlemimizin sonucu ekran çıktılarımızda net bir biçimde görülecektir. Referansla değer geçirmenin bir avantajı da, fonksiyon ile çağrılan değişken üzerinde değişiklikler yapabilmemizdir.

<?php
function kare_al(&$deger)
{
$karesi = $deger * $deger;
$deger = $karesi;
}
$veri = 10;
kare_al($veri);
print $veri;
?>

Örneğimizde, $veri değişkenine ilk önce 10 değeri atanmış, sonra da kare_al fonksiyonunu $veri parametresi ile çağrılmıştır. Fonksiyonumuz, &$deger biçiminde referansla parametre aldığından, $veri değişkeni ile $deger parametresi bilgisayarın aynı hafıza alanını kullanacaktır. Bu yüzden fonksiyon parametresi $deger değişkeni üzerinde yapılacak olan her değişiklik, $veri değişkenimizide yetkileyecektir. Kod parçamızda $veri değişkenimizin değerinin 10 olmasına rağmen, fonksiyon çalıştırıldığında $veri değişkenimizin değeri 100 olacaktır.

Gönderen _nl2br zaman: 01:40 0 yorum  

Bir kontrol yapısını veya scripti durdurmak

25 Mayıs 2008 Pazar

Eğer bir kod parçasının çalışmasını durdurmak istiyorsak yaratmak istediğimiz etkiye bağlı olarak üç farklı yaklaşımdan faydalanabiliriz.

- Eğer bir döngünün çalıştırılmasını durdurmak istiyorsak, break; deyimini kullanabiliriz. Döngü içerisinde break kullandığımızda, programımızım çalıştırılması döngüden sonraki ilk satırdan devam edecektir.

- Eğer bir sonraki döngü tekrarına atlamak istiyorsak, continue; deyimi işimizi görecektir.

- Bütünüyle betiğin çalıştırılmasını durdurmak istiyorsak, exit deyimini kullanmamız yeterli olacaktır.

Yukarıda verdiğimiz sonsuz döngü içeren kod parçamızı kullanarak bir örnek yapalım:

<?php
$i =1;
for(; ;)
{
if($i > 10)
break;
else
print "$i ";
$i++;
}
?>

Burada for döngüsüne başlangıçta hiç bir şart ve ifade girmedik ama onun yerine başlangıç değerini döngüden önceye, koşul ve sayaç değerini kod bloğu içerisine alarak yani döngünün içerisinde karar kontrol yapısı kullanarak ve break deyimini kullanarak yinede bir döngü kurabildik. Burada break deyimi döngü içerisinde geçtiği anda döngüden çıkıldığına dikkat ediniz. Aşağıdaki örneğimizi dikkatle inceleyiniz:

<?php
for($i = 0; $i <= 5; $i++) { if($i == 4) continue; print "$i "; } ?>
Bu kod parçamızda 1' den 5' e kadar olan sayıları yazdırıyoruz. Döngümüz karar yapımız olan if($i == 4) ifadesine rastlayana kadar çalışmasını sürdürüyor ama deyimin içerisinde koşul 4'e eşitlendiğinde continue deyimi ile bu adım atlanıyor ve döngümüzün çalışması bir sonraki adım olan 5 değeri almış sayaç değişkenine akıyor. Tarayıcımızda göreceğimiz çıktı ise şöyle olacaktır;
0
1
2
3
5

Gönderen _nl2br zaman: 04:37 0 yorum  

Döngüler

Tekrarlanan işleri otomatikleştirmek bir programcının en sık başvurduğu yollardan biridir. Eğer bir şeyi bir kaç kez yapmamız gerekiyorsa programımızın bazı kısımlarını tekrar etmemiz için döngülerden (loop) faydalanırız. Döngüler programlama dillerinin en önemli yapılarındandır. Php' de kendimizi geliştirdikçe tekrarlanan işlemlerden sıralamalara kadar, döngülere sık sık başvuracağız. For döngüsüyle işe başlayalım,

- for döngüsü;
Yapısı:

for(ifade1; koşul; ifade2)
{
ifade3;
}

Php'deki en kısa döngülerdendir. Döngü yapısında üç tane ifade kullanılır.
- Birinci ifade döngüye ilk girildiğinde çalıştırılır. ( Burada genellikle sayacın ilk değeri ayarlanır.) Ardından koşula geçilir.
- Burada bir koşul sağlamak için girdiğimiz ifade vardır ve bu koşul, her tekrardan önce kontrol edilir. Eğer buradaki koşulun sonucunda false değer döndürülürse, tekrarlama işlemi durdurulur. Bu deyimde genellikle sayacı kontrol etmek amacıyla bir limit değeri ile şartlandırırız.
ardından ikinci ifadeye geçilir
- İkinci ifade her tekrarın sonunda bir kez çalıştırılır. (Burada ise sayacın değeri ayarlanır)
Ardından üçüncü ifadeye geçilir.
- Üçüncü ifade de her tekrarda bir kez çalıştırılır. Bu ifademiz genellikle bir kod bloğudur ve bloğun içierisinde koşulumuz true değer ürettiği sürece tekrarlanmasını istediğimiz bir işlem veya bir eylem vardır.
For döngüsünü adaha iyi anlayabilmek için aşağıdaki örnekte, 1'den 10'a kadar olan sayıları satır satır döken bir kod parçası tasarlayalım. Böyle bir kod parçası için önce ifadelerimiz ve koşulumuz tek tek düşünelim. Sayıları 1'den 10'a kadar dökeceğimiz için, ilk ifademizde sayacımızın başlangıç değerini 1, Koşul değerini ise 1'den büyük,10'a eşit olarak ayarlamamız gerekir. Başlangıç değerini 1 olarak atamamız bize döngümüz çalıştığı sürece her turda 1 adım ilerleme olanağı sağlar. İkinci ifademizde ise sayacımız sondan arttırma operatörünü kullanarak değer atamamız yeterli olacaktır. Üçüncü ifademizde ise adım adım elde ettiğimiz verileri ekrana yansıtmak gereken kod parçası olacaktır.
<?php
for ($i =1; $i <= 10; $i++) { echo "$i <br/>"; } ?> Şimdi Kod parçamızın çalışma diagramına bakalım:
Örneğimizde; döngümüze başlangıç değeri olan 1 ile girilmiş, ardından döngü için verilen şarta bakılmıştır. Döngü şartı sağlandığından kod bloğumuz çalıştırılıp ekrana o anki sayaç değeri yansıtılmıştır. Daha sonra + sayacımızın değerine bakılıp, o anki sayaç değeri bir adım arttırılmış ve dögü koşuluna bir kez daha bakılmıştır. Koşul sağlandığından, işleme false değer üretilene kadar bu biçimde aşama aşama devam edilmiş, $i olarak verdiğimiz değer 10 olduğunda alınan boolean değer false olduğundan döngüden çıkılmış ama kod bloğumuz son kez olarak işlenip son sayac değerini ekrana taşımıştır.

Aşağıdaki örnekte 0' dan 10' a kadar olan sayıların karelerini ekrana yansıtıyoruz.


<?php
for($i = 0; $i <= 10; $i++)
{
print "$i'in karesi". $i * $i. "dir <br/>";
}
?>

Bu kod parçamız Ekrana;

0'in karesi0dir
1'in karesi1dir
2'in karesi4dir
3'in karesi9dir
4'in karesi16dir
5'in karesi25dir
6'in karesi36dir
7'in karesi49dir
8'in karesi64dir
9'in karesi81dir
10'in karesi100dir
değerlerini bastıracaktır.

Bu kod parçasının çalıştırılma aşamasınd aneler olduğunu artık düşünebiliyoruz sanırım.
İlk olarak döngüye $i değişkenine girdiğimiz 0 değeri ile girilmiş, şarta bakılmış bir adım ilerlenmiş ve 0 * 0 ın değeri (0' ın karesi) ekrana yansıtılmış ve döngüye 1 adım arttırılarak devam edilmiştir.
Konuyu daha iyi kavrayabilmemiz için bir örnek daha yapalım. Örneğimizde, 1' den 5' e kadar olan sayıların toplamlarını alacak ve döngümüzün çalışma diagramına bakacağız. Bunun için yapmamız gerekeni az çok tahmin edebilirsiniz.


<?php
$topla = 0;
for($i = 1; $i <= 5; $i++)
{
$topla = $topla + $i;
}

print $topla;
?>

Kodumuz 1' den 5' e kadar olan sayıları toplayacak ve çıktı olarak 15 değerini ekrana yansıtacaktır.



Kodumuz çalıştıkça, $topla değişkenimize, sürekli olarak döngü değişkenimiz $i' nin değerini ekleyip şartın sağlanamadığı komumdaki değeri bize yansıtmış ve işini bitirmiştir.

Programlama yaparken bazen sonsuz döngülerle karşılaşırız. Ya mantıklı olmayan bir süreç işletmiş, ya da döngü değerlerini eksik bırakmış programımızı kilitlemişizdir. Aşağıdaki örnek sonsuz döngülerin nasıl oluştuğunu anlatmak bakımından önemlidir.

<?php
for(; ;)
{
print "Ben bir sonsuz döngüyüm";
}
?> // Çıktı vermesi için işlemcinizin oldukça kasması gerekmektedir.

İfadelerin ve koşulun eksik olduğu ama komut bloğunu unutmadığımız bir döngü biçimi.

Php' de döngü kullanırken verdiğiniz ifade/koşul yapısının düzgün biçimde optimize edilmiş olduğunu önemle hatırlatmak isterim. Örneğin

<?php
$dizi = array(1, 2, 3);
for ($i = 0; $i <= count($dizi); $i++)
{
print $i;
}
?>

yerine;

<?php
$dizi = array(1, 2, 3);
$say = count($dizi);
for ($i = 0; $i <= $say; $i++)
{
print $i;
}
?>

gibi bir yapı php için daha anlaşılır ve daha az kaynak tüketmek anlamına gelir.

- while döngüsü;

Php' de en basit yapıya sahip, belkide en sık kullanılan döngü tipidir. Koşula bağlı olarak koşul true (doğru) olduğu sürece çalışır. Yapısı da oldukça basittir.

while( koşul)
{
ifade..... ;
}
Döngü bir koşul belirtmekle başlar ve her tekrar edilişte, koşul kontrol edilir. Koşul false değer üretince ifade bloğu çalıştırılmayacak, ve döngü sona erecektir.

<?php $sayi = 1; while($sayi <= 5) { print "$sayi
";
$sayi++; } ?>

Örneğimizde önce başlangıç için bir sayaç yaptık. Döngünün her tekrarından önce sayacı koşulumuz için kontrol ettik, ifademizi uygulattırdık ve ve tekrarın sonucunda sayacımızı yeniledik. Kodumuzu diagram üzerinde inceleyelim;

Başlangıçta, koşulumuz $i <= 5 ifadesi ile sorgulanmış, $i değişkenimizin değeri 1 olduğundan döngüye girilmiş, kod bloğumuz çalıştırılmış, döngü içerisinde her defasında, $i değişkeni sayaç değerimiz (+) ile arttırılmıştır. Her yinelemede, kod bloğumuz çalıştırılmış, $i değişkenin değeri 6 olana kadar bu süreç devam etmiştir. $i değişkeninin değeri 6 olduğunda döngüde şarta bağlı olarak false değeri oluşturulmuş ve döngüden çıkılmıştır. Aşağıdaki örneğimizde 1' den 10' a kadar olan çift sayılar while döngüsü yardımı ile dökülmüştür. <?php
$i =1;
while($i <= 10)
{
if($i % 2 == 0)
print "$i
";

$i++;
}
?>

Örneğimizi tek sayıları ekrana yansıtmak için yeniden yapılandırınız ve kendi sunucunuzda deneyiniz.

- Do .... while döngüsü;

do while döngüsüde while döngüsü gibi koşula bağlı olarak çalışır ancak, koşul döngünün başında değil sonunda kontrol edilir. Bu nedenle, koşul ifademiz false üretse bile, döngüye en az bir kez girilir. Bunun anlamı, bir do while döngüsü içerisinde yer alan deyim veya kod bloğu, her zaman en az bir kez çalıştırılmaktadır.

Aşağıdaki kodu dikkatle inceleyiniz.

<?php
$sayi = 100;
do
{
print $sayi. "</br>";
}
while($sayi < 1);
?>

// Tarayıcımız 100 rakamını ekrana yansıtır.

Bu kod parçası, koşulun başlangıçta false olduğu ve hiç bir zaman true olamayacağı bir yapıdadır. Ama do while döngüsü ile bir kez de olsa ilk çalışmıştır.

Gönderen _nl2br zaman: 01:03 0 yorum  

Karar yapıları

23 Mayıs 2008 Cuma

Karar yapıları, php içerisinde bir betik boyunca yürütme işlemlerinin akışını kontrol etmemizi sağlar. Bunlar koşullu kontrol yapıları ve döngüler olarka iki grupta toplanırlar.

Koşullu karar yapıları;

Kullanıcı girdilerine mantıklı yanıtlar verebilmemiz için, kodumuzun karar yeteneğine sahip olması gerekmektedir. Programlarımızın karar vermesini sağlayan yapılar koşullu karar yapıları, veya koşullu deyimler olarak adlandırılırlar. Bu bölümde if....else, switch....case, ve alternatif karar yapıları üzerinde durmaya çalışacağız.

a- if karar yapıları;

Bu karar yapısı, içindeki şart ifadesi true değer döndürdüğünde kod yada kod bloglarını çalıştırmamıza yarar. Karar yapısı içindeki şart, true ya da false değer döndüren herhangi bir karşılaştırma ifadesi yada mantıksal bir ifade olabilir. Kodumuzu kod bloğu içine aldığımızda(süslü parantez), koşul doğru olduğunda takip eden kod bloğu çalıştırılacaktır. if deyimlerindeki koşulların ( ) -parantez- içerisine alınması gerekir. Deyimin yapısı aşağıdaki gibidir.

if(koşul) komut;

veya süslü parantezler içerisinde -ki bu oldukça sağlıklıdır-

if(koşul) {
komut 1;
komut 2;
komut N;
}

- Kod blokları:

Çoğunlukla if koşullu deyimleri içersinde çalıştırmak istediğimiz birden fazla deyim bulunur. Bunların her birinin başına if koymak gerekmez. Bunun yerine örtüşen deyimleri, bir kod bloğu olan { süslü parandezler arasına } almamız işimizi oldukça kolaylaştıracaktır.

<?php
$mehmet = "öğrenci";

if($mehmet == "öğrenci") {
echo "<font color=navy>";
echo "Mehmet bir".$mehmet."dir";
echo "</font>";
}

?>

Yukarıdaki örneğimizde süslü parantezlerimiz içerisine aldığımız deyimleri if şartının true değer döndürmesi sonucunda ekrana bastırdık. Buradaki süreç şöyle gerçekleşmektedir: $mehmet değişkenimize atadığımız öğrenci değeri, if yapısı içerisinde şartın sağlanıp sağlanamadığını kontrol etmemiz için değerlendirildi. Koşulun doğruluğu programda test edilerek true tipinde bir boolean değer gönderildi ve süslü parantezler içerisindeki deyimlerimiz sırasıyla çalıştırıldı. Burada koşulumuz doğru ise süslü parantezler içerisindeki kod bloğumuzun çalıştığına dikkat ediniz. Peki eğer koşulumuz false(Yanlış) olsaydı ne olacaktı? Koşulun doğru veya yanlış olduğu durumlara göre kodumuzun karar vermesi için if yapısı içindeki else mekanizmasını kullanırız. burada else mekanizması koşulun false olduğu durumlarda gerçekleştirmek istediğimiz alternatif bir eylemin kodumuz içinde değerlendirilmesini sağlar. Şimdi yukarıdaki kod parçamızı else mekanizmasını kullanarak yeniden değerlendirelim.

$mehmet = "öğretmen";

if($mehmet == "öğrenci") {
echo "Mehmet bir öğrencidir.";
} else {
echo "Mehmet bir öğretmendir.";
}

örneğimizi incelediğimizde, if karar yapısının true değer döndürdüğünde, if deyiminin altındaki kod bloğumuz, false değer döndürdüğünde ise else deyiminin altındaki kod bloğumuzun çalıştırıldığını farketmişsinizdir. Bu karar yapısı aşağıdaki biçimde çalışır.

if(koşul)
{
eylem1;
eylem1;
}
else
{
eylem2;
eylem2;
}

elseif deyimleri;

Programlarımızı kodlarken kontrol edeceğimiz bir çok kararda ikiden fazla seçenek bulunabilir. else if deyimi bu tür durumlar için birden fazla seçenekten oluşan bir seri kontrol mekanizması gerçekleştirebilmemizi sağlarlar. elseif deyimi else ve if deyimlerininbirleşimlerinden oluşur. Kodumuza elseif ile gerçekleştirdiğimiz bir koşullar serisi sunduğumuzda, php true olanı bulana kadar her şartıkontrol edecektir.
Örneğin bir web sitemiz var ve ziyaretçilerin web sitemizi nereden duyduklarını öğrenmek istiyoruz. Bunun için elseif deyimini kullanarak basitçe bir karar kontrol yapısı kurup ziyaretçilerimizin seçimlerini işleyebiliriz.

<?php
$nereden = 3;
if($nereden == 1) {
echo "Tv Gazete ve dergi reklamlarından öğrendim";
} elseif ($nereden == 2) {
echo "Arkadaşımdan duydum";
} elseif ($nereden == 3) {
echo "Arama motorları yönlendirdi";
} elseif ($nereden == 4) {
echo "Tesadüfen sitenize girdim";// Çıktımız
Arama motorları yönlendirdi olur
}
//
$nereden değişkenine farklı numaralar atayarak durumu kontrol edebilirsiniz.
?>

Kodumuz bu örnekte verileri bir form değerinden almıyor. $nereden değişkeninin değeri dört seçimli bir form değişkeninden alınıp rahatça işlenebilir.Yukarıda görüldüğü gibi programımız true sonunucu bulana kadar her seçeneği tek tek işleyip true değerini bulduğunda o seçenekle ilgili olan kod bloğumuz çalıştırıp bize ulaşmak istediğimiz veri parçasını sundu.
Bu yapıda önemli olan bu tür basamaklı elseif yapılarında php motorumuz, bloglar ve deyimlerin sadece birini çalıştırır. Eğer koşullarımızın birden fazlası doğru olacak çekilde bir elseif basamaklı yapısı kurarsak, sadece ilk doğru koşulu takip eden deyimimiz ve ona bağlı olan blok çalıştırılır. Bu gibi durumların üstesinden gelebilmek için biz switch deyimlerini kullanırız.

b- switch, case karar yapıları;

switch deyimi if deyimine benzer biçimde çalışır ancak koşulun ikiden fazla değer almasına olanak sağlar. if deyiminin içine koşul true yada false olabilir. Oysa switch deyiminde, koşul çeşitli sayıda farklı değerler alabilir. Tepki vermek istenilen bir değeri kullanabilmemiz için, case mekanizmasını kullanmamız gerekir. Eğer belirli bir case deyimi ifade etmek istmediğimiz değerle için varsayılan bir durum ayarlayabiliriz.
Yukarıda vermiş olduğumuz örneği switch yapısı için yeniden düzenleyelim.

$nereden = 2;
switch($nereden)
{
case 1:
print "Tv Gazete ve dergi reklamlarından öğrendim.";
break;
case 2:
print "Arkadaşımdan duydum";
break;
case 2:
print "Arkadaşım mesaj yolladı";
break;
case 3:
print "Arama motorları yönlendirdi";
break;
case 4:
print "Tesadüfen sitenize girdim";
break;
} // Örneğimiz Arkadaşımdan duydum çıktısını vercektir.

bu deyim if else deyiminden farklı biçimde işler. if deyimi süslü parantezler kullanılmadığı takdirde, tek bir deyimi etkiler, switch ise bunun tam tersi biçimde davranır. switch deyimi içerisindeki case etkinleştirildiğinde, php bir break deyimine rastlayana kadar, deyimleri çalıştırmayı sürdürür. Bir break deyimi olmadan switch, doğru olan case' yi takip eden tüm kodlarımızı çalıştırır. Bir break deyimine gelindiğinde ise, switch deyiminden sonra gelen kod satırı çalıştırılır.
Yukarıdaki örnekte "Arkadaşımdan duydum" ifadesinin altında yer alan break deyimini kaldırıp kod parçamızı yeniden çalıştırırsanız;
"Arkadaşımdan duydum Arkadaşım mesaj yolladı"
çıktıları ile karşılaşırsınız.

Aşağıdaki örnekte bu konu ile ilgili bir örnek daha veriyorum. Lütfen $cevap değişkeni değerlerini değiştirerek kendi yerel sunucunuzda denemelerinizi yapınız.

<?php
$cevap = "h";
switch ($cevap)
{
case "e":
case "E":
print "Cevabınızı EVET olarak verdiniz.";
break;

case "h":
case "H":
print "Cevabınızı HAYIR olarak verdiniz";
break;
}// Çıktımız Cevabınızı HAYIR olarak verdiniz olacaktır.
?>

Gönderen _nl2br zaman: 03:10 0 yorum  

Diziler

22 Mayıs 2008 Perşembe

Php'de diziler, skaler değişkenlerin gruplanarak saklandıkları,bir anahtar ve bir değer çiftinde oluşan değişkenlerdir. Dizi içerisinde saklanan değerlere eleman, bu elemana erişim için kullanılan ilişkili indexine de anahtar deriz. Dizilerin sıfır yada bir'den başlayan sayısal indexleri vardır ve PHP birleşik dizileri de destekler ve dizi anahtarları sayısal veya string tipi verilerden oluşabilir. Php'de diziler print veya echo gibi birer fonksiyon olmayıp bir php yapısıdır.

Diziler; array(); biçiminde tanımlanırlar, ve içlerinde köşeli parantezlerle ayrılmış anahtar ve bun işaret eden veri tipleri bulunur:

array([anahtar =>] değer, [anahtar =>] değer, ...)

Faydaları:
Diziler ortak skaler değişkenleri gruplamamızı sağlar,
Dizileri kullanmakla bir bilgi grubunu, tek bir birim olarak hareket ettirebiliriz.

Sayısal indexli diziler;

Bu yapıda anahtar opsiyonel olmakla birlikte, dizi tanımlaması yapılırken php tarafından otomatik olarak (0) sıfırdan başlayarak artan değerler atanır(elle bir değer de verebilirsiniz).

array(1, 2, 3) yazmakla dizimizi array( 0 => 1, 1 => 2, 2 => 3) olarak ifade etmiş oluruz.
Bir diziyi bir diziye basitçe = (atama) operatörünü kullanarak kopyalayabiliriz.

<?php
$sayilar = array(1, 2, 3);
$veriler = array("sorento", "mazda", "ford");
$sayilar = $veriler; // Veriler dizimizi, sayılar dizimize kopyalıyoruz.
print_r ($sayilar); // Çıktımız; Array ( [0] => sorento [1] => mazda [2] => ford ) olacaktır.
?>

Eğer küçükten büyüğe bir sayı grubuna sahip dizi yaratmak istiyorsanız range() fonksiyonu ile bunu basitçe yapabiliriz.

$sayilar = range(1, 10);
print_r ($sayilar); // Burada dizimizi print_r fonksiyonumuzla ekrana bastırıyoruz.
/* Çıktımız :
* Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 )
* Olarak yansıyacaktır.
*/

Dizi İçeriklerine erişim;

Bir dizi değişkenin içeriğine erişmek için, dizi değişkeni ve ilgili anahtarını veya indexini yazmamız yeterlidir. İndex köşeli parantezlerin içine dizi değişkenin adından hemen sonra yerleşir.

dizimiz $dizimiz = array("Mazda", "Ford", "Kia"); Olsun. Eğer Kia verisine ulaşmak istiyorsak; $dizimiz[2]; yazmamız yeterlidir. Yukarıda da anlattığım gibi dizilerin sayısal indexleri 0'dan başlar ve bizim dizimizdede dizinin ilk elemanı olan Mazda burada, indexi 0(sıfır) olan değerimizdir.
Diğer değişkenlerde olduğu gibi dizi değişkenlerinin elemanlarıda = (atama) operatörü kullanılarak değiştirelebilir.

$dizimiz[2] = "Toyota"; // Dizimizin Kia olan elamanını, Toyota olarak değiştirdik. Eğer dizimize yeni bir eleman eklemek istersek basitçe bir sonraki indekse yeni bir eleman atamakla bu işlemi yaparız.

$dizimiz[3] = "Opel"; // Artık dizimizde 4 eleman var.

Eğer dizi içeriğini tarayıcıya yansıtmak istiyorsak;

echo "$dizimiz[0] $dizimiz[1] $dizimiz[2] $dizimiz[3]"; Yazmamız yeterlidir.

Diğer Php Değişkenleri gibi, dizilerede önceden ilk değer verilmesi ya da önceden dizilerin yaratılması gerekmez. Diziler kullanmaya başladığımız anda otomatik olarak yaratılmış olurlar.

$dizimiz[0] = "Mazda";
$dizimiz[1] = "Toyota";
$dizimiz[2] = "Ford";
$dizimiz[3] = "Opel";

İşte size dört elamana sahip basit bir dizi. Eğer dizimiz adlı dizi değişkenimiz yoksa, ilk satırda dizimize Mazda değerini atamamızla birlikte otomatik olarak yaratılmış olur. Ardından gelen diğer verilerde otomatik olarak dizimize eklenirler.

Birleşik diziler;

Birleşik dizilerde dizi içerisinde yuvalanmış veriler bulunur. Aşağıdaki dizi değişkenimize bakalım.

$dizi_1 = array("isim" => "Mehmet", "Yas" => 30);
$dizi_2["isim"] = "Mehmet";
$dizi_2["Yas"] = 30;
if($dizi_1 == $dizi_2) {
print '$dizi_1 ve $dizi_2 benzerdir'; // Çıktımız
$dizi_1 ve $dizi_2 benzerdir olur.
}

Yukarıdaki kod parçamızda isim'in anahtar, Mehmet' in değer olduğu bir birleşik dizi yarattık. Birleşik bir dizide her bir değerle istediğimiz bir anahtar ya da indeksi ilişkilendirebiliriz.

Dizi değişkenlerindeki anahtarları kullanarakta verilere erişebiliriz.

$dizi_1 = array("isim" => "Mehmet", "Yas" => 30);
$dizi_2["isim"] = "Mehmet";
$dizi_2["Yas"] = 30;
print $dizi_2["isim"];
if ($dizi_2["yas"] <>Mehmet olgunluk yolunda ilerliyor" olacaktır.

Çok boyutlu diziler;

Dizilerimizin basit birer anahtar => değer çiftleri olmaları gerekmez. Dizideki her konumbaşka bir diziyi de barındırabilir. Böylece iki boyutlu bir dizi yaratmış oluruz. İki boyutlu bir dizi eni ve boyu olan bir matris veya satırları ve sütunları olan bir tablo gibi düşünülebilir.

$dizimiz = array(1 => array("isim" => "Mehmet", "yas" => 30), array("isim"=> "Orhan", "yas" => 27));
print $dizimiz[1]["yas"]; // Çıktımız 30 olacaktır.

Dizi içeriğine erişmek için döngülerden faydalanmak;

Dizi değişkenlerde değişken içeriklerine erişmek için farklı yollar vardır. Genellikle bir dizinin içeriğine erişmek için foreach döngüsünden yararlanılır. Foreach döngüsünün yapısı aşağıdaki gibidir:

foreach($dizimiz as [$anahtar =>] [&] değer);

Aşağıdaki örneğimizi inceleyelim.

$dizimiz = array("Mazda", "Toyota", "Opel", "Kia");
print "Araçlar : \n";
foreach ($dizimiz as $anahtar => $deger) {
print "#$anahtar = $deger \n";
}
// Çıktımız: Araçlar : #0 = Mazda #1 = Toyota #2 = Opel #3 = Kia gibi olacaktır.

Bir diğer kullanışlı yöntem ise list ve each yapısını kullanmaktır. Kendisi bir fonksiyon olan each(), bir dizideki geçerli elemanı döndürür ve yeni elemanı geçerli eleman yapar. Bu fonksiyonu bir while döngüsü içerisinde kullandığımızda, dizideki her elemanı sırayla döndürür.

$yaslar = array("Orhan" => 25, "Meral" => 23);
reset($yaslar);
$kisi = each($yaslar);
print "Kisi :";
print $kisi["key"];
print "Yaşı :";
print $kisi["value"];

Diğer fonksiyonumuz olan list(), fonksiyonuda, diziyi belirli sayıdaki değerlere bölmek için kullanılmaktadır ve elde edilen değişkenlere isim vermemizi sağlar. Yapısı aşağıdaki gibidir.

list($degisken1, $degisken2, ...) = $dizimiz;

ilk değişkenimiz olan $degisken1, dizimizdeki ilk pozisyon olan sıfır konumundaki değişkendir. İterasyona devam edildikçe, dizi içerisindeki pozisyon 1, 2, ve dizi sonuna kadar yer alan değişkenleri sırasıyla kullanımımıza sunar.

$degisken1 = $dizimiz[0];
$degisken2 = $dizimiz[1];

each() fonksiyonunu kullanırken dikkat edilecek bir nokta vardır. Aynı kod içerisinde fonksiyonu iki kez kullanmak istiyorsak, geçerli elemanı reset() fonksiyonu kullanarakdizinin başlangıcına ayarlamak gerekmektedir.

$kisiler = array("Mehmet", "Orhan", "Semih", "Meral");
reset($kisiler);
while (list($anahtar, $deger) = each($kisiler)) {
print "#$anahtar = $deger\n";
}
// Çıktımız : #0 = Mehmet #1 = Orhan #2 = Semih #3 = Meral olacaktır.

Dizilerde sıralama işlemleri;

Dizi içerisindeki verileri sıralamak çoğu zaman oldukça faydalıdır.

sort(); Fonksiyonunu kullanmak;

sort() fonksiyonu, kendisine geçirilen dizi içerisindeki elemanları alfabetik ya da sayısal olarak küçükten büyüğe doğru sıralar. Sıralama başarılı ise true, değilse false değer döndürür.

$kisiler= array("Meral", "Orhan", "Semih", "Halil");
sort($kisiler);
foreach($kisiler as $anahtar => $deger) {
print "#$anahtar = $deger";
}

sort() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.sort.php ziyaret ediniz.

asort(); ve ksort() Fonksiyonlarını kullanmak;

Genellikle birleşik dizilerde kullanılırlar. asort() fonksiyonu her elemanı değerine göre sıralar. İşlem başarılı olduğunda true, başarısız olduğunda false değeri döndürür.

$kisiler= array("Meral" => 35, "Orhan" => 30, "semih" => 27, "Halil" => 40);
asort($kisiler);
foreach($kisiler as $anahtar => $deger) {
print "#$anahtar = $deger";
}
// Çıktısı
#semih = 27#Orhan = 30#Meral = 35#Halil = 40

Örneğmizde kişilerin yaşlarının küçükten büyüğe doğru sıralandığını gözlemleyebilirsiniz.

asort() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.asort.php ziyaret ediniz.

Eğer dizi içeriğindeki elemanları değerine göre değilde anahtara göre sıralamak isteseydik, bunun için ksort() fonksiyonunu kullanmaya gerek duyardık. Bu foknksiyonumuzda başarılı olup olamama durumuna göre booolean bir değer gönderir. Bu değer başarılı ise true, başarısız ise false olacaktır.
Yukarıdaki örneğimizi ksort() fonksiyonumuzu kulanarak yineleyelim.

$kisiler= array("Meral" => 35, "Orhan" => 30, "semih" => 27, "Halil" => 40);
ksort($kisiler);
foreach ($kisiler as $anahtar => $deger) {
print "#$anahtar = $deger";
}
// Çıktımız alfabetik olarak sıralanarak #Halil = 40#Meral = 35#Orhan = 30#semih = 27 olarak tarayıcımıza yansıdı.

ksort() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.ksort.php ziyaret ediniz.

Gönderen _nl2br zaman: 22:52 0 yorum  

Veri Tipleri

Php içinde kullanılan veri tiplerini bu başlık altında inceleyeceğiz

Gönderen _nl2br zaman: 22:46 0 yorum  

Operatörlerin Öncelik Sırası

Aşağıdaki tabloda Önceliği en yüksek olan operatörler ilk sırada olmak üzere kullandığımız tüm operatörler değerlendirme sıralarıyla birlikte dökülmüştür.


Gönderen _nl2br zaman: 18:46 0 yorum  

Diğer Operatörler

Virgül Operatörü;
Php'de virgül( , ) operatörü, fonksiyon argümanlarını,ve öğe listelerini birbirinden ayırmak için kullanılır.
Örneğin;
$unset($degisken1, $degisken2, $degisken3, $degiskenN);

new ve -> operatörü;


new operatörü php'de bir sınıfın örneğini oluşturmak için kullanılır,
-> operatörü ise, sınıfın üyelerine erişmek için kullanılmaktadır.

[] Dizi Operatörü;


Dizi operatörü ( [] ), bir dizi içindeki elemanlara ulaşmamızı sağlaması açısından oldukça yararlıdır. Örneğin;

$araclar = array("Mazda", "Toyota", "Renault", "Fiat"); Olsun. Ve ben Renault a ulaşmak isteyeyim. Burada dizi sıralaması sıfırdan başlayacağı için benim;
$araclar[2]; //yazmam yeterli olacaktır.

Ternary Operatörü;

Üçlü ifade operatörüdür. İf else karar kontrol yapısı gibi çalışır.
koşul ? true ise değer : false ise değer;
Örneğin;

($not > 65 ? "Geçtin" : "Kaldın");

Hata Bastırma Operatörü;


Hata bastırma operatörü olan ( @ ) operatörü, her ifadenin önünde kullanılabilir. Örneğin;
$x = @(100/0); // @ operatörü olmadan bu satır "sıfıra bölme uyarısı verecektir. Operatör kullanılıtken bu hata bastırılır.
Not: Eğer hata bastırma operatörü kullanıyorsanız, bir uyarının olup olmadığını anlamak için hata yakalama kodu yazmanız gerekecektir. Eğer php.ini dosyanızda track_errors özelliği etkin haldeyse, hata mesajı, global değişken olan, $php_errormsg içinde saklanacaktır.

Çalıştırma Operatörü;

Çalıştırma operatörü ( `` ) -execution operatörü- sıkça tek tırnak ile karıştırılır. Çoğunlukla klavye üzerinde,~ ile veya (; ile aynı yerde bulunur. Php bu tırnaklar arasında kalan herşeyi,sunucunun komut satırındaki bir komut gibi çalıştırmak ister.
örneğin windows sunucusu üzerinde;
$dizin = `dir c:`;
print "<pre>".$dizin."</pre>"; // Çıktımız bi dizin listesi barındıracakve bunu $dizin değişkenimiz içinde saklayacaktır.

Bitwise Operatörleri;

Bir tamsayıyı, onu temsil etmek için kullanılan bir bit serisi olarak ele almamızı sağlarlar.


Gönderen _nl2br zaman: 17:31 0 yorum  

Mantıksal Operatörler

Php'de mantıksal operatörler, mantıksal koşulların sonuçlarını birleştirme için kullanılırlar. Elimizdeki değişkenin olası değerlerini saptamamızı kolaylaştırırlar.
Örneğin elimizde değeri 0 ile 100 arasında olabileceği bir durum düşünelim:

$x >= 0 && $x <= 100; // Burada mantıksal ve operatörünü kullanarak değişken değerimizin 0 ile 100 arasında bir değer alıp almadığını kontrol edebiliyoruz.


Burada dikkat etmemiz gereken durum, and ve or operatörlerinin öncelikeleri, türdeşleri olan, && ve || operatörlerinden daha düşüktür.

Gönderen _nl2br zaman: 17:18 0 yorum  

Karşılaştırma Operatörleri

İki değeri karşılaştırmak için kullanılırlar. ifade sonucunda, karşılaştırmanın sonucuna göre true yada false sonucu döndürürler.

Eşitlik Operatörü;


Php'de iki değerin eşit olup olmadığını (==) - İki tane eşittir- operatörü ile kontrol ederiz.

$x == $y;

$x ile $y içinde saklanan verilerin aynı olup olmadıklarını bu biçimd ekontrol edebiliriz. Bu ifadede döndürülen sonuc true ise eşittir, değilse false yani eşit değillerdir diyebiliriz.

Denklik Operatörü;

Php'de ifadeye verilen 2 operandın hem eşit hemde aynı tipte olup olmadığını kontrol etmek için kullanılır.

$sayi = 17;
$veri = 17;
print $sayi === $veri;// Çıktımız 1 olur. Burada $veri değişkenimize literal değer atarsak çıktımız 0 Yani false olacaktır.


Gönderen _nl2br zaman: 16:58 0 yorum  

Önden veya Sondan Arttırma ve Azaltma Operatörleri

Php'de arttırma ve azaltma operatörlerinin iki etkisi vardır. Bir değeri arttırırlar veya azaltırlar ve o değeri döndürürler.

$x = 10;
print ++$x;

Yukarıda verilen örneği dikkatlice inceleyecek olursak, çıktı aldığımız satırda önden arttırma operatörü kullandığımızı ( ++ Arttırma operatörünü $x değişkeninin önüne koymuş olduğumuzdan) ifade edebiliriz. Bu işlemin ilk etkisi, $x değişkenimizi 1 arttırmaktır. İkinci etkisi ise arttırılmış değeri döndürmektir. Örneğimizde $x değişkeni arttırılarak değeri 11' e getirilmiş ancak bundan sonra değer 11 olarak döndürülmüştür. Artık bu ifadenin değeri 11 olmuş ve değişkenimizin içindeki 10 olan değer de 11' eşitlenmiştir.
Ancak arttırma operatörümüz olan (++) işaretlerini $x' ten sonraya alalım ve ifademiz şu biçimde olsun;

$x = 11;
print $x++;

Yeniden düzenlediğimiz yapıda $x 'değişkenini sağına aldığımız (++) Arttırma operatörümüzün ifademize yine iki etkisi olmaktadır. İlk olarak $x değişkenimizin değeri olan 10 döndürülür ve yazdırılır ardından arttırılma işlemine geçilir. Tüm bu ifademizin şu anki değeri sadece 10'dur. Ancak ifademiz çalıştırıldıktan sonra $x'in değeri 11' eşitlenir.

Aynı yapı ve kurallar Azaltma operatörümüz olan ( -- ) içinde geçerlidir.

Gönderen _nl2br zaman: 02:37 0 yorum  

Birleşik Atama Operatörleri

Php'de bir dizi birleşik atama operatörleri de vardır. Bunların var olma sebebi, bir değişken üzerinde işlem yapıp soncun yine bu değişkene atanmasının gerçekleştirilmesi içindir ve oldukça kullanışlı bir kısa yoldur.


$x += 11; yazmakla $x = $x + 11; yazmak aynı anlama gelir. Hem aritmetik operatörler hem de string operatörleri için birleşik atama operatörleri vardır.


Gönderen _nl2br zaman: 02:25 0 yorum  

Atama Operatörleri

( = ) php'de bu işaret eşittire değil atamaya işaret eder ve her zaman "... ya ayarlanmıştır olarak okunur.
$motorGucu = 1600; // motorGucu 1600 ' e ayarlanmıştır olarak okunur ve tüm atama ifadesinin değeri, sol taraftaki operanda verilen değerdir.
Örneklerimize bakalım;
$x + $y; // Sonucu x ve y değişkenlerinin değerlerinin toplamıdır.
$renk = Kırmızı; // $renk değişkenimize kırmızı değeri verir, yani ifademizin değeri kırmızıdır.
$x = 25 +($y = 5); // $x değişkenimizin değerini 30 olarak ayarlar.
** operatör önceliklerine az sonra değineceğiz.

Gönderen _nl2br zaman: 02:15 0 yorum  

String Operatörleri

( . )- Nokta Php'de string birleştirme operatörüdür ve iki stringi ardarda eklemek için kullanılır. Toplama operatörünün iki rakamı toplaması gibi bir sonuc elde ederiz.

$renk = "Mavi";
$nitelik = "bir kuş";
$sonuc = $renk.$nitelik;
print $sonuc; // Çıktımız mavi bir kuş olacaktır.

Gönderen _nl2br zaman: 02:08 0 yorum  

Aritmetik Operatörler

Aritmetik Operatörler;
Bildiğimiz matematik işlemlerinde kullanılan operatörlerdir.



Bu operatörleri kullanarak işlemlerimizin sonuclarını saklayabiliriz.

$sonuc = $a + $b; // Burada a değişkeni değer ile b değişkeni değeri toplanır sonuc, sonuc değişkeni içerisine depolanır.

Yardımcı Bilgiler:

1- Çıkarma işaretini ( - ), negatif sayıları belirtecek şekilde tekli bir operatör( yani tek bir argüman alan operatör) olarak da kullanabiliriz.
Örneğin $sonuc = -1;
2- çarpma ve bölme işlemleri toplama işlemi gibi çalışır. Çarpma için kullanacağımız sembol ( * ) -Yıldız- bölme için kullanacağımız sembol ( / ) Eğik çizgidir.
3- Kalan operatörü, $a değişkenini $b değişkenine bölünce kalanı verir.
Örneğin;
$a = 45;
$b = 20;
$sonuc = $a % $b;
print $sonuc; // sonuc değişkeninde 45'i 20'ye böldüğümüzde kalan rakamı verir.

Yardımcı bilgiler;

Aritmetik operatörler, genellikle tamsayılara veya reel sayılara uygulanır. Bunları stringlere uygularsak php, stringi bir sayıya çevirmeye çalışacaktır. Strin içinde bir "e" ya da bir "E" bulunuyorsa php bunu reel sayıya çevirecektir. Eğer raal sayıya çevrilecek karakter yoksa php verilerimizi tam sayıya çevirmek için strinlerimizde herhangi bir rakam arayacak ve bunları değer olarak kullanacaktır. Eğer stringlerimizde hiç değer rakam bulunmuyorsa, stringlerimizin değeri 0 (sıfır) olacaktır.

<?php
$a = "5 mavi elma";
$b = "Burada sayı yok";
$sonuc = $a + $b;
print $sonuc; // Çıktımız 5 değerini verecektir.
?>

Gönderen _nl2br zaman: 02:07 0 yorum  

Operatörler

Değişkenler ve değerler üzerinde işlem yapmak ve onları düzenlemek için kullanılan sembollere operatör deriz.
Genelde operatörler bir, iki ya da üç argüman alabilir ama çoğunlukla iki argüman alan operatörlerle karşılaşacağız. Örneğin atama operatörü olan( = ) işareti iki argüman alır. Sembolün sol tarafında saklama konumu, sağ tarafına ifade argümanları olur ve biz bu argümanlara OPERAND deriz. Örnek;

$renk = "Mavi"; // Bu örnekte $renk değişkenimiz saklama konumundaki operandı, Mavi ise içeriğini oluşturan ifadeyi gösterir.
Şimdi Operatörleri ayrı başlıklar altında inceleyelim:

Gönderen _nl2br zaman: 01:27 0 yorum  

Değişkenler 2

15 Mayıs 2008 Perşembe

Php'nin Yerleşik değişken fonksiyonları;
Php'nin içerisinde değişkenleri farklı şekilde denetlememiz,düzenlememiz ve denememize yarayan yerleşik fonksiyonları vardır. Bunları Değişik konu başlıkları altında aşağıda dökeceğim.

Değişken Tiplerini Ayarlamak ve Kontrol Etmek;
Php'de bir değişkenin tipini belirlemek için gettype() Yerleşik fonksiyonunu kullanırız. Bu fonksiyonu kullanmak için ona basitçe tipini öğrenmek istediğimiz değişkeni geçiririz ve fonksiyon değişkenimizin tipini belirleyerek bize sonucu döndürecektir. Eğer değişkenimiz standart tiplerden(integer, double,string,array,object) değilse sonuc olarak bize "unknown type" (bilinmeyen tip) mesajını döndürecektir.
Eğer değişkenimizin tipini değiştirmek istiyorsak, settype(); yerleşik fonksiyonunu kullanmak işimizi rahatça görecektir. Örneklerimizi inceleyelim;

$hacim = 1493;
print gettype($hacim)."</br>";
settype($hacim, "double");
print gettype($hacim)."</br>";

Örneğimizde gettype ilk çağrıldığında,$hacim değişkenimizin tipi, tamsayıdır. settype()' a yapılan çağrıdan sonra değişkenimzin tipi, reel sayı olarak değiştirilecektir.
gettype() Fonksiyonunun prototipi ve örnek uygulamalar için php manual linkini http://tr2.php.net/manual/en/function.gettype.php ziyaret ediniz.
settype() Fonksiyonunun prototipi ve örnek uygulamalar için php manual linkini http://tr2.php.net/manual/en/function.settype.php
ziyaret ediniz.

Php tipe özgü tip kontrol etme fonksiyonları da sunmaktadır. Bunların her biri, değişkeni bir argüman olarak alır ve tipine göre true ya da false sonucunu döndürür.

1- is_array(); Fonksiyonu:
Bu fonksiyon kendisine geçirilen değişkenin bir dizi olup olmadığını kontrol eder. Eğer değişken bir dizi değişken ise true, değilse false değeri döndürür.
<?php
$dizi = array('Bu', 'bir', 'dizi', 'değiskendir');
echo is_array($dizi) ;// Çıktısı 1 yani true Değeri olacaktır.
?>
is_array() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.is-array.php
ziyaret ediniz.
2- is_float();Fonksiyonu: is_double() ve is_real() fonksiyonu ile aynıdır. Kendisine geçirilen değişkenin, reel sayı olup olmadığını, reel sayı ise true değilse false değerini döndürür.
<?php
$sayi = 12.05;
echo is_float($sayi) ;// Çıktısı 1 yani true değeri olacaktır.
?>
is_float() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.is-float.php
ziyaret ediniz.
3- is_int(); Fonksiyonu: is_long() ve is_integer()fonksiyonları ile aynıdır. Kendisine geçirilen değişken tipinin, tam sayı olup olmadığını, tam sayı ise true, değilse false sonucunu döndürür.
<?php
$sayi = 15;
echo is_int($sayi) ;// Çıktısı 1 yani true değeri olacaktır.
?>
is_int() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.is-int.php
linkini ziyaret ediniz.
4- is_string(); Fonksiyonu: Kendisine geçirilen değişkenin tipinin string tipi veri olup olmadığını, string ise true, değil ise false değerini döndürür.
<?php
$degiskenimiz = "_nl2br 'de bir fonksiyondur aslında...";
echo is_string($degiskenimiz) ;// Çıktısı 1 yani true değeri olacaktır.
?>
is_string() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.is-string.php
ziyaret ediniz.

Değişken Durumunu Kontrol Etmek;
Php'de bir değişkenin durumunu kontrol etmek için bir kaç fonksiyon bulunmaktadır.

Bir değişkenin adını bir argüman olarak alan ve değişken varsa true, yoksa false sonucunu veren isset(); fonksiyonu,
Bir değişkenin olup olmadığını, varsa bunun değerinin boş ve sıfır olmadığını kontrol eden empty() fonksiyonu,
ve değişkeni ortadan kaldıran unset() fonksiyonu bunlardan bir kaçıdır.

<?php
$arac = "";
echo isset($arac)."a</br>";
echo isset($degiskenYok)."b</br>";
echo empty($arac)."c</br>";
echo empty($degiskenYok)."d</br>";
?>

Yukarıdaki örneği kendi sunucunuzda denerseniz, 1a,b,1c,1d çıktısı ile karşılaşırsınız. Bir değişkenin değeri ne olursa olsun, içeriği boş bile olsa, eğer değişken varsa isset() fonksiyonundan true değeri alırsınız. $degiskenYok adlı değişkenimiz ise böyle bir değişken olmadığından false değeri döndürmektedir. 1c ve 1d sonuçları ise bize empty() fonksiyonundan dönen true sonuclarını göstermektedir. $arac; değişkenine veri girerek denemeler yapmanız faydalı olacaktır.
isset() Fonksiyonu prototipi ve örnek uygulamaları için php manual linkini:
http://tr2.php.net/manual/en/function.isset.php
empty() Fonksiyonu prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.empty.php
unset() Fonksiyonu prototipi ve örnek uygulamaları için php manual linkini:
http://tr2.php.net/manual/en/function.unset.php
ziyaret ediniz.

Değişkenleri Yeniden Yorumlamak;


Php'de yerleşik olan üç fonksiyon vardır ki, bu fonksiyonlara geçirdiğimiz değişkenlerin tiplerini otomatik olarak kendi veri tiplerine çevirirler.
1- intval(); Fonksiyonu: Kendisine geçirilen sayısal tipte olan bir değişkenin tipini integer(tamsayı) tipine çevirir. intval(); değişkenimize boş bir dizi veya nesne tipine sahip değişken ya da string tipi değişken geçirdiğimizde fonksiyonumuz 0(sıfır) değeri döndürür. Boş olmayan dizi tipi değişken ve nesne tipi değişkenlerde intval fonksiyonu 1 ( bir) değerini döndürecektir.
<?php
$degiskenimiz = "_nl2br 'de bir fonksiyondur aslında...";
echo intval($degiskenimiz) ;// Değişkenimizin veri tipi string olduğundan Çıktısı O (sıfır ) değeri döndürür.

?>
intval() Fonksiyonu prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.intval.php ziyaret ediniz.
2- floatval(); Fonksiyonu: Kendisine geçirilen sayısal tipli veriye sahip bir değişkeni kayan noktalı tipte veriye sahip bir değişken olarak yorumlar. Dizi ve nesne tipli değişkenlerle kullanılamaz.
<?php
$degiskenimiz = '123.50 adet elma';// Dikkat bu veri bir stringtir.
echo floatval($degiskenimiz) ;// Çıktımız 123.5 olarak dönecek "adet elma" yorumlanmayacaktır.
?>
floatval() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.floatval.php ziyaret ediniz.
3- strval();Fonksiyonu: Kendisine geçirilen sayısal tipe sahip değişkeni string tipli değişkene dönüştürür. Bu fonksiyonu dizi ve nesne tipli değişkenlerle kullanmanız önerilmez.
<?php
$degiskenimiz = '123.50 adet elma';
echo strval($degiskenimiz) ;// Burada çıktımız 123.50 adet elma olarak kalır. //123.50 değeri stringin tamamı gibi artık bir literaldir
?>
strval() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.strval.php linkini ziyaret ediniz.

Gönderen _nl2br zaman: 16:43 0 yorum  

Sabitler

Değişkenlerin aksine betik boyunca, içlerinde saklanan değerleri değiştirmeden saklayan sembollerdir ve değişkenler gibi bazı basit kuralları vardır.

1- Tanımlandıklarında değişkenler gibi önlerinde $(dolar) işareti bulunmaz,
2- İçlerinde sakladıkları veriler betik(script) boyunca değiştirilemez,
3- Zorunlu olmamakla birlikte, sabitler için yerleşik yazım biçimi büyük harfler kullanılarak yazılmasıdır.
4- Tanımlama işlemi için define fonksiyonu kullanılmaktadır.

Örneğimizi inceleyelim:

define("SAATLIKURETIM",300);
define("SAATLIKTUKETIM" 250);

Eğer bir sabitin değerini kullanmak istiyorsak, sadece adını kullanmamız yeterlidir.

echo SAATLIKURETIM;
$kazanc = SAATKILURETIM -SAATLIKTUKETIM;
echo $kazanc;

Kendi tanımladığımız sabitlerin yanısıra, PHP'ninde çok sayıda sabiti vardır. Bunların kısaca bir özetini almak istiyorsanızı phpinfo(); fonksiyonunu kullanınız.

Gönderen _nl2br zaman: 16:18 0 yorum  

Php Dilinin Yapısı

Ön Bilgi;
Php söz dizimi yapısını C, Shell,Perl ve Javadan ödünç alır. Kolay kullanım, Güçlü betikleme özellikleri kazanabilmek için saydığım dillerin en iyi özelliklerini almış ve yapısı itibariyle melez bir dildir, denilebilir.
Başlangıç;
(Önemli:Başlangıç düzeyi için orta derece HTML bilgisine sahip olduğunuzu varsayıyorum.)

HTML İçine Gömülü Kodlama Yapmak:

<html>
<head><title>Örnek Php Kodumuz(merhaba.php)</title></head>
<body>
Burada "Merhaba, PHP" yazısı çıkacak:</br>
<?php
print "Merhaba, PHP";
?>
</body>
</html>


Örneğimiz localhosttan çalıştırıldığında php yorumlayıcısı(php motoru) HTML etiketleri arasında <? açık bir php etiketi arar ve ?> etiketleri arasındaki her deyimi çalıştırma- yorumlama eğilimindedir. Eğer <? "arasinda"?>
bulduğu php olarak yorumlaması gereken veri varsa yorumlar ve çıktıyı HTML etiketleri ile beraber tarayıcıya HTML Kodu olarak işlemesi için geriye yollar.

Bilgi;
Kısa stilde kod yazmak için ya windows klasörü içerisinde bulunan php.ini dosyanızdaki "short_open_tags" komutunun önündeki # işaretini kaldırın, ya da kodlarınızı <?php "kodlarimiz ... " ?> olarak yazınız

Yorum Satırları;
Yorum satırları oluşturmak, yazdığınız kodların içerisine sizin veya bir başka programcının kodlarınızı kolayca okuyup anlaması için kullanacağınız açıklama yöntemlerinden biridir. Aşağıdaki biçimlerin hepsi php için geçerlidir. Dilediğinizi kullanabilirsiniz.
C Biçimi Yorum satırı
/* Bu bir
* C biçimi
* Yorum satırıdır.
*/

C++ Biçimi Yorum Satırı
// Bu Bir C++ Biçiminde yorum satırıdır.
Shell Biçimi Yorum Satırı
# Bu bir Shell Biçimi yorum satırıdır.

Etiket Stilleri;

Php'de kullanabileceğimiz dört farklı PHP etiket stili vardır.
1- Kısa Stil:
<? echo "Bu bir kısa stildir"; ?>
2- XML Stili:
<?php echo "Bu bir XML tarzı etiket stilidir"; ?>
3- SCRIPT Stili:
<SCRIPT LANGUAGE='php'> echo "Bu bir SCRIPT Tarzı etiket stilidir"; ?>
4- ASP Stili:
<% echo "Bu bir ASP tarzı etiketleme stilidir" ; %>
Bilgi:( ASP tarzı stilde çalışmak isterseniz php.ini dosyanızda asp_tags konfigürasyon ayarını etkin hale getiriniz. Bunun için ilgili satırın önündeki # işaretini kaldırmanız yeterlidir.)

Php Deyimleri;
Php Yorumlayıcısına ne yaptığımızı, açılış ve kapanış etiketlerimizin arasına PHP deyimleri ekleyerek söyleriz.
<? print "Buraya deyim girdik ve tarayıcımızın bu deyimi okumasını sağladık"; ?>
echo yada print yapıları,kendisine gelen stringi tarayıcıya yansıtır. Yansıtılmasını istediğimiz değeri " " (çift tırnak)arasına almak, php motoruna yansıtılacak öğeyi bildirir.
değerin sonuna atadığımız ; (noktalı virgül), php'de ifadeleri birbirinden ayırmak amacıyla kullanılır.

Php de String ile değişken anlamları tamamen farklı şeylerdir. Değişkenler veri için kullanılan sembollerdir. Stringlerin ise kendileri birer veridir.


Beyaz Boşluklar;
Satırbaşı karakteri(enter),boşluklar(backspace) ,sekmeler(tab) beyaz boşluklar olarak bilinir. Boşluk bırakan karakterler php ve html de görmezden gelinir.

Gönderen _nl2br zaman: 14:49 0 yorum  

Değişkenler 1

14 Mayıs 2008 Çarşamba

Tanımlayıcılar;
Tanımlayıcılar((identifers) basitçe değişkenlerin adlarıdır.
Php'de değişkenler önüne $ işareti konularak belirtilir ve basit kuralları vardır.
1- Tanımlayıcılar her uzunlukta olabilir harf,rakam, alt çizgilerden oluşabilirler.
2- Tanımlayıcılar bir rakamla başlayamaz.
3- Php'de tanımlayıcılar büyük küçük harf ayrımı yaparlar. $degisken ile $DeGisKen aynı değildirler.
4- Tanımlayıcılar Yerleşik bir fonksiyonla aynı adı taşıyabilir.
5- Yerleşik bir fonksiyonla aynı tanımlayıcıya sahip bir fonksiyon yaratılamaz.
Bu bilgilerden sonra Aşağıdaki örneklere bakalım;


Doğru değişken bildirimleri;
$degisken;
$_degisken;
$D1;

Yanlış değişken Bildirimleri;
$251;
$*degisken;

Php'de değişkenler C ve Java gibi derlenen programlama dillerinden farklıdır. Değişkenleri kullanmadan önce değişkenleri ve tiplerini bildirmek,zorunda değilsiniz.
Ekteki örneği inceleyelim;

<?php
$PI = 3.14;
$yaricap = 5;
$cember = $PI * 2 * $yaricap; // Çember = π* d
Print $cember
// Çıktısı 31.4 'tur
?>

Burada $PI için kayan noktalı sayı, $yaricap için ise tam sayı kullandığımız ve bunların tiplerini bildirmeye gerek olmadığına dikkat edin.
Değişkenlere değer atamak;
Değişkenlere değer atamak =(atama operatörü tek eşittir işareti) ile gerçekleşir.
Basitçe;
$arac = "Otomobil";
satırı bir değişken yaratır ve ona literal bir değer verir.

Değişken tipleri;
Bir değişkenin tipi içinde saklanan veri tipine göre belirlenir ve Php'de beş tür veri tipi vardır.
1- Integer veri tipi: Tam sayılar için kullanılır. // $tekerlekAdedi = 5;
2- Double veri tipi : Reel sayılar için kullanılır. // $cc = 1493,3;
3- String veri tipi : Karakter grupları için kullanılır. // $cc = "Motor tipi";
4- Array veri tipi : Dizi tipi değişkenler için kullanılır. // $arac = array("renk" =>"mavi");
5- Object veri tipi : Sınıf örneklerini saklamak için kullanılır.

Değişken Kapsamı;
Kapsam(scope) terimi, bir betik içinde belirli bir değişkenin görünür olduğu yerler anlamına gelir. Php'deki üç temel kapsam şunlardır;

1- Bir betik içinde bildirilen global değişkenler, o betik içinde görünür ama fonksiyonların içinde görünmezler,
2- Fonksiyonların içinde kullanılan değişkenler o fonksiyona göre yereldir.
3- Fonksiyonların içinde kullanılan ve global olarak bildirilen değişkenler, aynı adı taşıyan global değişkene karşılık gelir.


Değişkenler ve literaller;
Değişkenler veri için kullanılan sembollerdir. Aşağıdaki örnekte $degisken olarak verilen yapı buna işaret etmektedir.
<?
$degisken = "Sorento";
echo "Benim aracım".$degisken."dur";
?>

Oysa Tırnak içinde kullanlan "Benim aracım" ifadesi ham veridir ve Php bunu işleyip çıktı olarak verecektir. Php de ham verileri değişkenlerden ayırmak için bunlara Literal adı verilir.
echo "Benim aracım".$degisken."dur"; ifadesinde aralarda kullanılan .(nokta)'lar, değişken yada literallerin birbirleri ile birleştirilmesi amacıyla kullanılmaktadır.


Tiplerin Gücü;

Php tip anlamında çok güçlü değildir. Bir çok programla dilinde, değişkenler sadece bir veri tipini saklayabilir. ve tıpkı C'deki gibi, değişken kullanılmadan önce bu tipin bildirilmesi gerekir. Php'de ise değişkenin tipi, ona atanan değer tarafından belirlenir.
$motorGucu = 1493;// Tamsayı veri tipi
$agirlik = 980,50;// Double veri tipi
$renk = "Mavi"; String veri tipi
Php, değişken tipini, o anda içinde sakladığı verilere göre belirler ve tipleri anında değiştirebilme özelliğine sahiptir.

Tip Belirleme;
Tip belirleme işlemi kullanarak bir değişken yada değer farklı tipteymiş gibi davranabiliriz. Geçici tipi veri tipini değiştirmek istediğimiz değişkenin önüne parantezlerin içinde koymamız yeterlidir.
$motor = (double)$motorGucu;

Bir değişkene dolaylı referansla erişmek;(Değişken değişkenler)
Örnek;
<?php
$arac = "Sorento";
$$arac = "4x4 arazi aracıdır,";
print $Sorento;
// Çıktısı 4x4 arazi aracıdır.
?>
Değişken değişkenler, bir değişkenin adını dinamik olarak değiştirmemizi sağlar. Bir değişkenin değeri bir diğerinin adı olarak kullanılabilirler.

Gönderen _nl2br zaman: 19:42 0 yorum  

Nasıl başlanmalı?

Uygulama Geliştirme Paketi;
Uygulama geliştirmeye windows altında başlayacaksanız önerim http://sourceforge.net/project/showfiles.php?group_id=93507
adresinden apache2triad programını indirip kurmanız hızlı bir başlangıç yapmanız için iyi olacaktır. Kurulum paketini indirip sisteminize kurduğunuzda Apache2 sunucusu , MySQL veritabanı, PostgreSQL veritabanı, OpenSSL , Xmail , SlimFTPd gibi araçlarla birlikte,PHPmyadmin de sisteminize kurulmuş olur.
Sistemi kurarken kurulum aşamasında sizden root kullanıcısı şifresi istenir. Bu şifreniz yerel çalışmalarda sizin kullanıcı anahtarınız olacağından lütfen şifrenizi unutmayınız.
Tarayıcı Pencerenize http://localhost/apache2triadcp/ yazarak kontrol panelinize erişebilirsiniz.
Türkçe karakter sorunları ile karşılaşmak istemiyorsanız; http://localhost/apache2triadcp/editor.php?load=httpdconf
konfigürasyon dosyanızdaki AddDefaultCharset ISO-8859-1 satırını ISO-8859-9 yapıp önündeki # işaretinin olmadığından emin olmalısınız.
Hızlı bir başlangıç için artık hazır sayılırsınız. Apache2triad kullanarak php uygulama geliştirmeye başladığınızı varsayarsak dosyalarınızı kaydedeceğiniz alan C:\apache2triad\htdocs gibi bir dizin altında olacaktır. Çalışma dosyalarınızı burada açacağınız 'calismalarim' gibi bir klasör içine almanız ileride oluşması muhtemel karmaşıklıkları önlemek açısından yararınızadır.
Editör;
Php ile çalışmanız için özel bir editöre gereksinmeniz uzunca bir süre olmayacaktır.
Windows donatılar altında sunulan not defteri bile başlangıç için yeterli olacaktır. Eğer elinizin altında kullanabileceğiniz dreamweaver ya da homesite gibi editörler varsa uygulamalarınızı bu editörlerle de geliştirebilirsiniz.
Kaynaklar;
Eğer kitaptan öğrenme konusunda herhangi bir sorununuz yoksa tavsiye edebileceğim en iyi başvuru kaynağı Türkçe kaynak; Alfa Yayınları'nın Uzmanlar için Php ve MySql (Luke Welling Laura Thomson) Adlı kitabıdır.
Ek olarak Yararlı linkler bölümünde sunmuş olduğum web kaynaklarında oldukça ciddi ve yararlı bilgilere kolayca ulaşabilirsiniz.

Gönderen _nl2br zaman: 18:51 0 yorum  

Peki Nedir Bu PHP?

Php, Özellikle web için tasarlanmış olan sunucu taraflı bir script dilidir. Bir html sayfasının içine, sayfa her ziyaret edildiğinde çalıştırılacak olan bir php kodu gömebilirsiniz. Php kodunuz, Web sunucusunda yorumlanır ve ziyaretçinin göreceği HTML veya diğer çıktıları oluşturur.
1994'te ortaya çıkan PHP, aslında tk bir kişinin, Rasmus Ladford'un eseridir. Bu gün gördüğünüz olgun ürün haline gelene kadar diğer yetenekli kişiler tarafından geliştirilmiş ve üç kez yeniden yazılmıştır. Bu gün itibariyle 25 milyon kişi bu dili kullanmakta ve bu sayı giderek büyümektedir.
http://www.php.net/usage.php
Php Açık kaynak (Open Source) tabanlı bir üründür. Kaynak koduna erişebilirsiniz. Bunu hiç bir ücret ödemeden kullanabilir, değiştirebilir, ve yeniden dağıtabilirsiniz.
PHP Başlangıçta Personal Home Page(kişisel Ana Sayfa) anlamına gelmekteydi. Ancak GNU adlandırma standardıyla uyumlu olacak şekilde(GNU=GNU's not Unix) değiştirildi ve artık PHP Hypertext Preprecessor anlamına geliyor.
Kaynak : Alfa Yayınları (Uzmanlar için Php Ve Mysql Luke Welling / Laura Thomson)

Gönderen _nl2br zaman: 17:55 0 yorum  

Pehepe Notları' a Hoş geldiniz.

Uzun zamandır aklımdaydı. Kısmet bu güneymiş. Php nedir ne değildir konusuna değinmeden önce bu bloğun oluşma nedenini açıklamakta yarar görüyorum.

Bu blog Php öğrenmek isteyen ve değişik sebeplerle yeterli kaynak bulamayan, derinlemesine bilgi sahibi olmak isteyipte olamayan isteklilerin öğrenme sürecine katkıda bulunmak amacıyla oluşturuldu. Umarım İstekli ve hevesli arkadaşlarımıza başarılı bir rehber olur.
Evet Başlayalım artık...

Gönderen _nl2br zaman: 17:18 0 yorum