svn: /phpdoc/tr/trunk/language/ operators.xml

[email protected] (Nilgün Belma Bugüner)
Newsgroups php.doc.tr
Message-ID <[email protected]>
nilgun                                   Fri, 12 Oct 2018 13:44:47 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=345806

Log:
update for sync with English doc.

Changed paths:
    U   phpdoc/tr/trunk/language/operators.xml
svn-diffs-345806.txt (text/x-diff, 39 KB)
Modified: phpdoc/tr/trunk/language/operators.xml
===================================================================
--- phpdoc/tr/trunk/language/operators.xml	2018-10-12 07:59:17 UTC (rev 345805)
+++ phpdoc/tr/trunk/language/operators.xml	2018-10-12 13:44:47 UTC (rev 345806)
@@ -1,28 +1,32 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 297272 Maintainer: nilgun Status: ready -->
+<!-- EN-Revision: 345447 Maintainer: nilgun Status: ready -->
  <chapter xml:id="language.operators" xmlns="http://docbook.org/ns/docbook">
   <title>İşleçler</title>
   <simpara>
-    Bir işleç, başka bir değer üretmek üzere bir veya daha fazla değerle
-    (programcı dilinde ifadeyle) beslenen bir şeydir (yani, değerler işleçle
-    birlikte bir ifade haline gelir). Bu bakımdan, bir değer döndüren
-    işlevler ve benzeri oluşumlar (print gibi) ya da belirtilenden başka bir
-    şey döndürmeyen (echo gibi) oluşumlar birer işleç olarak düşünülebilir.
+   Bir işleç, başka bir değer üretmek üzere bir veya daha fazla değer
+   (programcı dilinde ifade) alan bir şeydir (yani, bu yapı bir ifade haline
+   gelir).
   </simpara>
   <para>
-   Üç tür işleç vardır. İlki tek bir değerle çalışan tek terimli işleç olup
-   ! (olumsuzlama işleci) veya ++ (arttırım işleci) buna birer örnektir.
-   İkinci işleç grubu iki terimlilerdir; PHP'nin desteklediği işleçlerin
-   çoğunluğu bu grupta olup aşağıda <link
-   linkend="language.operators.precedence">İşleç Önceliği</link> bölümünde
-   liste halinde verilmişlerdir.
+   İşleçler aldıkları değer sayısına göre gruplanabilir. Tek terimli işleçler
+   yalnızca bir değer alır, örneğin, <literal>!</literal> (<link
+   linkend="language.operators.logical">mantıksal değil işleci</link>) veya
+   <literal>++</literal> (<link linkend="language.operators.increment">arttırım
+   işleci</link>). İki terimli işleçler iki değer alır, PHP'nin desteklediği
+   işleçlerin çoğunluğu bu grupta olup <link
+   linkend="language.operators.arithmetic">aritmetik işleçler</link>
+   <literal>+</literal> (artı) ve <literal>-</literal> (eksi) örnek olarak
+   verilebilir. Son olarak tek bir <link
+   linkend="language.operators.comparison.ternary">üç terimli işleci</link>,
+   <literal>? :</literal> vardır ve üç terim alır. Koşul işleci olarak da bilinir.
   </para>
   <para>
-   Üçüncü grupta üç terimli işleç yer alır: ?:.  Bir ifadeye bağlı olarak
-   iki deyim veya çalıştırma yolunu seçmekten ziyade diğer iki ifadeden
-   birini seçmek için kullanılır. İşlecin üç ifadesini parantez içinde
-   belirtmek iyi bir uygulamadır.
+   PHP işleçleri tam liste halinde, aşağıda <link
+   linkend="language.operators.precedence">İşleç Önceliği</link> bölümünde
+   bulunabilir. Bölüm ayrıca, çeşitli farklı işleçleri içeren ifadelerin
+   değerlendirilişini yöneten işleç önceliğini ve ilişkilendirmeyi de
+   açıklamaktadır.
   </para>

   <sect1 xml:id="language.operators.precedence">
@@ -33,13 +37,33 @@
     16'dır. Çünkü, çarpma ("*") işlecinin önceliği toplama ("+") işlecinden
     yüksektir. Önceliği arttırmak için gerekirse parantezler kullanılabilir.
     Örneğin, <literal>(1 + 5) * 3</literal> ifadesinin sonucu 18 olacaktır.
-    Eğer işleç önceliklerinde eşitlik sözkonusu olursa soldaki işleç
-    sağdakinden öncelikli olur.
    </para>
    <para>
+    İşleçler eşit önceliğe sahip olduklarında aralarındaki ilişkiye işleçlerin
+    gruplanışına göre karar verilir. Örneğin "-" isoldan ilişkilendirmelidir,
+    dolayısıyla, <literal>1 - 2 - 3</literal> ifadesi
+    <literal>(1 - 2) - 3</literal> olarak gruplanır ve <literal>-4</literal>
+    olarak değerlendirlir. "=" ise sağdan ilişkilendirmelidir, dolayısıyla,
+    <literal>$a = $b = $c</literal> ifadesi <literal>$a = ($b = $c)</literal>
+    olarak gruplanır.  Özetle, soldan ilişkilendirme, ifadenin soldan sağa, sağdan
+    ilişkilendirme ise sağdan sola değerlendirileceği anlamına gelir.
+   </para>
+   <para>
+    İlişkisel olmayan eş öncelikli işleçler birbirlerinin ardından
+    kullanılamazlar, örneğin <literal>1 &lt; 2 &gt; 1</literal> ifadesi PHP için
+    uygun değilken <literal>1 &lt;= 1 == 1</literal> ifadesi uygundur. Sebebi
+    <literal>==</literal> işlecinin <literal>&lt;=</literal> işlecinden daha az
+    öncelikli olmasıdır.
+   </para>
+   <para>
+    Parantez kullanımı gerekli olmasa bile çoğunlukla kodun okunabilirliğini
+    arttırır. Örtük işleç önceliğine ve ilişkiselliğine güvenmektense kodu
+    açıkça gruplamak daha iyidir.
+   </para>
+   <para>
     Aşağıdaki listede işleçler en yüksek öncelikliden başlayıp en düşük
     öncelikliye doğru sıralanmışlardır. Aynı satırda yer alan işleçler
-    eşöncelikli olup hangi sırada ele alınacaklarına değerlendirme sırasında
+    eş öncelikli olup hangi sırada ele alınacaklarına değerlendirme sırasında
     karar verilir.
     <table>
      <title>İşleç Öncelikleri</title>
@@ -54,34 +78,47 @@
       <tbody>
        <row>
         <entry>yönsüz</entry>
-        <entry><userinput>clone new</userinput></entry>
+        <entry>
+         <literal>clone</literal>
+         <literal>new</literal>
+       </entry>
         <entry><link linkend="language.oop5.cloning">clone</link> ve <link
         linkend="language.oop5.basic.new">new</link></entry>
        </row>
        <row>
         <entry>soldan</entry>
-        <entry><userinput>[</userinput></entry>
+        <entry><literal>[</literal></entry>
         <entry><function>array</function></entry>
        </row>
        <row>
-        <entry>yönsüz</entry>
-        <entry><userinput>++ --</userinput></entry>
+        <entry>right</entry>
+        <entry><literal>**</literal></entry>
         <entry>
-         <link
-         linkend="language.operators.increment">arttırım/eksiltim</link>
+         <link linkend="language.operators.arithmetic">aritmetik</link>
         </entry>
        </row>
        <row>
         <entry>sağdan</entry>
-        <entry><userinput>~ - (int) (float) (string) (array) (object)
-        (bool)</userinput> @</entry>
         <entry>
-         <link linkend="language.types">Türler</link>
+         <literal>++</literal>
+         <literal>--</literal>
+         <literal>~</literal>
+         <literal>(int)</literal>
+         <literal>(float)</literal>
+         <literal>(string)</literal>
+         <literal>(array)</literal>
+         <literal>(object)</literal>
+         <literal>(bool)</literal>
+         <literal>@</literal>
         </entry>
+        <entry>
+         <link linkend="language.types">türler</link> ve
+         <link linkend="language.operators.increment">arttırım/eksiltim</link>
+        </entry>
        </row>
        <row>
         <entry>yönsüz</entry>
-        <entry><userinput>instanceof</userinput></entry>
+        <entry><literal>instanceof</literal></entry>
         <entry>
          <link linkend="language.types">Türler</link>
         </entry>
@@ -88,7 +125,7 @@
        </row>
        <row>
         <entry>sağdan</entry>
-        <entry><userinput>!</userinput></entry>
+        <entry><literal>!</literal></entry>
         <entry>
          <link linkend="language.operators.logical">mantıksal</link>
         </entry>
@@ -95,43 +132,66 @@
        </row>
        <row>
         <entry>soldan</entry>
-        <entry><userinput>* / %</userinput></entry>
         <entry>
+         <literal>*</literal>
+         <literal>/</literal>
+         <literal>%</literal>
+        </entry>
+        <entry>
          <link linkend="language.operators.arithmetic">aritmetik</link>
         </entry>
        </row>
        <row>
         <entry>soldan</entry>
-        <entry><userinput>+ - .</userinput></entry>
         <entry>
+         <literal>+</literal>
+         <literal>-</literal>
+         <literal>.</literal>
+        </entry>
+        <entry>
          <link linkend="language.operators.arithmetic">aritmetik</link>
-         &listendand; <link linkend="language.operators.string"
-         >dizge</link></entry>
+         ve <link linkend="language.operators.string">dize</link>
+        </entry>
        </row>
        <row>
         <entry>soldan</entry>
-        <entry><userinput>&lt;&lt; &gt;&gt;</userinput></entry>
         <entry>
+         <literal>&lt;&lt;</literal>
+         <literal>&gt;&gt;</literal>
+        </entry>
+        <entry>
          <link linkend="language.operators.bitwise">bitsel</link>
         </entry>
        </row>
        <row>
         <entry>yönsüz</entry>
-        <entry><userinput>&lt; &lt;= &gt; &gt;= &lt;&gt;</userinput></entry>
         <entry>
+         <literal>&lt;</literal>
+         <literal>&lt;=</literal>
+         <literal>&gt;</literal>
+         <literal>&gt;=</literal>
+        </entry>
+        <entry>
          <link linkend="language.operators.comparison">karşılaştırma</link>
         </entry>
        </row>
        <row>
         <entry>yönsüz</entry>
-        <entry><userinput>== != === !==</userinput></entry>
         <entry>
+         <literal>==</literal>
+         <literal>!=</literal>
+         <literal>===</literal>
+         <literal>!==</literal>
+         <literal>&lt;&gt;</literal>
+         <literal>&lt;=&gt;</literal>
+        </entry>
+        <entry>
          <link linkend="language.operators.comparison">karşılaştırma</link>
         </entry>
        </row>
        <row>
         <entry>left</entry>
-        <entry><userinput>&amp;</userinput></entry>
+        <entry><literal>&amp;</literal></entry>
         <entry>
          <link linkend="language.operators.bitwise">bitsel</link>&listendand;
          <link linkend="language.references">gönderimler</link></entry>
@@ -138,7 +198,7 @@
        </row>
        <row>
         <entry>soldan</entry>
-        <entry><userinput>^</userinput></entry>
+        <entry><literal>^</literal></entry>
         <entry>
          <link linkend="language.operators.bitwise">bitsel</link>
         </entry>
@@ -145,7 +205,7 @@
        </row>
        <row>
         <entry>soldan</entry>
-        <entry><userinput>|</userinput></entry>
+        <entry><literal>|</literal></entry>
         <entry>
          <link linkend="language.operators.bitwise">bitsel</link>
         </entry>
@@ -152,7 +212,7 @@
        </row>
        <row>
         <entry>soldan</entry>
-        <entry><userinput>&amp;&amp;</userinput></entry>
+        <entry><literal>&amp;&amp;</literal></entry>
         <entry>
          <link linkend="language.operators.logical">mantıksal</link>
         </entry>
@@ -159,14 +219,21 @@
        </row>
        <row>
         <entry>soldan</entry>
-        <entry><userinput>||</userinput></entry>
+        <entry><literal>||</literal></entry>
         <entry>
          <link linkend="language.operators.logical">mantıksal</link>
         </entry>
        </row>
        <row>
+        <entry>right</entry>
+        <entry><literal>??</literal></entry>
+        <entry>
+         <link linkend="language.operators.comparison">karşılaştırma</link>
+        </entry>
+       </row>
+       <row>
         <entry>soldan</entry>
-        <entry><userinput>? :</userinput></entry>
+        <entry><literal>? :</literal></entry>
         <entry>
          <link linkend="language.operators.comparison.ternary">üç terimli
          </link>
@@ -175,8 +242,19 @@
        <row>
         <entry>sağdan</entry>
         <entry>
-         <userinput>= += -= *= /= .= %= &amp;= |= ^= &lt;&lt;= &gt;&gt;= =&gt;
-         </userinput>
+         <literal>=</literal>
+         <literal>+=</literal>
+         <literal>-=</literal>
+         <literal>*=</literal>
+         <literal>**=</literal>
+         <literal>/=</literal>
+         <literal>.=</literal>
+         <literal>%=</literal>
+         <literal>&amp;=</literal>
+         <literal>|=</literal>
+         <literal>^=</literal>
+         <literal>&lt;&lt;=</literal>
+         <literal>&gt;&gt;=</literal>
         </entry>
         <entry>
          <link linkend="language.operators.assignment">atama</link>
@@ -184,7 +262,7 @@
        </row>
        <row>
         <entry>soldan</entry>
-        <entry><userinput>and</userinput></entry>
+        <entry><literal>and</literal></entry>
         <entry>
          <link linkend="language.operators.logical">mantıksal</link>
         </entry>
@@ -191,7 +269,7 @@
        </row>
        <row>
         <entry>soldan</entry>
-        <entry><userinput>xor</userinput></entry>
+        <entry><literal>xor</literal></entry>
         <entry>
          <link linkend="language.operators.logical">mantıksal</link>
         </entry>
@@ -198,23 +276,16 @@
        </row>
        <row>
         <entry>soldan</entry>
-        <entry><userinput>or</userinput></entry>
+        <entry><literal>or</literal></entry>
         <entry>
          <link linkend="language.operators.logical">mantıksal</link>
         </entry>
        </row>
-       <row>
-        <entry>soldan</entry>
-        <entry><userinput>,</userinput></entry>
-        <entry>birçok kullanım</entry>
-       </row>
       </tbody>
      </tgroup>
     </table>
    </para>
    <para>
-    Soldan ilişkilendirme, ifadenin soldan sağa, sağdan ilişkilendirme ise
-    sağdan sola değerlendirileceği anlamına gelir.
     <example>
      <title>- Öncelik yönü</title>
      <programlisting role="php">
@@ -221,6 +292,7 @@
 <![CDATA[
 <?php
 $a = 3 * 3 % 5; // (3 * 3) % 5 = 4
+// üç terimli işlecin değerlendirilmesi C/C++ dillerinden farklıdır
 $a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

 $a = 1;
@@ -230,8 +302,55 @@
 ]]>
      </programlisting>
     </example>
-    Parantezleri kodun okunabilirliğini arttırmak için kullanın.
    </para>
+   <para>
+    İşleç önceliklerini ve işlem yönünü ifadeni gruplanışı belirler. PHP
+    (genelde) ifadenin hangi sırayla değerlendirileceğini belirmez ve
+    kodlamada özel bir değerlendirme sırası kabulünden kaçınılmalıdır.
+    Çünkü davranış PHP'nin sürümleri arasında farklı olabildiği gibi
+    sarmalayan koda bağlı olarak da değişebilir.
+    <example>
+     <title>- Tanımsız değerlendirme sırası</title>
+     <programlisting role="php">
+<![CDATA[
+<?php
+$a = 1;
+echo $a + $a++; // 2 veya 3 basabilir
+
+$i = 1;
+$array[$i] = $i++; // indis 1 veya 2 olabilir
+?>
+]]>
+     </programlisting>
+    </example>
+    <example>
+     <title><literal>+</literal>, <literal>-</literal> ve <literal>.</literal>
+      aynı önceliğe sahiptir</title>
+     <programlisting role="php">
+<![CDATA[
+<?php
+$x = 4;
+// bu satır beklenmedik bir çıktı ile sonuçlanabilir:
+echo "x eksi bir eşittir " . $x-1 . ", ya da ben öyle umdum\n";
+
+// çünkü aşağıdaki satır gibi değerlendirilir:
+echo (("x eksi bir eşittir " . $x) - 1) . ", ya da ben öyle umdum\n";
+
+// istenen öncelik parantez kullanarak elde edilebilir:
+echo "x eksi bir eşittir " . ($x-1) . ", ya da ben öyle umdum\n";
+?>
+]]>
+     </programlisting>
+     &example.outputs;
+     <screen>
+<![CDATA[
+-1, ya da ben öyle umdum
+-1, ya da ben öyle umdum
+x eksi bir eşittir 3, ya da ben öyle umdum
+]]>
+     </screen>
+    </example>
+   </para>
    <note>
     <para>
      Eşitlik (<literal>=</literal>) işleci çoğu işleçten daha düşük önceliğe
@@ -260,6 +379,14 @@
      </thead>
      <tbody>
       <row>
+       <entry>+$a</entry>
+       <entry>Özdeşlik</entry>
+       <entry>
+        <varname>$a</varname>'nın <type>int</type> veya
+        <type>float</type>'a dönüşümü.
+       </entry>
+      </row>
+      <row>
        <entry><userinput>-$a</userinput></entry>
        <entry>Olumsuzlama</entry>
        <entry><varname>$a</varname>'nın eksi işaretlisi.</entry>
@@ -289,6 +416,11 @@
        <entry>Kalan</entry>
        <entry><varname>$a</varname>'nın <varname>$b</varname>'ye bölümünden kalan.</entry>
       </row>
+      <row>
+       <entry>$a ** $b</entry>
+       <entry>Üs</entry>
+       <entry><varname>$a</varname> üssü <varname>$b</varname>. PHP 5.6 ile eklendi.</entry>
+      </row>
      </tbody>
     </tgroup>
    </table>
@@ -296,17 +428,31 @@
     Bölme işlecinin tamsayı bölüm vermesi için iki teriminin de tamsayı
     (veya dönüşüm sonucu tamsayı olan dizge) olması ve birbirlerine tam
     olarak bölünmesi gerekir, aksi takdirde bölüm gerçek sayı olacaktır.
+    Tamsayı bölme için <function>intdiv</function> işlevine bakınız.
    </simpara>
    <simpara>
     Kalan işlecinin (<literal>%</literal>) terimleri gerçek sayılarsa
-    ondalık kısımları atılarak tamsayıya dönüştürülürler.
+    ondalık kısımları atılarak tamsayıya dönüştürülürler. Gerçek sayı bölmeden
+    kalan için <function>fmod</function> işlevine bakınız.
    </simpara>
-   <note>
-    <simpara>
-     <literal>$a % $b</literal> işleminin sonucu, <varname>$a</varname>
-     negatifse negatif olacaktır.
-    </simpara>
-   </note>
+   <para>
+    <literal>%</literal> kalan işlecinin sonucu bölünenin işaretini alır. Yani
+    <literal>$a % $b</literal> işlemini sonucu <varname>$a</varname> ile aynı işaretli olacaktır. Örnek:
+    <informalexample>
+     <programlisting role="php">
+<![CDATA[
+<?php
+
+echo (5 % 3)."\n";           //  2 basar
+echo (5 % -3)."\n";          //  2 basar
+echo (-5 % 3)."\n";          // -2 basar
+echo (-5 % -3)."\n";         // -2 basar
+
+?>
+]]>
+     </programlisting>
+    </informalexample>
+   </para>
    <simpara>
     <link linkend="ref.math">Matematik işlevleri</link> bölümüne de bakınız.
    </simpara>
@@ -339,12 +485,6 @@
     </informalexample>
    </para>
    <para>
-    Diziler içi bir değerin bir isimli anahtara atanması "=&gt;" işleci
-    kullanılarak gerçekleştirilir. Bu işlecin
-    <link linkend="language.operators.precedence">önceliği</link> diğer atama
-    işleçlerinin önceliğiyle aynıdır.
-   </para>
-   <para>
     Temel atama işlecinden başka atama işlemini temel aritmetik, <link
     linkend="language.operators">ikil aritmetik</link> işlemleriyle veya
     dizi ya da dizge birleştirme işlemleriyle  birleştiren, "birleşik atama
@@ -370,15 +510,75 @@
     atadığına) dikkat ediniz. Dolayısıyla birinde yapılan değişiklik
     diğerini etkilemeyecektir. Kapalı bir döngü içinde büyükçe bir diziye
     atama işlemleri yapma ihtiyacı duyarsanız bu ayrı bir anlam kazanır.
-    Gönderimli atama <literal>$değişken = &amp;$diğerdeğişken;</literal>
-    sözdizimi ile desteklenmektedir. 'Gönderimli atama' denince, iki
-    değişkenin aynı veriyi gösterdiğini ve birbirlerinden birşeyler
-    kopyalamadıklarını anlıyoruz. Gönderimler hakkında daha ayrıntılı bilgi
-    edinmek için <link linkend="language.references">Gönderimlerle ilgili
-    herşey</link> bölümüne bakınız. PHP 5'ten itibaren, <link
-    linkend="language.oop5.cloning">clone</link> anahtar sözcüğü ile yeni
-    bir nesneye atama yapılmadıkça, nesneler gönderimli olarak atanırlar.
+    </para>
+   <para>
+    PHP içindeki değere göre olağan atama davranışının bir istisnası,
+    gönderimle atanan nesnelerle gerçekleşir. Nesneler
+    <link linkend="language.oop5.cloning">clone</link> anahtar sözcüğü ile
+    doğrudan kopyalanabilir.
    </para>
+
+   <sect2 xml:id="language.operators.assignment.reference">
+    <title>Gönderimli atama</title>
+    <para>
+     Gönderimli atama <literal>$değişken = &amp;$diğerdeğişken;</literal>
+     sözdizimi ile desteklenmektedir. 'Gönderimli atama' denince, iki
+     değişkenin aynı veriyi gösterdiğini ve birbirlerinden birşeyler
+     kopyalamadıklarını anlıyoruz.
+    </para>
+    <para>
+     <example>
+      <title>- Gönderimli atama</title>
+      <programlisting role="php">
+<![CDATA[
+<?php
+$a = 3;
+$b = &$a; // $b, $a'ya bir gönderimdir
+
+print "$a\n"; // 3 basar
+print "$b\n"; // 3 basar
+
+$a = 4; // $a değişir
+
+print "$a\n"; // 4 basar
+print "$b\n"; // bu da 4 basar, $b, $a'ya bir gönderimdi ve $a değişti
+
+?>
+]]>
+      </programlisting>
+     </example>
+    </para>
+    <para>
+     <link linkend="language.oop5.basic.new">new</link> işleci özdevinimli
+     olarak bir gönderim döndürür. Dolayısıyla,
+     <link linkend="language.oop5.basic.new">new</link> sonucunu gönderimli
+     atamak PHP 5.3 ve sonrasında bir <constant>E_DEPRECATED</constant>
+     iletisiyle, önceki sürümlerde ise bir <constant>E_STRICT</constant>
+     iletisiyle sonuçlanır.
+    </para>
+    <para>
+     Örneğin bu kod bir uyarı ile somuçlanır:
+     <informalexample>
+      <programlisting role="php">
+<![CDATA[
+<?php
+class C {}
+
+/* Aşağıdaki satırın ürettiği hata iletisi:
+ * Deprecated: Assigning the return value of new by reference is deprecated in...
+ */
+$o = &new C;
+?>
+]]>
+      </programlisting>
+     </informalexample>
+    </para>
+    <para>
+      Gönderimler hakkında daha ayrıntılı bilgi
+      edinmek için <link linkend="language.references">Gönderimlerle ilgili
+      herşey</link> bölümüne bakınız.
+    </para>
+   </sect2>
   </sect1>

   <sect1 xml:id="language.operators.bitwise">
@@ -460,11 +660,23 @@
     önce bitsel VE sonra eşitlik uygulanır.
    </para>
    <para>
-    Veri türü dönüşümlerinde dikkatli olun. Eğer sol ve sağ taraf
-    değiştirgelerinin ikisi de dizge ise bitsel işleçler terimlerdeki
-    karakterlerin ASCII değerleri üzerinde işlem yapacaktır.
+    Eğer <literal>&amp;</literal>, <literal>|</literal> ve
+    <literal>^</literal> için her iki terim de dize ise terimlerdeki
+    karakterlerin ASCII değerleri üzerinde işlem yapılır ve sonuç bir dize
+    olur. Tüm diğer durumlarda, her iki terim <link
+    linkend="language.types.integer.casting">tamsayıya dönüştürülür</link>
+    ve sonuç tamsayı olur.
    </para>
    <para>
+    <literal>~</literal> işleci için terim bir dize ise, terimdeki
+    karakterlerin ASCII değerleri üzerinde işlem yapılır ve sonuç bir dize
+    olur. Aksi takdirde, terim ve sonuç tamsayı olarak ele alınır.
+   </para>
+   <para>
+    <literal>&lt;&lt;</literal> ve <literal>&gt;&gt;</literal> işleçleri için
+    her iki terim ve sonuç daima tamsayı olarak ele alınır.
+   </para>
+  <para>
     <informalexample>
      <para>
       <literallayout>
@@ -1011,11 +1223,18 @@
   </para>
    <warning>
     <para>
-     32 bitlik sistemlerde 32 bitten fazla sağa kaydırma yapmayın. 32 bitten
-     daha geniş bir sayıyla sonuçlanacak şekilde sola kaydırma yapmayın.
-     PHP_INT_MAX'tan büyük sayılar üzerinde bitsel işlemler yapacaksanız gmp
-     eklentisindeki işlevleri kullanın.
+     PHP 7.0 öncesinde, tamsayıları, sistem uzun tamsayı genişliğinden büyük
+     veya ona eşit olan değerlere göre veya negatif sayılara göre kaydırmak,
+     tanımlanmamış davranışlarla sonuçlanır. Başka bir deyişle, PHP 5.x
+     kullanıyorsanız, 32 bitlik sistemlerde 31 bitten, 64 bitlik sistemlerde
+     63 bitten fazla kaydırma yapmayın.
     </para>
+    <para>
+     Use functions from the <link linkend="book.gmp">gmp</link> extension for
+     bitwise manipulation on numbers beyond <literal>PHP_INT_MAX</literal>'ın
+     ötesindeki sayılar üzerinde bitsel işlemler için
+     <link linkend="book.gmp">gmp</link> eklentisindeki işlevleri kullanın.
+    </para>
    </warning>
    <para>
     Ayrıca bakınız:
@@ -1051,8 +1270,8 @@
       <row>
        <entry><userinput>$a == $b</userinput></entry>
        <entry>Eşittir</entry>
-       <entry><varname>$a</varname> ve <varname>$b</varname> aynı değere
-       sahipse sonuç &true; olur.</entry>
+       <entry>Tür dönüşümünden sonra, <varname>$a</varname> ve
+         <varname>$b</varname> aynı değere sahipse sonuç &true; olur.</entry>
       </row>
       <row>
        <entry><userinput>$a === $b</userinput></entry>
@@ -1059,20 +1278,22 @@
        <entry>Aynıdır</entry>
        <entry>
         <varname>$a</varname> ve <varname>$b</varname> aynı değere sahipse ve
-        türleri de aynıysa sonuç &true; olur. (PHP 4'ten beri vardır.)
+        türleri de aynıysa sonuç &true; olur.
        </entry>
       </row>
       <row>
        <entry><userinput>$a != $b</userinput></entry>
        <entry>Eşit değildir</entry>
-       <entry><varname>$a</varname> ve <varname>$b</varname> aynı değere sahip
-       değilse sonuç &true; olur.</entry>
+       <entry>Tür dönüşümünden sonra, <varname>$a</varname> ve
+        <varname>$b</varname> aynı değere sahip değilse sonuç &true; olur.
+       </entry>
       </row>
       <row>
        <entry><userinput>$a &lt;&gt; $b</userinput></entry>
        <entry>Eşit değildir</entry>
-       <entry><varname>$a</varname> ve <varname>$b</varname> aynı değere sahip
-       değilse sonuç &true; olur.</entry>
+       <entry>Tür dönüşümünden sonra, <varname>$a</varname> ve
+        <varname>$b</varname> aynı değere sahip değilse sonuç &true; olur.
+       </entry>
       </row>
       <row>
        <entry><userinput>$a !== $b</userinput></entry>
@@ -1079,8 +1300,7 @@
        <entry>Farklıdır</entry>
        <entry>
         <varname>$a</varname> ve <varname>$b</varname> aynı değere sahip
-        değilse veya türleri aynı değilse sonuç &true; olur. (PHP 4'ten beri
-        vardır.)
+        değilse veya türleri aynı değilse sonuç &true; olur.
        </entry>
       </row>
       <row>
@@ -1107,12 +1327,22 @@
        <entry><varname>$a</varname>, <varname>$b</varname>'den büyük veya ona
        eşitse sonuç &true; olur.</entry>
       </row>
+      <row>
+       <entry>$a &lt;=&gt; $b</entry>
+       <entry>Mekik</entry>
+       <entry>
+        An <type>integer</type> less than, equal to, or greater than zero when
+        <varname>$a</varname> küçük, eşit ve büyük <varname>$b</varname>
+        olduğunda, bir tamsayı da sırasıyla küçük, eşit ve büyük sıfırdır.
+        PHP 7 ve sonrasında kullanılabilir.
+       </entry>
+      </row>
      </tbody>
     </tgroup>
    </table>
    <para>
-    Bir sayıyı bir dizge ile veya iki sayısal dizgeyi karşılaştırmak
-    isterseniz dizge önce <link linkend="language.types.string.conversion">bir
+    Bir sayıyı bir dize ile veya iki sayısal dizgeyi karşılaştırmak
+    isterseniz dize önce <link linkend="language.types.string.conversion">bir
     sayıya dönüştürülür</link> ve karşılaştırma sayısal olarak yapılır. Bu
     kurallar ayrıca <link linkend="control-structures.switch">switch</link>
     deyimine de uygulanır. === veya !== ile tür ve dolayısıyla değer
@@ -1137,6 +1367,56 @@
 ?>
 ]]>
      </programlisting>
+     <programlisting role="php">
+<![CDATA[
+<?php
+// Tamsayılar
+echo 1 <=> 1; // 0
+echo 1 <=> 2; // -1
+echo 2 <=> 1; // 1
+
+// Gerçeller
+echo 1.5 <=> 1.5; // 0
+echo 1.5 <=> 2.5; // -1
+echo 2.5 <=> 1.5; // 1
+
+// Dizeler
+echo "a" <=> "a"; // 0
+echo "a" <=> "b"; // -1
+echo "b" <=> "a"; // 1
+
+echo "a" <=> "aa"; // -1
+echo "zz" <=> "aa"; // 1
+
+// Diziler
+echo [] <=> []; // 0
+echo [1, 2, 3] <=> [1, 2, 3]; // 0
+echo [1, 2, 3] <=> []; // 1
+echo [1, 2, 3] <=> [1, 2, 1]; // 1
+echo [1, 2, 3] <=> [1, 2, 4]; // -1
+
+// Nesneler
+$a = (object) ["a" => "b"];
+$b = (object) ["a" => "b"];
+echo $a <=> $b; // 0
+
+$a = (object) ["a" => "b"];
+$b = (object) ["a" => "c"];
+echo $a <=> $b; // -1
+
+$a = (object) ["a" => "c"];
+$b = (object) ["a" => "b"];
+echo $a <=> $b; // 1
+
+// sadece değerler karşılaştırılmaz, anahtarlar da eşleşmeli
+$a = (object) ["a" => "b"];
+$b = (object) ["b" => "b"];
+echo $a <=> $b; // 1
+
+?>
+]]>
+
+     </programlisting>
     </informalexample>
    </para>

@@ -1164,16 +1444,15 @@
       <row>
        <entry><type>bool</type> veya <type>null</type></entry>
        <entry>herhangi bir tür</entry>
-       <entry><type>bool</type> türüne dönüşümden sonra &false; &lt; &true;
-       karşılaştırması yapılır</entry>
+       <entry>Her iki tarafta <type>bool</type> türüne dönüşümden sonra
+         &false; &lt; &true; karşılaştırması yapılır</entry>
       </row>
       <row>
        <entry><type>object</type></entry>
        <entry><type>object</type></entry>
        <entry>Yerleşik sınıflar kendi karşılaştırmalarını tanımlayabilir.
-       Farklı sınıflar karşılaştırılamazlar. Aynı sınıfın özellikleri
-       dizilerdeki gibi (PHP 4) karşılaştırırılır. PHP 5'in <link
-       linkend="language.oop5.object-comparison">uygulaması</link> farklıdır.
+       Farklı sınıflar karşılaştırılamazlar. Aynı sınıflar için bkz: <link
+       linkend="language.oop5.object-comparison">Nesne karşılaştırması</link>
        </entry>
       </row>
       <row>
@@ -1193,14 +1472,14 @@
        bakınız).</entry>
       </row>
       <row>
-       <entry><type>array</type></entry>
+       <entry><type>object</type></entry>
        <entry>herhangi bir tür</entry>
-       <entry><type>array</type> daima büyüktür.</entry>
+       <entry><type>object</type> daima büyüktür.</entry>
       </row>
       <row>
-       <entry><type>object</type></entry>
+       <entry><type>array</type></entry>
        <entry>herhangi bir tür</entry>
-       <entry><type>object</type> daima büyüktür</entry>
+       <entry><type>array</type> daima büyüktür</entry>
       </row>
      </tbody>
     </tgroup>
@@ -1207,6 +1486,25 @@
    </table>
    <para>
     <example>
+     <title>Boolean/null comparison</title>
+     <programlisting role="php">
+<![CDATA[
+<?php
+// Bool ve null daima bool gibi karşılaştırılır.
+var_dump(1 == TRUE);  // TRUE - (bool)1 == TRUE ile aynı
+var_dump(0 == FALSE); // TRUE - (bool)0 == FALSE ile aynı
+var_dump(100 < TRUE); // FALSE - (bool)100 < TRUE ile aynı
+var_dump(-10 < FALSE);// FALSE - (bool)-10 < FALSE ile aynı
+var_dump(min(-100, -10, NULL, 10, 100)); // NULL - (bool)NULL < (bool)-100 is FALSE < TRUE
+?>
+]]>
+     </programlisting>
+    </example>
+   </para>
+
+
+   <para>
+    <example>
      <title>- Özetle Standard Dizi Karşılaştırması</title>
      <programlisting role="php">
 <![CDATA[
@@ -1294,11 +1592,12 @@
     </para>
     <note>
      <simpara>
-      Üç terimli işleç aslında bir deyimdir, dolayısıyla sonucu bir
-      değişkene atanamaz. Bir değişkeni gönderimli döndürmek istediğiniz
+      Üç terimli işleç aslında bir ifadedir, dolayısıyla sonucu bir
+      değişkene atanamaz, fakat bir deyimin sonucuna atanabilir.
+      Bir değişkeni gönderimli döndürmek istediğiniz
       takdirde bu önem kazanır. Gönderimli olarak değer döndüren bir işlevde
       <literal>return $var == 42 ? $a : $b;</literal> deyimi bu bakımdan
-      çalışmaz ve güncel PHP sürümlerinde bir uyarı gösterilir.
+      çalışmaz ve bir uyarı gösterilir.
      </simpara>
     </note>
     <note>
@@ -1330,7 +1629,72 @@
      </para>
     </note>
    </sect2>
+
+   <sect2 xml:id="language.operators.comparison.coalesce">
+    <title>Null kaynaşma işleci</title>
+    <para>
+     "??" (veya null kaynaşma) işleci, PHP 7 ve sonrasında kullanılabilir.
+     <example>
+      <title>- Öntanımlı değer atama</title>
+      <programlisting role="php">
+<![CDATA[
+<?php
+// Null kaynaşma işleci için kullanım örneği
+$action = $_POST['action'] ?? 'default';

+// Yukarıdaki satır, bu if/else deyimine esdeğerdir.
+if (isset($_POST['action'])) {
+    $action = $_POST['action'];
+} else {
+    $action = 'default';
+}
+
+?>
+]]>
+      </programlisting>
+     </example>
+     <literal>(ifade1) ?? (ifade2)</literal> ifadesinin sonucu,
+     <replaceable>ifade1</replaceable> &null;
+     ise <replaceable>ifade2</replaceable>
+     değilse <replaceable>ifade1</replaceable>'dir.
+    </para>
+    <para>
+     Aslında, bu işleç sol taraf değeri mevcut değilse <function>isset</function>
+     gibi bir uyarı çıktılamaz. Bu, özellikle dizi anahtarlarında kullanışlıdır.
+    </para>
+    <note>
+     <simpara>
+      Null kaynaşma işleci bir ifade olup bir değişkene atanmaz ama bir deyimin
+      sonucuna atanabilir. Bir değişkeni gönderimli döndürmek istiyorsanız bunu
+      bilmek önemlidir. Gönderimli döndüren bir işlevde
+      <literal>return $foo ?? $bar;</literal> deyimi bu nedenle çalışmaz ve bir
+      uyarı çıktılanır.
+     </simpara>
+    </note>
+    <note>
+     <para>
+      Null kaynaşma işleci basit iç içeliğe izi verir:
+      <example>
+       <title>- İçiçe null kaynaşma işleci</title>
+       <programlisting role="php">
+<![CDATA[
+<?php
+
+$foo = null;
+$bar = null;
+$baz = 1;
+$qux = 2;
+
+echo $foo ?? $bar ?? $baz ?? $qux; // 1 basar
+
+?>
+]]>
+       </programlisting>
+      </example>
+     </para>
+    </note>
+   </sect2>
+
   </sect1>

   <sect1 xml:id="language.operators.errorcontrol">
@@ -1340,6 +1704,12 @@
     (<literal>@</literal>). PHP'de bir deyimin başına getirildiğinde,
     bu deyimin üreteceği olası hata iletileri yok sayılır.
    </simpara>
+    <simpara>
+    <function>set_error_handler</function> ile özel bir hata işleyici işlev
+    tanımlarsanız, hala çağrılmasına rağmen bu özel hata işleyicinin
+    <function>error_reporting</function> işlevini (hatayı tetikleyen çağrı @ ile
+    öncelenmişse 0 döndürür) çağırması gerekir.
+   </simpara>
    <simpara>
     Eğer <link linkend="ini.track-errors"><literal>track_errors</literal></link>
     özelliği etkinse bu deyimin ürettiği hata iletileri
@@ -1420,6 +1790,12 @@
      değilse, çalıştırma işleci etkin değildir.
     </para>
    </note>
+   <note>
+    <para>
+     Bazı başka dillerin aksine, tek tırnak imlerinin çift tırnaklı dizeler içinde
+     özel bir anlamı yoktur.
+    </para>
+   </note>
    <para>
     Ayrıca, <link linkend="ref.exec">Program Çalıştırma İşlevleri</link>,
     <function>popen</function>, <function>proc_open</function> işlevleri ve
@@ -1436,7 +1812,8 @@
    </para>
    <note>
     <simpara>
-     Arttırım ve eksiltim işleçleri mantıksal değerler üzerinde etkisizdir.
+     Arttırım ve eksiltim işleçleri sadece sayıları ve dizeleri etkiler.
+     Diziler, nesneler ve özkaynaklar etkilenmez.
      &null; değerini eksiltmenin bir etkisi yoktur fakat arttırmanın sonucu
      <literal>1</literal>'dir.
     </simpara>
@@ -1511,19 +1888,35 @@
    </para>
    <para>
     PHP, karakter değişkenleri üzerinde çalışırken C'nin değil Perl'in
-    yöntemlerini izler. Örneğin, Perl'de 'Z'+1 ifadesi 'AA' değerini
-    döndürürken, C'de '[' döner ( ord('Z') == 90, ord('[') == 91 ).
+    yöntemlerini izler. Örneğin, PHP ve Perl'de
+    <literal>$a = 'Z'; $a++;</literal> ifadesi <literal>$a</literal>
+    içinde 'AA' değerini döndürürken, C'de <literal>a = 'Z'; a++;</literal>
+    ifadesi <literal>a</literal> içinde'[' döndürür. <literal>'Z'</literal>
+    için ASCII değer 90, <literal>'['</literal> için 91'dir.
     Karakterlerin arttırılabileceğini fakat azaltılamayacağını ve sadece
-    ASCII harflerin (a-z ve A-Z) desteklendiğine dikkat ediniz.
+    ASCII harflerin ve rakamların (a-z ve A-Z, 0-9) desteklendiğine dikkat
+    ediniz. Diğer karakterler üzerinde arttırım ve eksiltim etkisiz olup
+    özgün değer değişmeden döndürürlür.
     <example>
      <title>- Karakter değişkenleri üzerinde aritmetik işlemler</title>
      <programlisting role="php">
 <![CDATA[
 <?php
+echo '== Harfler ==' . PHP_EOL;
 $i = 'W';
 for ($n=0; $n<6; $n++) {
-    echo ++$i . "\n";
+    echo ++$s . PHP_EOL;
 }
+// Rakam karakterleri farklı davranır
+echo '== Rakamlar ==' . PHP_EOL;
+$d = 'A8';
+for ($n=0; $n<6; $n++) {
+    echo ++$d . PHP_EOL;
+}
+$d = 'A08';
+for ($n=0; $n<6; $n++) {
+    echo ++$d . PHP_EOL;
+}
 ?>
 ]]>
      </programlisting>
@@ -1530,6 +1923,7 @@
      &example.outputs;
      <screen>
 <![CDATA[
+== Harfler ==
 X
 Y
 Z
@@ -1536,6 +1930,19 @@
 AA
 AB
 AC
+== Rakamlar ==
+A9
+B0
+B1
+B2
+B3
+B4
+A09
+A10
+A11
+A12
+A13
+A14
 ]]>
      </screen>
     </example>
@@ -1621,8 +2028,8 @@
 // Tıpkı şöyle: ($e = (false || true))
 $e = false || true;

-// false sabiti $f'ye atanır ve true yoksayılır
-// Tıpkı böyle: (($e = false) or true)
+// "or" işleminden önce false sabiti $f'ye atanır ve true yoksayılır
+// Tıpkı böyle: (($f = false) or true)
 $f = false or true;

 var_dump($e, $f);
@@ -1633,7 +2040,7 @@
 // Tıpkı böyle: ($g = (true && false))
 $g = true && false;

-// true sabiti $h'ya atanır ve false yoksayılır
+// "and" işleminden önce true sabiti $h'ya atanır ve false yoksayılır
 // Tıpkı böyle: (($h = true) and false)
 $h = true and false;

@@ -1732,9 +2139,10 @@
     </tgroup>
    </table>
    <para>
-    <literal>+</literal> işleci sağ taraftaki dizinin elemanlarını sol
-    taraftaki dizinin elemanlarının arasına ekler. Bunu yaparken anahtarları
-    aynı olan elemanların üzerine yazılmaz.
+    <literal>+</literal> işleci sol taraf dizisini sağ taraf dizisine ekleyip sağ
+    taraf dizisini döndürür. Her iki dizinin anahtarları alınır, sol taraf
+    dizisinin elemenları alınır ve sağ taraf dizisindeki eşleşen elemanlar yok
+    sayılır.
    </para>
    <para>
     <informalexample>
@@ -1751,6 +2159,10 @@
 $c = $b + $a;
 echo "\$b ve \$a'nın birleşimi: \n";
 var_dump($c);
+
+$a += $b; // $a += $b'nin birleşimi $a ve $b'dir
+echo "\$a += \$b'nin birleşimi: \n";
+var_dump($a);
 ?>
 ]]>
      </programlisting>
@@ -1776,6 +2188,15 @@
   ["c"]=>
   string(6) "çilek"
 }
+$a += $b'nin birleşimi:
+array(3) {
+  'a' =>
+  string(5) "elma"
+  'b' =>
+  string(6) "muz"
+  'c' =>
+  string(6) "çilek"
+}
 ]]>
     </screen>
    </para>
@@ -1970,9 +2391,38 @@
     </example>
    </para>
    <para>
+    Sınanan değişken bir nesne değilse instanceof hata çıktılamaz, basitçe
+    &false; döndürür. Sabitlere izin verilmez.
+    <example>
+     <title>- Değişkenleri sınamak için <literal>instanceof</literal> kullanımı</title>
+     <programlisting role="php">
+<![CDATA[
+<?php
+$a = 1;
+$b = NULL;
+$c = imagecreate(5, 5);
+var_dump($a instanceof stdClass); // $a bir tamsayıdır
+var_dump($b instanceof stdClass); // $b NULL'dur
+var_dump($c instanceof stdClass); // $c bir özkaynaktır
+var_dump(FALSE instanceof stdClass);
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+bool(false)
+bool(false)
+bool(false)
+PHP Fatal error:  instanceof expects an object instance, constant given
+]]>
+     </screen>
+    </example>
+   </para>
+   <para>
     Burada bilmeniz gereken bir kaç zorluk vardır.  PHP 5.1.0 öncesinde,
-    <literal>instanceof</literal> işleci, sınıf mevcut değilse <link
-    linkend="language.oop5.autoload">__autoload()</link> çağrısı yapardı.
+    <literal>instanceof</literal> işleci, sınıf mevcut değilse
+    <function>__autoload</function> çağrısı yapardı.
     Buna ek olarak, sınıf yüklenmemişse bir ölümcül hata oluşurdu. Bunun
     olmaması için bir <literal>devingen sınıf gönderimi</literal> veya sınıf
     ismini içeren bir dizge değişkeni kullanılabilir:
@@ -1985,7 +2435,7 @@
 $d = 'BaşkaSınıf';
 var_dump($a instanceof $d); // burada ölümcül hata oluşmaz
 ?>
-     ]]>
+]]>
     </programlisting>
     &example.outputs;
     <screen>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.