<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.enumerations.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'language.enumerations.backed.php',
    1 => 'Destekli Sayılamalar',
    2 => 'Destekli Sayılamalar',
  ),
  'up' => 
  array (
    0 => 'language.enumerations.php',
    1 => 'Sayılamalar',
  ),
  'prev' => 
  array (
    0 => 'language.enumerations.basics.php',
    1 => 'Temel Sayılamalar',
  ),
  'next' => 
  array (
    0 => 'language.enumerations.methods.php',
    1 => 'Sayılama Y&ouml;ntemleri',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'language/enumerations.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.enumerations.backed" class="sect1">
  <h2 class="title">Destekli Sayılamalar</h2>

  <p class="para">
   Öntanımlı olarak sayıl kılıfların sayıl bir karşılığı yoktur. Basitçe
   tekil nesnelerdir. Bununla birlikte, bir sayılama kılıfının bir
   veritabanına veya benzer bir veri deposuna giriş-çıkış yapabilmesini
   gerektiren çok sayıda durum vardır, dolayısıyla, dahili olarak tanımlanmış
   yerleşik bir sayıl (ve dolayısıyla dizgeleştirilebilir) eşdeğerin varlığı
   yararlıdır.
  </p>

  <p class="para">Bir sayılamaya sayıl bir eşdeğer tanımlama sözdizimi:</p>

  <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">enum </span><span style="color: #0000BB">Deste</span><span style="color: #007700">: </span><span style="color: #0000BB">string<br /></span><span style="color: #007700">{<br />    case </span><span style="color: #0000BB">Kupalar </span><span style="color: #007700">= </span><span style="color: #DD0000">'Ku'</span><span style="color: #007700">;<br />    case </span><span style="color: #0000BB">Karolar </span><span style="color: #007700">= </span><span style="color: #DD0000">'Ka'</span><span style="color: #007700">;<br />    case </span><span style="color: #0000BB">Sinekler </span><span style="color: #007700">= </span><span style="color: #DD0000">'S'</span><span style="color: #007700">;<br />    case </span><span style="color: #0000BB">Maçalar </span><span style="color: #007700">= </span><span style="color: #DD0000">'M'</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
  </div>


  <p class="para">
   Basitçe bir değerle &quot;desteklenmiş&quot; olduğundan sayıl eşdeğeri olan kılıflara
   &quot;Destekli Kılıf&quot; denir. Yalnızca destekli kılıflar içeren sayılamalara
   &quot;Destekli Sayılama&quot; denir. Destekli bir sayılama sadece
   destekli kılıfları içerir, desteksiz kılıf içermez. Desteksiz bir
   sayılama ise sadece desteksiz kılıfları içerir, destekli kılıf içermez.
  </p>

  <p class="para">
   Destekli bir sayılama, <code class="literal">int</code> veya
   <code class="literal">string</code> türünde bir değerle ama daima tek bir türdeki
   değerlerle desteklenebilir (yani ya hepsi <code class="literal">int</code>  ya da
   hepsi <code class="literal">string</code> türünde olabilir). Bir sayılama sayıl
   bir eşdeğere sahip olarak imlenmişse, tüm kılıflarına açıkça eşsiz birer
   değer tanımlanmış olmalıdır. Sayıl eşdeğerler otomatik olarak
   üretilmeyecektir (örneğin, sıralı tamsayılar). Destekli kılıflar diğer
   kılıflar arasında eşsiz olmalı, aynı sayıl eşdeğere sahip birden fazla
   kılıf olmamalıdır. Ancak, bir takma ad oluşturmak amacıyla bir sabite
   atanabilir. Bkz: <a href="language.enumerations.constants.php" class="link">Sayılama Sabitleri</a>.
  </p>

  <p class="para">
   Sayıl eşdeğerler sayılların kendileri olabileceği gibi sayıl ifadeleri de
   olabilir. Sabitler ve sabit ifadeleri desteklenmez. Yani,
   <code class="literal">1 + 1</code> geçerli, fakat <code class="literal">1 + SOME_CONST</code>
   geçersizdir.
  </p>

  <p class="para">
   Destekli Kılıflar ayrıca salt-okunur özellikler olup,
   <code class="literal">value</code> tanımda belirtilen değerdir.
  </p>

  <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">print </span><span style="color: #0000BB">Deste</span><span style="color: #007700">::</span><span style="color: #0000BB">Sinekler</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">value</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// Çıktısı: "S"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
  </div>


  <p class="para">
   <code class="literal">value</code> özelliğin salt-okunurluğunu zorlamak amacıyla
   bir değişkene gönderimli atanamaz. Yani, aşağıdaki örnek bir hata üretir:
  </p>

  <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$deste </span><span style="color: #007700">= </span><span style="color: #0000BB">Deste</span><span style="color: #007700">::</span><span style="color: #0000BB">Sinekler</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$ref </span><span style="color: #007700">= &amp;</span><span style="color: #0000BB">$deste</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">value</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// hata: Deste::$value özelliğine gönderim sağlanamıyor<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
  </div>


  <p class="para">
   Destekli sayılamalar dahili olarak iki ek yöntem sağlayan
   <span class="interfacename"><a href="class.backedenum.php" class="interfacename">BackedEnum</a></span> arayüzü ile gerçeklenir:
  </p>

  <ul class="simplelist">
   <li>
    <code class="literal">from(int|string): self</code> yöntemi bir sayıl değer alır ve
    karşılığı olan sayılama kılıfını döndürür. Böyle bir kılıf yoksa
    <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span> istisnası oluşur. Girdi olarak sayıl
    değere güvenildiği ancak karşılığında bir sayılama değerinin
    olmadığı durumda uygulamayı durduracak bir hata gerekiyorsa yararlı
    olabilir.
   </li>
   <li>
    <code class="literal">tryFrom(int|string): ?self</code> yöntemi bir sayıl değer alır
    ve karşılığı olan sayılama kılıfını döndürür. Böyle bir kılıf yoksa,
    yönrem <code class="literal">null</code> döndürür. Girdi olarak sayıl
    değere güvenilmediği durumda geliştirici hatayı kendi ele almak isterse
    veya bir öntanımlama yapmak isterse yararlı olabilir.
   </li>
  </ul>

  <p class="para">
   <code class="literal">from()</code> ve <code class="literal">tryFrom()</code> yöntemleri
   standart gevşek/katı kodlama kurallarını izler. Gevşek kodlama kipinde, bir
   tamsayı veya dizge aktarımı kabul edilebilir ve sistem değeri buna göre
   zorlar. Bir gerçel sayı da çalışır ve bu da zorlanır. Katı kodlama kipinde,
   bir dizge kılıf değeri durumunda <code class="literal">from()</code> yöntemine bir
   tamsayı (veya gerçel sayı) aktarımı (veya tersi)
   <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span> istisnasına yol açar. Her iki kipte, tüm
   diğer bağımsız değişken türleri <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span> istisnasına yol
   açar.
  </p>

  <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$record </span><span style="color: #007700">= </span><span style="color: #0000BB">get_stuff_from_database</span><span style="color: #007700">(</span><span style="color: #0000BB">$id</span><span style="color: #007700">);<br />print </span><span style="color: #0000BB">$record</span><span style="color: #007700">[</span><span style="color: #DD0000">'deste'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$deste </span><span style="color: #007700">=  </span><span style="color: #0000BB">Deste</span><span style="color: #007700">::</span><span style="color: #0000BB">from</span><span style="color: #007700">(</span><span style="color: #0000BB">$record</span><span style="color: #007700">[</span><span style="color: #DD0000">'deste'</span><span style="color: #007700">]);<br /></span><span style="color: #FF8000">// Geçersiz veri ValueError yavrulatır: "X" değeri enum "Deste" için geçerli bir sayıl değer değildir<br /></span><span style="color: #007700">print </span><span style="color: #0000BB">$deste</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">value</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$deste </span><span style="color: #007700">= </span><span style="color: #0000BB">Deste</span><span style="color: #007700">::</span><span style="color: #0000BB">tryFrom</span><span style="color: #007700">(</span><span style="color: #DD0000">'A'</span><span style="color: #007700">) ?? </span><span style="color: #0000BB">Deste</span><span style="color: #007700">::</span><span style="color: #0000BB">Sinekler</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// Geçersiz veri null döndürür, yerine Deste::Sinekler kullanılır.<br /></span><span style="color: #007700">print </span><span style="color: #0000BB">$deste</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">value</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
  </div>


  <p class="para">
   <code class="literal">from()</code> veya <code class="literal">tryFrom()</code> yöntemini
   destekli bir sayılama üzerinde geliştirici kendi tanımlarsa sonuç
   ölümcül hata olur.
  </p>

  </div><?php manual_footer($setup); ?>