mirror of
https://github.com/php/doc-tr.git
synced 2026-03-23 23:02:09 +01:00
239 lines
11 KiB
XML
239 lines
11 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 4decb44c7141a97e348a1235bbb20d930d2baac0 Maintainer: nilgun Status: ready -->
|
||
<!-- CREDITS: tpug, sezer -->
|
||
<chapter xml:id="language.expressions" xmlns="http://docbook.org/ns/docbook">
|
||
<title>İfadeler</title>
|
||
<para>
|
||
İ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".
|
||
</para>
|
||
<para>
|
||
İfadelerin en basit şekli sabitler ve değişkenlerdir. "<literal>$a =
|
||
5</literal>" yazdığınızda, '<literal>5</literal>' değerini
|
||
<varname>$a</varname> değişkenine atamış olursunuz. '<literal>5</literal>',
|
||
açık bir şekilde, <literal>5</literal> değerine sahiptir, ya da başka bir
|
||
deyişle '<literal>5</literal>', değeri <literal>5</literal> olan
|
||
bir ifadedir (bu durumda, '<literal>5</literal>' bir tamsayı sabittir).
|
||
</para>
|
||
<para>
|
||
Bu atamadan sonra, <varname>$a</varname>'nın değerinin <literal>5</literal>
|
||
olmasını beklersiniz, dolayısıyla <literal>$b = $a</literal> yazdığınızda,
|
||
bunun <literal>$b = 5</literal> yazmışsınız gibi davranmasını beklersiniz.
|
||
Başka bir deyişle, <varname>$a</varname> da değeri <literal>5</literal>
|
||
olan ifadedir. Her şey doğru çalışırsa, olması gereken de tam budur.
|
||
</para>
|
||
<para>
|
||
İşlevler, ifadelerin biraz daha karmaşık örnekleridir. Örneğin, aşağıdaki
|
||
işleve bakalım:
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
function foo ()
|
||
{
|
||
return 5;
|
||
}
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
</para>
|
||
<para>
|
||
İşlev kavramına aşina iseniz (değilseniz, <link
|
||
linkend="language.functions" >işlevler</link> bölümünü
|
||
inceleyebilirsiniz), şu örnekten hareketle <literal>$c = foo()</literal>
|
||
yazmak ile <literal>$c = 5</literal> yazmak arasında bir fark olmadığını
|
||
bilirsiniz. İşlevler, değeri dönüş değeri olan ifadelerdir.
|
||
<literal>foo()</literal> işlevi <literal>5</literal> değerini
|
||
döndürdüğünden, "<literal>foo()</literal>" ifadesinin değeri <literal>5</literal>'tir.
|
||
İşlevlerin amacı normalde statik bir değer döndürmek değildir, bir
|
||
hesaplamanın sonucunu döndürürler.
|
||
</para>
|
||
<para>
|
||
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ı
|
||
(<type>int</type>) değerler, kayan noktalı (<type>float</type>)
|
||
değerler, dizge (<type>string</type>) değerler ve mantıksal
|
||
<type>bool</type> 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.
|
||
</para>
|
||
<para>
|
||
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 '<literal>$a = 5</literal>'
|
||
örneğini ele alalım. Burada iki değer kullanımı sözkonusudur, bir tamsayı
|
||
sabit olan '<literal>5</literal>' ve <literal>5</literal> olarak
|
||
değiştirilmiş <varname>$a</varname>'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
|
||
<literal>5</literal>'tir. Uygulamada, ne yaptığından bağımsız olarak
|
||
"<literal>$a = 5</literal>", değeri <literal>5</literal> olan
|
||
bir ifadedir. Böylece, "<literal>$b = ($a = 5)</literal>" yazmak,
|
||
"<literal>$a = 5; $b = 5;</literal>" yazmak
|
||
gibidir (noktalı virgül deyimin sonlandırıldığını gösterir). Atamalar
|
||
sağdan sola doğru işlendiğinden, "<literal>$b = $a = 5</literal>" de
|
||
yazabilirsiniz.
|
||
</para>
|
||
<para>
|
||
İ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ı, <varname>değişken++</varname> ve
|
||
<varname>değişken--</varname> gösterimine az çok aşinadır.
|
||
Bunlar <link linkend="language.operators.increment">arttırma ve eksiltme
|
||
işleçleri</link>dir.
|
||
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, <varname>++$değişken</varname>
|
||
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, <varname>$değişken++</varname> 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).
|
||
</para>
|
||
<para>
|
||
Çok geniş bir kullanıma sahip olan ifade türlerinden birisi de <link
|
||
linkend= "language.operators.comparison">karşılaştırma</link>
|
||
ifadeleridir. Bu ifadeler &false; ya da &true; değerlerinden birini
|
||
alırlar. PHP <literal>></literal> (büyüktür), <literal>>=</literal>
|
||
(büyüktür ya da eşittir), <literal>==</literal> (eşittir),
|
||
<literal>!=</literal> (eşit değildir), <literal><</literal> (küçüktür)
|
||
ve <literal><=</literal> (küçüktür ya da eşittir) gösterimlerini
|
||
destekler. Dil aynı zamanda aynılık işleçlerini de destekler:
|
||
<literal>===</literal> (eşit ve aynı türdedir) ve <literal>!==</literal>
|
||
(ne eşit ne de aynı türdedir). Bu ifadeler çoğunlukla <literal>if</literal>
|
||
deyimleri gibi koşula bağlı işlemlerde kullanılmaktadırlar.
|
||
</para>
|
||
<para>
|
||
Vereceğimiz son ifade örneği işleçli atama ifadeleridir.
|
||
<varname>$a</varname>'nın değerini 1 arttırmak istediğinizde, basitçe
|
||
'<literal>$a++</literal>' ya da '<literal>++$a</literal>' yazmanızın yeterli
|
||
olduğunu zaten biliyorsunuz. Ama ya birden daha büyük bir değer, örneğin
|
||
3 eklemek isterseniz? '<literal>$a++</literal>' ifadesini birkaç kez
|
||
yazabilirsiniz, ama bunun pek verimli ya da kullanışlı yöntem olmadığı
|
||
oldukça açık. '<literal>$a = $a + 3</literal>' çok daha yaygın bir
|
||
kullanımdır. '<literal>$a + 3</literal>' ifadesi <varname>$a</varname>'nın
|
||
değerini önce 3 arttırır sonra sonucu <varname>$a</varname>'ya atar,
|
||
böylece <varname>$a</varname>'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. <varname>$a</varname>'nın mevcut
|
||
değerine 3 ekleme işlemi '<literal>$a += 3</literal>' biçiminde yazılabilir.
|
||
Bunun anlamı tam olarak "<varname>$a</varname>'nın değerini al, 3 ekle ve
|
||
yeni değeri <literal>$a</literal>'ya ata" olacaktır. Daha kısa ve temiz
|
||
olmasının yanında, bu kod daha hızlı çalıştırılacaktır. '<literal>$a +=
|
||
3</literal>' 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
|
||
<varname>$a</varname> ile 3'ün toplamıdır (<varname>$a</varname>’ya bu
|
||
değer atanır). İşleçli atama kipinde herhangi bir iki terimli işleç
|
||
kullanılabilir, örneğin '<literal>$a -= 5</literal>'
|
||
(<varname>$a</varname>'nın değerinden 5 çıkarılır), '<literal>$b *=
|
||
7</literal>' (<varname>$b</varname>'nin değeri 7 ile çarpılır), vs.
|
||
</para>
|
||
<para>
|
||
Diğer dillerde görmediyseniz size farklı gözükebilecek bir ifade daha
|
||
vardır, o da üç terimli koşul işlecidir:
|
||
</para>
|
||
<para>
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$birinci ? $ikinci : $üçüncü
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
</para>
|
||
<para>
|
||
İ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.
|
||
</para>
|
||
<para>
|
||
Aşağıdaki örnek, önceden ve sonradan arttırma işleçlerini ve ifadelerini
|
||
genelde biraz daha iyi anlamanıza yardımcı olacaktır:
|
||
</para>
|
||
<para>
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
function double($i)
|
||
{
|
||
return $i*2;
|
||
}
|
||
$b = $a = 5; /* beş değerini $a ve $b değişkenlerine atar */
|
||
$c = $a++; /* sonradan arttırma, $a'nın özgün değerini (5) $c'ye atar */
|
||
$e = $d = ++$b; /* önceden arttırma, $b'nin arttırılmış değerini (6) $d
|
||
ve $e'ye atar */
|
||
|
||
/* bu noktada, $d ve $e 6'ya eşittir */
|
||
|
||
$f = double($d++); /* $d'nin değerini arttırmadan önce $d'nin değerinin iki
|
||
katını $f'ye atar, 2*6 = 12 */
|
||
$g = double(++$e); /* $e'nin değerini arttırdıktan sonra iki katını alıp
|
||
$g'ye atar, 2*7 = 14 */
|
||
$h = $g += 10; /* önce, $g 10 arttırılır ve değeri 24 olur. Sonra bu
|
||
değer (24) $h'ye atanır ve onun da değeri 24 olur. */
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
</para>
|
||
<para>
|
||
Bazı ifadeler deyim olarak ele alınabilir. Bu durumda, deyim 'ifade' ';'
|
||
şeklinde, noktalı virgülle sonlandırılmış bir ifade şeklinde olacaktır.
|
||
'<literal>$=$a=5;</literal>' olduğunda, <literal>$a=5</literal> geçerli bir
|
||
ifadedir, ancak kendi başına bir deyim değildir.
|
||
'<literal>$b=$a=5;</literal>' ise geçerli bir deyimdir.
|
||
</para>
|
||
<para>
|
||
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.
|
||
|
||
<!-- (PHP doesn't have a
|
||
dedicated boolean type) : WRONG, PHP does. -->
|
||
|
||
&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. <link linkend="language.types.typecasting">Tür
|
||
çarpıtma</link> bölümünde bunun nasıl gerçekleştiği ayrıntılı olarak
|
||
anlatılmıştır.
|
||
</para>
|
||
<para>
|
||
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
|
||
<varname>ifade</varname> sözcüğünü kullanacağız.
|
||
</para>
|
||
</chapter>
|
||
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|