İfadeler
İfadeler, PHP'nin en önemli yapı taşlarındandır. PHP'de, hemen hemen
yazdığınız her şey bir ifadedir. Bir ifadenin en basit ama en etkili
tanımı şudur: "Bir değere sahip olan herşey".
İfadelerin en basit şekli sabitler ve değişkenlerdir. "$a =
5
" yazdığınızda, '5
' değerini
$a değişkenine atamış olursunuz. '5
',
açık bir şekilde, 5
değerine sahiptir, ya da başka bir
deyişle '5
', değeri 5
olan
bir ifadedir (bu durumda, '5
' bir tamsayı sabittir).
Bu atamadan sonra, $a'nın değerinin 5
olmasını beklersiniz, dolayısıyla $b = $a
yazdığınızda,
bunun $b = 5
yazmışsınız gibi davranmasını beklersiniz.
Başka bir deyişle, $a da değeri 5
olan ifadedir. Her şey doğru çalışırsa, olması gereken de tam budur.
İşlevler, ifadelerin biraz daha karmaşık örnekleridir. Örneğin, aşağıdaki
işleve bakalım:
İşlev kavramına aşina iseniz (değilseniz, işlevler bölümünü
inceleyebilirsiniz), şu örnekten hareketle $c = foo()
yazmak ile $c = 5
yazmak arasında bir fark olmadığını
bilirsiniz. İşlevler, değeri dönüş değeri olan ifadelerdir.
foo()
işlevi 5
değerini
döndürdüğünden, "foo()
" ifadesinin değeri 5
'tir.
İşlevlerin amacı normalde statik bir değer döndürmek değildir, bir
hesaplamanın sonucunu döndürürler.
Elbette, PHP'deki değerlerin hep tamsayılar olması gerekmez, zaten
çoğunlukla değildirler. PHP dört çeşit sayıl değer destekler: Tamsayı
(int) değerler, kayan noktalı (float)
değerler, dizge (string) değerler ve mantıksal
bool değerler (sayıl değerler, dizilerin aksine daha
küçük parçalara bölemeyeceğiniz değerlerdir). PHP ayrıca iki bileşik
(sayıl olmayan) tür destekler: Diziler ve nesneler. Bu değer türlerinden
her biri bir değişkene atanabilir ya da bir işlevden döndürülebilir.
PHP, birçok başka dilin yaptığı gibi ifadeleri çok ileriye götürmüştür.
PHP ifade-yönelimli bir dildir, bunun sebebi hemen hemen her şeyin bir
ifade olmasıdır. Az önce üzerinde çalıştığımız '$a = 5
'
örneğini ele alalım. Burada iki değer kullanımı sözkonusudur, bir tamsayı
sabit olan '5
' ve 5
olarak
değiştirilmiş $a'nın değeri. Ancak gerçek şu ki, burada
bu ikiliye ek olarak başka bir değer daha vardır, o da atamanın kendi
değeridir. Atamanın kendisi atanan değerle değerlendirilir, bu örnekte bu
5
'tir. Uygulamada, ne yaptığından bağımsız olarak
"$a = 5
", değeri 5
olan
bir ifadedir. Böylece, "$b = ($a = 5)
" yazmak,
"$a = 5; $b = 5;
" yazmak
gibidir (noktalı virgül deyimin sonlandırıldığını gösterir). Atamalar
sağdan sola doğru işlendiğinden, "$b = $a = 5
" de
yazabilirsiniz.
İfade yönelimi ile ilgili diğer güzel bir örnek atama öncesi ve sonrası
arttırma ve eksiltme işlemleridir. PHP ve diğer birçok dilin
kullanıcıları, değişken++ ve
değişken-- gösterimine az çok aşinadır.
Bunlar arttırma ve eksiltme
işleçleridir.
PHP'de, C'de olduğu gibi önceden arttırma ve sonradan arttırma diye iki
tür arttırma vardır. Bunların her ikisi de değişkenin değerini bir
arttırır ve değişken üzerindeki etkileri aynıdır. Fark, arttırma
ifadesinin değerindedir. Önceden arttırma, ++$değişken
olarak yazılır ve arttırılmış değer öncelik alır (PHP değişkenin değerini
önce arttırır, sonra okur, bu sebeple önceden arttırma ismi verilmiştir).
Sonradan arttırma ise, $değişken++ olarak yazılır ve
değer arttırılmadan önceki özgün değer önceliklidir (PHP değişkenin
değerini okuduktan sonra değerini arttırır, bu sebeple sonradan arttırma
ismi verilmiştir).
Çok geniş bir kullanıma sahip olan ifade türlerinden birisi de karşılaştırma
ifadeleridir. Bu ifadeler false
ya da true
değerlerinden birini
alırlar. PHP >
(büyüktür), >=
(büyüktür ya da eşittir), ==
(eşittir),
!=
(eşit değildir), <
(küçüktür)
ve <=
(küçüktür ya da eşittir) gösterimlerini
destekler. Dil aynı zamanda aynılık işleçlerini de destekler:
===
(eşit ve aynı türdedir) ve !==
(ne eşit ne de aynı türdedir). Bu ifadeler çoğunlukla if
deyimleri gibi koşula bağlı işlemlerde kullanılmaktadırlar.
Vereceğimiz son ifade örneği işleçli atama ifadeleridir.
$a'nın değerini 1 arttırmak istediğinizde, basitçe
'$a++
' ya da '++$a
' yazmanızın yeterli
olduğunu zaten biliyorsunuz. Ama ya birden daha büyük bir değer, örneğin
3 eklemek isterseniz? '$a++
' ifadesini birkaç kez
yazabilirsiniz, ama bunun pek verimli ya da kullanışlı yöntem olmadığı
oldukça açık. '$a = $a + 3
' çok daha yaygın bir
kullanımdır. '$a + 3
' ifadesi $a'nın
değerini önce 3 arttırır sonra sonucu $a'ya atar,
böylece $a'nın değeri 3 arttırılmış olur. PHP'de, birkaç
dilde olduğu gibi C benzeri, daha temiz gözükecek ve daha kısa biçimde
yazabileceğiniz bir gösterim daha vardır. $a'nın mevcut
değerine 3 ekleme işlemi '$a += 3
' biçiminde yazılabilir.
Bunun anlamı tam olarak "$a'nın değerini al, 3 ekle ve
yeni değeri $a
'ya ata" olacaktır. Daha kısa ve temiz
olmasının yanında, bu kod daha hızlı çalıştırılacaktır. '$a +=
3
' işleminin değeri, normal bir atama işleminde olduğu gibi,
atanan değerdir. Bu değerin 3 OLMADIĞINA dikkat edin, bu değer
$a ile 3'ün toplamıdır ($a’ya bu
değer atanır). İşleçli atama kipinde herhangi bir iki terimli işleç
kullanılabilir, örneğin '$a -= 5
'
($a'nın değerinden 5 çıkarılır), '$b *=
7
' ($b'nin değeri 7 ile çarpılır), vs.
Diğer dillerde görmediyseniz size farklı gözükebilecek bir ifade daha
vardır, o da üç terimli koşul işlecidir:
İlk alt ifadenin değeri true
(sıfırdan farklı) ise, ikinci alt ifade
değerlendirilir ve koşullu ifadenin sonucu bu olur. Aksi takdirde, üçüncü
alt ifade değerlendirilir ve koşullu ifadenin sonucu bu olur.
Aşağıdaki örnek, önceden ve sonradan arttırma işleçlerini ve ifadelerini
genelde biraz daha iyi anlamanıza yardımcı olacaktır:
Bazı ifadeler deyim olarak ele alınabilir. Bu durumda, deyim 'ifade' ';'
şeklinde, noktalı virgülle sonlandırılmış bir ifade şeklinde olacaktır.
'$=$a=5;
' olduğunda, $a=5
geçerli bir
ifadedir, ancak kendi başına bir deyim değildir.
'$b=$a=5;
' ise geçerli bir deyimdir.
Son olarak bahsetmemiz gereken bir konu da ifadelerin gerçek değeridir.
Birçok olayda, çoğunlukla da koşula bağlı çalışmalarda ve döngülerde,
ifadenin kendi değeri ile değil, true
ya da false
olması ile
ilgileniyor olacaksınız.
true
ve false
sabitleri (büyük-küçük harf duyarsız) olası iki
mantıksal değerdir. Gerektiğinde, bir ifade otomatik olarak mantıksal
değere dönüştürülür. Tür
çarpıtma bölümünde bunun nasıl gerçekleştiği ayrıntılı olarak
anlatılmıştır.
PHP ifadeleri tümüyle ve çok güçlü bir biçimde uygulamaya geçirmiştir ve
bunların tamamını belgelemek bu kılavuzun kapsamının dışında kalır.
Yukarıdaki örnekler hangi ifadelerle nasıl kullanışlı ifadeler
oluşturabileceğiniz hakkında yeterli fikir verecektir. Bu kılavuzun
geri kalanında, geçerli herhangi bir PHP ifadesini belirtmek için
ifade sözcüğünü kullanacağız.