<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.oop5.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'language.oop5.properties.php',
    1 => '&Ouml;zellikler',
    2 => '&Ouml;zellikler',
  ),
  'up' => 
  array (
    0 => 'language.oop5.php',
    1 => 'Sınıflar ve Nesneler',
  ),
  'prev' => 
  array (
    0 => 'language.oop5.basic.php',
    1 => 'Temel Kavramlar',
  ),
  'next' => 
  array (
    0 => 'language.oop5.property-hooks.php',
    1 => 'Property Hooks',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'language/oop5/properties.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.oop5.properties" class="sect1">
  <h2 class="title">Özellikler</h2>

  <p class="para">
   Sınıf üyesi değişkenlere <em>özellik</em> denir. Bunlara
   bazan <em>öznitelik</em> veya <em>alan</em>
   dendiği de olur, fakat bu kılavuzun amaçları doğrultusunda
   biz <em>özellik</em> terimini kullanacağız.
   PHP 7.4 itibariyle, özellikler normal değişken bildiriminin önüne isteğe
   bağlı (<a href="language.oop5.visibility.php" class="xref">G&ouml;r&uuml;n&uuml;rl&uuml;k</a> sözcüklerinden biri,
   <a href="language.oop5.static.php" class="link">language.oop5.static.php</a> veya PHP 8.1.0 itibariyle
   <a href="language.oop5.properties.php#language.oop5.properties.readonly-properties" class="link">readonly</a>
   gibi) bir değiştirici ve ardından isteğe bağlı bir tür belirtimi getirilerek
   bildirilir. Bu bildirim, bir ilklendirme olarak da yapılabilir; bu durumda
   <a href="language.constants.php" class="link">sabit</a> bir değerle ilklendirme
   yapılmalıdır.
  </p>
  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <p class="para">
    Sınıf özelliklerini bildirmenin artık kullanılmayan bir yolu da,
    bu değiştiriciler yerine <code class="literal">var</code> sözcüğünü kullanmaktır.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <span class="simpara">
    <a href="language.oop5.visibility.php" class="link">Görünürlük</a> sözcüklerinden
    biri kullanılmadan bildirilen bir özellik <code class="literal">public</code> olarak
    bildirilmiş olur.
   </span>
  </p></blockquote>
  <p class="para">
   Statik olmayan özelliklere, yöntemleri içinden <code class="literal">-&gt;</code>
   (Nesne İşleci): <var class="varname">$this->özellik</var> (burada
   <code class="literal">özellik</code> özelliğin ismidir) kullanarak erişilir. Statik
   özelliklere ise <code class="literal">::</code> (Çift İki nokta imi):
   <var class="varname">self::özellik</var> kullanarak erişilir. Statik ve statik
   olmayan özellikler arasıdaki fark hakkında daha  ayrıntılı bilgi için
   <a href="language.oop5.static.php" class="xref">static Anahtar S&ouml;zc&uuml;ğ&uuml;</a> bölümüne bakınız.
  </p>
  <p class="para">
   Yöntem bir nesne bağlamından çağrılıyorsa  <var class="varname">$this</var> sözde
   değişkeni sınıf yöntemleri içinde de kullanılabilir.
   <var class="varname">$this</var>, yöntemi çağıran nesnenin değeridir.
  </p>

  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Örnek 1 - Özellik bildirimi</strong></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">class </span><span style="color: #0000BB">SimpleClass<br /></span><span style="color: #007700">{<br />   public </span><span style="color: #0000BB">$var1 </span><span style="color: #007700">= </span><span style="color: #DD0000">'hello ' </span><span style="color: #007700">. </span><span style="color: #DD0000">'world'</span><span style="color: #007700">;<br /><br />   public </span><span style="color: #0000BB">$var2 </span><span style="color: #007700">= &lt;&lt;&lt;EOD<br /></span><span style="color: #DD0000">hello world<br /></span><span style="color: #007700">EOD;<br />   public </span><span style="color: #0000BB">$var3 </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">+</span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /><br />   </span><span style="color: #FF8000">// geçersiz özellik bildirimleri:<br />   </span><span style="color: #007700">public </span><span style="color: #0000BB">$var4 </span><span style="color: #007700">= </span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">myStaticMethod</span><span style="color: #007700">();<br />   public </span><span style="color: #0000BB">$var5 </span><span style="color: #007700">= </span><span style="color: #0000BB">$myVar</span><span style="color: #007700">;<br /><br />   </span><span style="color: #FF8000">// geçerli özellik bildirimleri:<br />   </span><span style="color: #007700">public </span><span style="color: #0000BB">$var6 </span><span style="color: #007700">= </span><span style="color: #0000BB">myConstant</span><span style="color: #007700">;<br />   public </span><span style="color: #0000BB">$var7 </span><span style="color: #007700">= [</span><span style="color: #0000BB">true</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">];<br /><br />   public </span><span style="color: #0000BB">$var8 </span><span style="color: #007700">= &lt;&lt;&lt;'EOD'<br /></span><span style="color: #DD0000">hello world<br /></span><span style="color: #007700">EOD;<br /><br />   </span><span style="color: #FF8000">// Örtük public bildirim:<br />   </span><span style="color: #007700">static </span><span style="color: #0000BB">$var9</span><span style="color: #007700">;<br />   readonly </span><span style="color: #0000BB">int $var10</span><span style="color: #007700">;<br />   var </span><span style="color: #0000BB">$var11</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>

  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <p class="para">
    Sınıflar ve nesnelerle çalışan bazı işlevler vardır. Bunlar için
    <a href="ref.classobj.php" class="xref">Sınıf ve Nesne İşlevleri</a> bölümüne bakınız.
   </p>
  </p></blockquote>

  <div class="sect2" id="language.oop5.properties.typed-properties">
   <h3 class="title">Tür Bildirimleri</h3>
   <p class="para">
    PHP 7.4.0 ve sonrasında özellik tanımı <span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span>
    istisnası ile <a href="language.types.declarations.php" class="link">tür
    bildirimi</a> içerebilmektedir.
    <div class="example" id="example-2">
     <p><strong>Örnek 2 - Tür ile özellik bildirimi</strong></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">class </span><span style="color: #0000BB">User<br /></span><span style="color: #007700">{<br />    public </span><span style="color: #0000BB">int $id</span><span style="color: #007700">;<br />    public ?</span><span style="color: #0000BB">string $name</span><span style="color: #007700">;<br /><br />    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">int $id</span><span style="color: #007700">, ?</span><span style="color: #0000BB">string $name</span><span style="color: #007700">)<br />    {<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">id </span><span style="color: #007700">= </span><span style="color: #0000BB">$id</span><span style="color: #007700">;<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name </span><span style="color: #007700">= </span><span style="color: #0000BB">$name</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$user </span><span style="color: #007700">= new </span><span style="color: #0000BB">User</span><span style="color: #007700">(</span><span style="color: #0000BB">1234</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$user</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">id</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$user</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>
Yukarıdaki örneğin çıktısı:</p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
int(1234)
NULL
</pre></div>
     </div>
    </div>
   </p>

   <p class="para">
    Tür bildirimli özellikler erişilmeden önce ilklendirilmelidir, aksi
    takdirde bir <span class="classname"><a href="class.error.php" class="classname">Error</a></span> yavrulanır.
    <div class="example" id="example-3">
      <p><strong>Örnek 3 - Özelliklere erişim</strong></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">class </span><span style="color: #0000BB">Shape<br /></span><span style="color: #007700">{<br />    public </span><span style="color: #0000BB">int $numberOfSides</span><span style="color: #007700">;<br />    public </span><span style="color: #0000BB">string $name</span><span style="color: #007700">;<br /><br />    public function </span><span style="color: #0000BB">setNumberOfSides</span><span style="color: #007700">(</span><span style="color: #0000BB">int $numberOfSides</span><span style="color: #007700">): </span><span style="color: #0000BB">void<br />    </span><span style="color: #007700">{<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">numberOfSides </span><span style="color: #007700">= </span><span style="color: #0000BB">$numberOfSides</span><span style="color: #007700">;<br />    }<br /><br />    public function </span><span style="color: #0000BB">setName</span><span style="color: #007700">(</span><span style="color: #0000BB">string $name</span><span style="color: #007700">): </span><span style="color: #0000BB">void<br />    </span><span style="color: #007700">{<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name </span><span style="color: #007700">= </span><span style="color: #0000BB">$name</span><span style="color: #007700">;<br />    }<br /><br />    public function </span><span style="color: #0000BB">getNumberOfSides</span><span style="color: #007700">(): </span><span style="color: #0000BB">int<br />    </span><span style="color: #007700">{<br />        return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">numberOfSides</span><span style="color: #007700">;<br />    }<br /><br />    public function </span><span style="color: #0000BB">getName</span><span style="color: #007700">(): </span><span style="color: #0000BB">string<br />    </span><span style="color: #007700">{<br />        return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$triangle </span><span style="color: #007700">= new </span><span style="color: #0000BB">Shape</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$triangle</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setName</span><span style="color: #007700">(</span><span style="color: #DD0000">"triangle"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$triangle</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setNumberofSides</span><span style="color: #007700">(</span><span style="color: #0000BB">3</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$triangle</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getName</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$triangle</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getNumberOfSides</span><span style="color: #007700">());<br /><br /></span><span style="color: #0000BB">$circle </span><span style="color: #007700">= new </span><span style="color: #0000BB">Shape</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$circle</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setName</span><span style="color: #007700">(</span><span style="color: #DD0000">"circle"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$circle</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getName</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$circle</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getNumberOfSides</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>
Yukarıdaki örneğin çıktısı:</p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
string(8) &quot;triangle&quot;
int(3)
string(6) &quot;circle&quot;

Fatal error: Uncaught Error: Typed property Shape::$numberOfSides must not be accessed before initialization
</pre></div>
     </div>
    </div>
   </p>
  </div>
  <div class="sect2" id="language.oop5.properties.readonly-properties">
   <h3 class="title">Salt-okunur Özellikler</h3>
   <p class="para">
    PHP 8.1.0 itibariyle, bir özellik <code class="code">readonly</code> ile
    bildirilebilmekte ve böylece ilklendirmeden sonra özellik üzerinde
    değişiklik yapılması engellenebilmektedir.
    PHP 8.4.0&#039;dan önce <code class="literal">readonly</code> özelliği örtük olarak
    private-set&#039;tir ve yalnızca aynı sınıftan yazılabilir.
    PHP 8.4.0 ve sonrasında, <code class="literal">readonly</code> özellikleri örtük olarak
    <a href="language.oop5.visibility.php#language.oop5.visibility-members-aviz" class="link"><code class="literal">protected(set)</code></a>&#039;tir,
    bu nedenle alt sınıflardan yazılabilir. İstenirse açıkça geçersiz
    kılınabilir.
    <div class="example" id="example-4">
     <p><strong>Örnek 4 - Salt-okunur özellik örneği</strong></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">class </span><span style="color: #0000BB">Test </span><span style="color: #007700">{<br />   public readonly </span><span style="color: #0000BB">string $prop</span><span style="color: #007700">;<br /><br />   public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">string $prop</span><span style="color: #007700">) {<br />       </span><span style="color: #FF8000">// Geçerli ilklendirme<br />       </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prop </span><span style="color: #007700">= </span><span style="color: #0000BB">$prop</span><span style="color: #007700">;<br />   }<br />}<br /></span><span style="color: #FF8000">// dolaylı ilklendirme<br /></span><span style="color: #0000BB">$test </span><span style="color: #007700">= new </span><span style="color: #0000BB">Test</span><span style="color: #007700">(</span><span style="color: #DD0000">"foobar"</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// Geçerli değerin okunması<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prop</span><span style="color: #007700">); </span><span style="color: #FF8000">// string(6) "foobar"<br /><br />// Geçersiz atama. Aynı değer yeniden atanıyor olsa bile geçerli değil.<br /></span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prop </span><span style="color: #007700">= </span><span style="color: #DD0000">"foobar"</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// Hata: Salt-okunur özellik Test::$prop üzerinde değişiklik yapılamaz<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
     <p class="para">
      <code class="code">readonly</code> betimleyicisi sadece <a href="language.oop5.properties.php#language.oop5.properties.typed-properties" class="link">özelliklere veri türü
      bildirimi yapılırken</a> uygulanabilir. Bir salt-okunur özelliği veri
      türü kısıtlaması olmaksızın bildirmek için
      <a href="language.types.mixed.php" class="xref">mixed</a> türü kullanılabilir.
     </p>
    </p></blockquote>
    <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
     <p class="para">
      Salt-okunur statik özellikler desteklenmemektedir.
     </p>
    </p></blockquote>
   </p>
   <p class="para">
    Bir salt-okunur özellik yalnızca bir kere, sadece bildirildiği bağlamda
    ilklendirilebilir ve bunun dışındaki her türlü ilklendirme ya da değişiklik
    hata ile sonuçlanır (<span class="classname"><a href="class.error.php" class="classname">Error</a></span> istisnası yavrulanır).
    <div class="example" id="example-5">
     <p><strong>Örnek 5 - Salt-okunur özelliklerde hatalı ilklendirme örneği</strong></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">class </span><span style="color: #0000BB">Test1 </span><span style="color: #007700">{<br />    public readonly </span><span style="color: #0000BB">string $prop</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$test1 </span><span style="color: #007700">= new </span><span style="color: #0000BB">Test1</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// Özel bağlamı dışında (küresel bağlamda) ilklendirme hatası<br /></span><span style="color: #0000BB">$test1</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prop </span><span style="color: #007700">= </span><span style="color: #DD0000">"foobar"</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// Error: Cannot initialize readonly property Test1::$prop from global scope<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <p class="para">
     Salt-okunur özelliklerde öntanımlı değerin açıkça belirtilmesine izin
     verilmez. Çünkü, salt-okunur bir özelliği bir değerle bildirmek, özünde
     bir sabitten farksız olduğundan bu yararsızdır.
     <div class="informalexample">
      <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">class </span><span style="color: #0000BB">Test </span><span style="color: #007700">{<br />    </span><span style="color: #FF8000">// Ölümcül hata: Salt-okunur özellik Test::$prop öntanımlı değere sahip olamaz<br />    </span><span style="color: #007700">public readonly </span><span style="color: #0000BB">int $prop </span><span style="color: #007700">= </span><span style="color: #0000BB">42</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
    </p>
   </p></blockquote>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <p class="para">
     Salt-okunur özellikler ilklendirildikten sonra <span class="function"><a href="function.unset.php" class="function">unset()</a></span>
     gibi bir işlevle yok edilemez. Bu ancak, özelliğin bildirildiği bağlamda,
     ilklendirilmeden önce mümkündür.
    </p>
   </p></blockquote>
   <p class="para">
    Aşağıdaki gibi düz atamalarla yapılmayan değişiklikler de
    <span class="classname"><a href="class.error.php" class="classname">Error</a></span> istisnasına yol açar:
    <div class="informalexample">
     <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">class </span><span style="color: #0000BB">Test </span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">(<br />        public readonly </span><span style="color: #0000BB">int $i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">,<br />        public readonly array </span><span style="color: #0000BB">$ary </span><span style="color: #007700">= [],<br />    ) {}<br />}<br /><br /></span><span style="color: #0000BB">$test </span><span style="color: #007700">= new </span><span style="color: #0000BB">Test</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">i </span><span style="color: #007700">+= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">i</span><span style="color: #007700">++;<br />++</span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">i</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">ary</span><span style="color: #007700">[] = </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">ary</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">][] = </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$ref </span><span style="color: #007700">=&amp; </span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">i</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">i </span><span style="color: #007700">=&amp; </span><span style="color: #0000BB">$ref</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">byRef</span><span style="color: #007700">(</span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">i</span><span style="color: #007700">);<br />foreach (</span><span style="color: #0000BB">$test </span><span style="color: #007700">as &amp;</span><span style="color: #0000BB">$prop</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    Bununla birlikte salt-okunur özellikler, içerik değişikliğini engellemez.
    Nesneler (veya özkaynaklar) salt-okunur özelliklerde saklansa bile
    içerikleri değiştirilebilir:
    <div class="informalexample">
     <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">class </span><span style="color: #0000BB">Test </span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">(public readonly </span><span style="color: #0000BB">object $obj</span><span style="color: #007700">) {}<br />}<br /><br /></span><span style="color: #0000BB">$test </span><span style="color: #007700">= new </span><span style="color: #0000BB">Test</span><span style="color: #007700">(new </span><span style="color: #0000BB">stdClass</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// Geçerli içerik değişikliği.<br /></span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">foo </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// Geçersiz atama<br /></span><span style="color: #0000BB">$test</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">obj </span><span style="color: #007700">= new </span><span style="color: #0000BB">stdClass</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>

  <div class="sect2" id="language.oop5.properties.dynamic-properties">
   <h3 class="title">Dinamik özellikler</h3>
   <p class="para">
    Bir nesnede mevcut olmayan bir özelliğe atama yapılmaya çalışılırsa PHP
    olmayan özelliği otomatik olarak oluşturmaya çalışır. Böyle dinamik
    olarak oluşturulan bir özellik sınıfın <em>yalnızca</em>
    bu nesnesinde kullanılabilir.
   </p>

   <div class="warning"><strong class="warning">Uyarı</strong>
    <p class="simpara">
     PHP 8.2.0 ve sonrasında dinamik özelliklerin kullanımı önerilmemektedir.
     Özelliğe atama yapmadan önce bildirilmesi önerilir. Keyfi özellik
     isimlerini işleme sokabilmek için sınıfın sihirli
     <a href="language.oop5.overloading.php#object.get" class="link">__get()</a> ve
     <a href="language.oop5.overloading.php#object.set" class="link">__set()</a> yöntemlerini gerçeklemesi
     gerekir. Son çare olarak, sınıf <code class="code">#[\AllowDynamicProperties]</code>
     özelliği ile imlenebilir.
    </p>
   </div>
  </div>

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