<?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.basic.php',
    1 => 'Temel Kavramlar',
    2 => 'Temel Kavramlar',
  ),
  'up' => 
  array (
    0 => 'language.oop5.php',
    1 => 'Sınıflar ve Nesneler',
  ),
  'prev' => 
  array (
    0 => 'oop5.intro.php',
    1 => 'Giriş',
  ),
  'next' => 
  array (
    0 => 'language.oop5.properties.php',
    1 => '&Ouml;zellikler',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'language/oop5/basic.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.oop5.basic" class="sect1">
  <h2 class="title">Temel Kavramlar</h2>

  <div class="sect2" id="language.oop5.basic.class">
   <h3 class="title"><code class="code">class</code> Anahtar Sözcüğü</h3>
   <p class="para">
    Temel sınıf tanımı <code class="literal">class</code> anahtar sözcüğü ile başlar
    sınıf isminin ardından gelen bir çift kaşlı ayracın arasında sınıfa ait
    özelliklerin ve yöntemlerin tanımları bulunur.
   </p>
   <p class="para">
    Sınıf ismi olarak herhangi bir geçerli yafta kullanılabilir ancak bu PHP
    için <a href="reserved.php" class="link">ayrılmış sözcüklerden biri</a>
    olmamalıdır. Geçerli bir sınıf ısmı bir harf veya alt çizgi ile başlar,
    sayılar, harfler veya alt çizgiler içerebilir. Bir düzenli ifade olarak
    şöyle bir şablonla eşleşmelidir:
    <code class="code">^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$</code>.
   </p>
   <p class="para">
    Bir sınıfın kendi <a href="language.oop5.constants.php" class="link">sabitleri</a>,
    <a href="language.oop5.properties.php" class="link">değişkenleri</a>
    (bunlara &quot;özellik&quot; de denir) ve işlevleri (bunlara &quot;yöntem&quot; de denir)
    olabilir.
   </p>
   <div class="example" id="example-1">
    <p><strong>Örnek 1 - Basit bir sınıf tanımı</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">BasitSınıf<br /></span><span style="color: #007700">{<br />    </span><span style="color: #FF8000">// özellik bildirimi<br />    </span><span style="color: #007700">public </span><span style="color: #0000BB">$öntanımlı </span><span style="color: #007700">= </span><span style="color: #DD0000">'öntanımlı bir değer'</span><span style="color: #007700">;<br /><br />    </span><span style="color: #FF8000">// yöntem tanımı<br />    </span><span style="color: #007700">public function </span><span style="color: #0000BB">ÖntanımlıyıGöster</span><span style="color: #007700">() {<br />        echo </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">öntanımlı</span><span style="color: #007700">;<br />    }<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
   <p class="para">
    Bir nesne bağlamı içinden bir yöntem çağırmak için <var class="varname">$this</var>
    diye bir sözde değişken kullanılır. <var class="varname">$this</var> çağrılan
    nesnenin değeridir.
   </p>
   <div class="warning"><strong class="warning">Uyarı</strong>
    <p class="para">
     Statik olmayan yöntemin statik olarak çağrılması
     <span class="classname"><a href="class.error.php" class="classname">Error</a></span> yavrulanmasına sebep olur.
     PHP 8.0.0 öncesinde bunun kullanımdışı olduğuna dair bir uyarı verilir ve
     tanımlanmamış olarak $this ile sonuçlanırdı.
   </p>
   <div class="example" id="language.oop5.basic.class.this">
    <p><strong>Örnek 2 - <var class="varname">$this</var> sözde değişkeninin kullanımı</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">A<br /></span><span style="color: #007700">{<br />    function </span><span style="color: #0000BB">foo</span><span style="color: #007700">()<br />    {<br />        if (isset(</span><span style="color: #0000BB">$this</span><span style="color: #007700">)) {<br />            echo </span><span style="color: #DD0000">'$this tanımlı ('</span><span style="color: #007700">;<br />            echo </span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">);<br />            echo </span><span style="color: #DD0000">")\n"</span><span style="color: #007700">;<br />        } else {<br />            echo </span><span style="color: #DD0000">"\$this tanımsız.\n"</span><span style="color: #007700">;<br />        }<br />    }<br />}<br /><br />class </span><span style="color: #0000BB">B<br /></span><span style="color: #007700">{<br />    function </span><span style="color: #0000BB">bar</span><span style="color: #007700">()<br />    {<br />        </span><span style="color: #0000BB">A</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">();<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">A</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">foo</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">A</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= new </span><span style="color: #0000BB">B</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$b</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">bar</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">B</span><span style="color: #007700">::</span><span style="color: #0000BB">bar</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 PHP 7 çıktısı:</p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
$this is defined (A)

Deprecated: Non-static method A::foo() should not be called statically in %s  on line 27
$this is not defined.

Deprecated: Non-static method A::foo() should not be called statically in %s  on line 20
$this is not defined.

Deprecated: Non-static method B::bar() should not be called statically in %s  on line 32

Deprecated: Non-static method A::foo() should not be called statically in %s  on line 20
$this is not defined.
</pre></div>
     </div>
     <div class="example-contents"><p>
Yukarıdaki örneğin PHP 8 çıktısı:</p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
$this is defined (A)

Fatal error: Uncaught Error: Non-static method A::foo() cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
</pre></div>
     </div>
    </div>
   </div>

   <div class="sect3" id="language.oop5.basic.class.readonly">
    <h4 class="title">Salt okunur sınıflar</h4>
    <p class="para">
     PHP 8.2.0 ve sonrasında, bir sınıf <span class="modifier">readonly</span>
     değiştiricisi ile imlenebilmektedir. Bir sınıfın
     <span class="modifier">readonly</span> imlenmesi bildirilen her özelliğe <a href="language.oop5.properties.php#language.oop5.properties.readonly-properties" class="link">
     <span class="modifier">readonly</span> değiştiricisi</a> eklenmesine ve
     <a href="language.oop5.properties.php#language.oop5.properties.dynamic-properties" class="link">dinamik
     özelliklerin</a> oluşturulmasının engellenmesine neden olur. Dahası,
     <span class="classname"><a href="class.allowdynamicproperties.php" class="classname">AllowDynamicProperties</a></span> özniteliği kullanılarak bu
     engelleme kaldırılamamakta, böyle bir çaba bir derleme anı hatasını  tetiklemektedir.
    </p>
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">#[</span><span style="color: #0000BB">\AllowDynamicProperties</span><span style="color: #007700">]<br />readonly class </span><span style="color: #0000BB">Foo </span><span style="color: #007700">{<br />}<br /><br /></span><span style="color: #FF8000">// Ölümcül hata: #[AllowDynamicProperties] readonly class Foo'ya uygulanamaz<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>

    <p class="para">
     Türsüz ve statik özellikler <code class="literal">readonly</code> değiştiricisi
     ile imlenemez ve salt okunur sınıflarda bildirilemez:
    </p>
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">readonly class </span><span style="color: #0000BB">Foo<br /></span><span style="color: #007700">{<br />    public </span><span style="color: #0000BB">$bar</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">// Ölümcül hata: Salt okunur Foo::$bar özelliğinin bir türü olmalı<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">readonly class </span><span style="color: #0000BB">Foo<br /></span><span style="color: #007700">{<br />    public static </span><span style="color: #0000BB">int $bar</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">// Ölümcül hata: Salt okunur class Foo statik özellikler bildiremez<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    <p class="para">
     Salt okunur (<span class="modifier">readonly</span> bildirimli) bir sınıfın
     <a href="language.oop5.basic.php#language.oop5.basic.extends" class="link">genişletilebilmesi</a>
     için gerek ve yeter koşul çocuk sınıfının da salt okunur sınıf olmasıdır.
    </p>
   </div>
  </div>

  <div class="sect2" id="language.oop5.basic.new">
   <h3 class="title"><code class="code">new</code> Anahtar Sözcüğü</h3>
   <p class="para">
    Bir sınıfın örneğini oluşturmak için <code class="literal">new</code> anahtar sözcüğü
    kullanılmalıdır. Nesnenin hata durumunda daima yeni bir değişkene
    atanarak oluşturulması için <a href="language.oop5.decon.php" class="link">kurucu</a>sunun bir <a href="language.exceptions.php" class="link">istisna</a> oluşturmaması gerekir. Sınıflar, örnekleme öncesi
    tanımlanmış olmalıdır (ve bu, bazı durumlarda bir gereksinimdir).
   </p>
   <p class="para">
    <span class="type"><a href="language.types.string.php" class="type string">string</a></span> türünde b,r değişken <code class="literal">new</code> ile
    kullanılmış bir sınıf ismi içeriyorsa bu sınıfın yeni bir örneği
    oluşturulur. Eğer sınıf bir isim alanı içersindeyse bu yapılırken sınıfın
    tam nitelenmiş ismi kullanılmalıdır.
   </p>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <p class="para">
     Sınıfın yapıcısına iletilecek hiçbir bağımsız değişken yoksa, sınıf
     adından sonra parantez kullanmak gerekmez.
    </p>
   </p></blockquote>
   <div class="example" id="example-2">
    <p><strong>Örnek 3 - Bir sınıf örneğinin oluşturulması</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$örnek </span><span style="color: #007700">= new </span><span style="color: #0000BB">BasitSınıf</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// Bu bir değişkenle de yapılabilir:<br /></span><span style="color: #0000BB">$sınıf </span><span style="color: #007700">= </span><span style="color: #DD0000">'BasitSınıf'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$örnek </span><span style="color: #007700">= new </span><span style="color: #0000BB">$sınıf</span><span style="color: #007700">(); </span><span style="color: #FF8000">// new BasitSınıf()<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
   <p class="para">
    PHP 8.0.0 ve sonrasında, keyfi ifadelerde <code class="literal">new</code>
    kullanımı desteklenmektedir. İfade bir dizge üretiyorsa daha karmaşık
    örneklemeler mümkündür. İfadelerin parantez içine alınması gerekir.
   </p>
   <div class="example" id="example-3">
    <p><strong>Örnek 4 - Keyfi ifadelerle örnekleme</strong></p>
    <div class="example-contents"><p>
     Örnekte sınıf ismini üretmekte kullanılan çeşitli ifadeler
     gösterilmiştir. Bir işlev çağrısı, dizge birleştirme ve
     <strong><code>::class</code></strong> sabiti.
    </p></div>
    <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">ClassA </span><span style="color: #007700">extends </span><span style="color: #0000BB">\stdClass </span><span style="color: #007700">{}<br />class </span><span style="color: #0000BB">ClassB </span><span style="color: #007700">extends </span><span style="color: #0000BB">\stdClass </span><span style="color: #007700">{}<br />class </span><span style="color: #0000BB">ClassC </span><span style="color: #007700">extends </span><span style="color: #0000BB">ClassB </span><span style="color: #007700">{}<br />class </span><span style="color: #0000BB">ClassD </span><span style="color: #007700">extends </span><span style="color: #0000BB">ClassA </span><span style="color: #007700">{}<br /><br />function </span><span style="color: #0000BB">getSomeClass</span><span style="color: #007700">(): </span><span style="color: #0000BB">string<br /></span><span style="color: #007700">{<br />    return </span><span style="color: #DD0000">'ClassA'</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(new (</span><span style="color: #0000BB">getSomeClass</span><span style="color: #007700">()));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(new (</span><span style="color: #DD0000">'Class' </span><span style="color: #007700">. </span><span style="color: #DD0000">'B'</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(new (</span><span style="color: #DD0000">'Class' </span><span style="color: #007700">. </span><span style="color: #DD0000">'C'</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(new (</span><span style="color: #0000BB">ClassD</span><span style="color: #007700">::class));<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>
Yukarıdaki örneğin PHP 8 çıktısı:</p></div>
    <div class="example-contents screen">
     <div class="cdata"><pre>
object(ClassA)#1 (0) {
}
object(ClassB)#1 (0) {
}
object(ClassC)#1 (0) {
}
object(ClassD)#1 (0) {
}

</pre></div>
    </div>
   </div>
   <p class="para">
    Sınıf bağlamında yeni bir nesneyi <code class="literal">new self</code> veya
    <code class="literal">new parent</code> kullanarak oluşturmak mümkündür.
   </p>
   <p class="para">
    Oluşturulmuş bir sınıf örneğinin yeni bir değişkene atanması sırasında,
    yeni değişken, atanan nesneyle aynı örneğe erişecektir. Bu davranışın
    örneklerin bir işleve aktarılmasından bir farkı yoktur. <a href="language.oop5.cloning.php" class="link">Kopyalamak</a> suretiyle oluşturulmuş
    bir nesnenin daima bir kopyası yapılabilir.
   </p>
   <div class="example" id="example-4">
    <p><strong>Örnek 5 - Nesne Atama</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$örnek </span><span style="color: #007700">= new </span><span style="color: #0000BB">BasitSınıf</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">$atama     </span><span style="color: #007700">=  </span><span style="color: #0000BB">$örnek</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$gönderim  </span><span style="color: #007700">=&amp; </span><span style="color: #0000BB">$örnek</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$örnek</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">var </span><span style="color: #007700">= </span><span style="color: #DD0000">'$atama bu değere sahip olacak'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$örnek </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">; </span><span style="color: #FF8000">// $örnek ve $gönderim null olur<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$örnek</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$gönderim</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$atama</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>
NULL
NULL
object(BasitSınıf)#1 (1) {
  [&quot;var&quot;]=&gt;
  string(30) &quot;$atama bu değere sahip olacak&quot;
}
</pre></div>
    </div>
   </div>
   <p class="para">
    Bir nesnenin örneğini oluşturmak için yeni yollar kullanılabilmektedir:
   </p>
   <div class="example" id="example-5">
    <p><strong>Örnek 6 - Yeni nesneler oluşturmak</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">Test<br /></span><span style="color: #007700">{<br />    public static function </span><span style="color: #0000BB">getNew</span><span style="color: #007700">()<br />    {<br />        return new static();<br />    }<br />}<br /><br />class </span><span style="color: #0000BB">Child </span><span style="color: #007700">extends </span><span style="color: #0000BB">Test </span><span style="color: #007700">{}<br /><br /></span><span style="color: #0000BB">$obj1 </span><span style="color: #007700">= new </span><span style="color: #0000BB">Test</span><span style="color: #007700">(); </span><span style="color: #FF8000">// sınıf adına göre<br /></span><span style="color: #0000BB">$obj2 </span><span style="color: #007700">= new </span><span style="color: #0000BB">$obj1</span><span style="color: #007700">;  </span><span style="color: #FF8000">// bir nesne içeren değişken üzerinden<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj1 </span><span style="color: #007700">!== </span><span style="color: #0000BB">$obj2</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$obj3 </span><span style="color: #007700">= </span><span style="color: #0000BB">Test</span><span style="color: #007700">::</span><span style="color: #0000BB">getNew</span><span style="color: #007700">(); </span><span style="color: #FF8000">// sınıf yöntemine göre<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj3 </span><span style="color: #007700">instanceof </span><span style="color: #0000BB">Test</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$obj4 </span><span style="color: #007700">= </span><span style="color: #0000BB">Child</span><span style="color: #007700">::</span><span style="color: #0000BB">getNew</span><span style="color: #007700">(); </span><span style="color: #FF8000">// çocuk sınıf yöntemi üzerinden<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj4 </span><span style="color: #007700">instanceof </span><span style="color: #0000BB">Child</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>
bool(true)
bool(true)
bool(true)
</pre></div>
    </div>
   </div>
   <p class="para">
    Yeni oluşturulmuş bir nesnenin üyesine tek bir ifadede erişmek
    mümkündür:
   </p>
   <div class="example" id="example-6">
    <p><strong>Örnek 7 - Yeni oluşturulmuş bir nesnenin üyesine erişim</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">echo (new </span><span style="color: #0000BB">DateTime</span><span style="color: #007700">())-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>
Yukarıdaki örnek şuna benzer bir çıktı üretir:</p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
2016
</pre></div>
    </div>
   </div>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <span class="simpara">
     PHP 7.1&#039;den önce, bir yapıcı işlev tanımlanmamışsa bağımsız değişkenler
     değerlendirilmez.
    </span>
   </p></blockquote>
  </div>

  <div class="sect2" id="language.oop5.basic.properties-methods">
   <h3 class="title">Özellikler ve Yöntemler</h3>
   <p class="para">
    Sınıf özellikleri ve yöntemleri ayrı isim alanlarında (&quot;namespace&quot;) yer
    alır, dolayısıyla bunlar aynı isimde olabilir. Sadece bağlama bağlı
    kalarak, bir özelliğin mi yoksa bir yöntemin mi çağrıldığına (yani, bir
    değişkene erişim veya işlev çağrısı) bakmadan her ikisi de aynı gösterimle
    kullanılabilir.
   </p>
   <div class="example" id="example-7">
    <p><strong>Örnek 8 - Özelliğe erişim ya da yöntem çağrısı</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">Foo<br /></span><span style="color: #007700">{<br />    public </span><span style="color: #0000BB">$bar </span><span style="color: #007700">= </span><span style="color: #DD0000">'özellik'</span><span style="color: #007700">;<br /><br />    public function </span><span style="color: #0000BB">bar</span><span style="color: #007700">() {<br />        return </span><span style="color: #DD0000">'yöntem'</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$obj </span><span style="color: #007700">= new </span><span style="color: #0000BB">Foo</span><span style="color: #007700">();<br />echo </span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">bar</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">, </span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">bar</span><span style="color: #007700">(), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;</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>
özellik
yöntem
</pre></div>
    </div>
   </div>
   <p class="para">
    Bunun anlamı: Bir özelliğe atanmış bir
    <a href="functions.anonymous.php" class="link">anonim işlevi</a> doğrudan çağırmak
    mümkün değildir. Bunun yerine, özellik önce örneğin bir değişkene
    atanmalıdır. Böyle bir özelliği parantez içine
    alarak doğrudan çağırmak mümkündür.
   </p>
   <div class="example" id="example-8">
    <p><strong>Örnek 9 - Bir özelliğe atanmış bir anonim işlevi çağırmak</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">Foo<br /></span><span style="color: #007700">{<br />    public </span><span style="color: #0000BB">$bar</span><span style="color: #007700">;<br /><br />    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">() {<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">bar </span><span style="color: #007700">= function() {<br />            return </span><span style="color: #0000BB">42</span><span style="color: #007700">;<br />        };<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$obj </span><span style="color: #007700">= new </span><span style="color: #0000BB">Foo</span><span style="color: #007700">();<br /><br />echo (</span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">bar</span><span style="color: #007700">)(), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;</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>
42
</pre></div>
    </div>
   </div>
  </div>

  <div class="sect2" id="language.oop5.basic.extends">
   <h3 class="title"><code class="code">extends</code> Anahtar Sözcüğü</h3>
   <p class="para">
    Bir sınıfın bildiriminde <code class="code">extends</code> anahtar sözcüğü
    kullanılarak başka bir sınıfın sabit, yöntem ve özellikleri miras alınabilir.
    Çok sayıda sınıfı miras alarak genişlemek mümkün değildir, bir sınıf
    sadece bir ana sınıfı miras alabilir.
   </p>
   <p class="para">
    Miras alınan sabit, yöntem ve özellikler, ebeveyn sınıfta tanımlı
    isimleriyle yeniden bildirilerek geçersiz kılınabilir; bu sadece ebeveyn
    sınıfın <a href="language.oop5.final.php" class="link">final</a> tanımlı yöntemleri
    ve sabitleri için yapılamaz. Geçersiz kılınmış yöntemlere ve statik
    özelliklere <a href="language.oop5.paamayim-nekudotayim.php" class="link">parent::</a> öneki ile
    atıfta bulunarak erişilebilir.
   </p>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <span class="simpara">
     PHP 8.1.0 itibariyle, sabitler final olarak bildirilebilmektedir.
    </span>
   </p></blockquote>
   <div class="example" id="example-9">
    <p><strong>Örnek 10 - Basit bir sınıfın miras alınması</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">EkSınıf </span><span style="color: #007700">extends </span><span style="color: #0000BB">BasitSınıf<br /></span><span style="color: #007700">{<br />    </span><span style="color: #FF8000">// ebeveyn yöntemi yeniden bildirelim<br />    </span><span style="color: #007700">function </span><span style="color: #0000BB">değerGöster</span><span style="color: #007700">()<br />    {<br />        echo </span><span style="color: #DD0000">"Sınıf genişletiliyor\n"</span><span style="color: #007700">;<br />        </span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">değerGöster</span><span style="color: #007700">();<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$ek </span><span style="color: #007700">= new </span><span style="color: #0000BB">EkSınıf</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$ek</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">değerGöster</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>
Sınıf genişletiliyor
bir öntanımlı değer
</pre></div>
    </div>
   </div>

   <div class="sect3" id="language.oop.lsp">
    <h4 class="title">Bağımsız değişken sırası uyumluluk kuralları</h4>
    <p class="para">
     Bir yöntem geçersiz kılınırken bağımsız değişkenlerin yerleri ebeveyn
     yöntem ile uyumlu olmalıdır. Aksi takdirde, ölümcül bir hata üretilir.
     PHP 8.0.0 öncesinde  <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> seviyesinde bir hata
     üretilirdi. Bağımsız değişkenlerin yerleri,
     <a href="language.oop5.variance.php" class="link">özgüllük</a>
     kurallarına uyuyorsa, zorunlu bir bağımsız değişkeni isteğe bağlı duruma
     getiriyorsa ve yalnızca isteğe bağlı yeni bağımsız değişkenler ekliyor ve
     görünürlüğü kısıtlamıyor, yalnızca rahatlatıyorsa uyumludur. Bu,
     Liskov İkame İlkesi olarak bilinir. Kurucu ve özel yöntemler bu uyumluluk
     kurallarından muaf olduğundan bir uyuşmazlık durumunda ölümcül bir hata
     oluşmaz.
    </p>
    <div class="example" id="example-10">
     <p><strong>Örnek 11 - Uyumlu çocuk yöntemler</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">Base<br /></span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">int $a</span><span style="color: #007700">) {<br />        echo </span><span style="color: #DD0000">"Geçerli\n"</span><span style="color: #007700">;<br />    }<br />}<br /><br />class </span><span style="color: #0000BB">Extend1 </span><span style="color: #007700">extends </span><span style="color: #0000BB">Base<br /></span><span style="color: #007700">{<br />    function </span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">int $a </span><span style="color: #007700">= </span><span style="color: #0000BB">5</span><span style="color: #007700">)<br />    {<br />        </span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br />    }<br />}<br /><br />class </span><span style="color: #0000BB">Extend2 </span><span style="color: #007700">extends </span><span style="color: #0000BB">Base<br /></span><span style="color: #007700">{<br />    function </span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">int $a</span><span style="color: #007700">, </span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">5</span><span style="color: #007700">)<br />    {<br />        </span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$extended1 </span><span style="color: #007700">= new </span><span style="color: #0000BB">Extend1</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$extended1</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">foo</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$extended2 </span><span style="color: #007700">= new </span><span style="color: #0000BB">Extend2</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$extended2</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">);</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>
Geçerli
Geçerli
</pre></div>
     </div>
    </div>

    <p class="para">
     Aşağıdaki örnekler, bir bağımsız değişkeni kaldıran veya isteğe bağlı bir
     bağımsız değişkeni zorunlu kılan bir çocuk yöntemin ebeveyn yöntemle uyumlu
     olmadığını gösterir.
    </p>
    <div class="example" id="example-11">
     <p><strong>Örnek 12 - Bir çocuk yöntem bir bağımsız değişkeni kaldırdığında ölümcül hata
       oluşur</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">Base<br /></span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">int $a </span><span style="color: #007700">= </span><span style="color: #0000BB">5</span><span style="color: #007700">) {<br />        echo </span><span style="color: #DD0000">"Geçerli\n"</span><span style="color: #007700">;<br />    }<br />}<br /><br />class </span><span style="color: #0000BB">Extend </span><span style="color: #007700">extends </span><span style="color: #0000BB">Base<br /></span><span style="color: #007700">{<br />    function </span><span style="color: #0000BB">foo</span><span style="color: #007700">()<br />    {<br />        </span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />    }<br />}</span></span></code></div>
     </div>

     <div class="example-contents"><p>
Yukarıdaki örneğin PHP 8.0 çıktısı şuna benzer:</p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
Fatal error: Declaration of Extend::foo() must be compatible with Base::foo(int $a = 5) in /in/evtlq on line 13
</pre></div>
     </div>
    </div>
    <div class="example" id="example-12">
     <p><strong>Örnek 13 - Bir çocuk yöntem isteğe bağlı bir bağımsız değişkeni zorunlu
       kıldığında ölümcül hata oluşur</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">Base<br /></span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">int $a </span><span style="color: #007700">= </span><span style="color: #0000BB">5</span><span style="color: #007700">) {<br />        echo </span><span style="color: #DD0000">"Geçerli\n"</span><span style="color: #007700">;<br />    }<br />}<br /><br />class </span><span style="color: #0000BB">Extend </span><span style="color: #007700">extends </span><span style="color: #0000BB">Base<br /></span><span style="color: #007700">{<br />    function </span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">int $a</span><span style="color: #007700">)<br />    {<br />        </span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br />    }<br />}</span></span></code></div>
     </div>

     <div class="example-contents"><p>
Yukarıdaki örneğin PHP 8.0 çıktısı şuna benzer:</p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
Fatal error: Declaration of Extend::foo(int $a) must be compatible with Base::foo(int $a = 5) in /in/qJXVC on line 13
</pre></div>
     </div>
    </div>

    <div class="warning"><strong class="warning">Uyarı</strong>
     <p class="para">
      Bir çocuk sınıfta bir yöntemin bağımsız değişkenini yeniden adlandırmak
      bağımsız değişken sırası uyumsuzluğu değildir. Ancak,
      <a href="functions.arguments.php#functions.named-arguments" class="link">isimli bağımsız değişkenler</a>
      kullanılırsa çalışma zamanı hatasına (<span class="classname"><a href="class.error.php" class="classname">Error</a></span>)
      neden olacağından bu önerilmez.
     </p>
     <div class="example" id="example-13">
      <p><strong>Örnek 14 - Bir çocuk sınıfta isimli bağımsız değişkenler yeniden adlandırıldığında
        hata oluşur</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">A </span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">test</span><span style="color: #007700">(</span><span style="color: #0000BB">$foo</span><span style="color: #007700">, </span><span style="color: #0000BB">$bar</span><span style="color: #007700">) {}<br />}<br /><br />class </span><span style="color: #0000BB">B </span><span style="color: #007700">extends </span><span style="color: #0000BB">A </span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">test</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">, </span><span style="color: #0000BB">$b</span><span style="color: #007700">) {}<br />}<br /><br /></span><span style="color: #0000BB">$obj </span><span style="color: #007700">= new </span><span style="color: #0000BB">B</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Pass parameters according to A::test() contract<br /></span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">test</span><span style="color: #007700">(</span><span style="color: #0000BB">foo</span><span style="color: #007700">: </span><span style="color: #DD0000">"foo"</span><span style="color: #007700">, </span><span style="color: #0000BB">bar</span><span style="color: #007700">: </span><span style="color: #DD0000">"bar"</span><span style="color: #007700">); </span><span style="color: #FF8000">// HATA!</span></span></code></div>
      </div>

      <div class="example-contents"><p>
Yukarıdaki örnek şuna benzer bir çıktı üretir:</p></div>
      <div class="example-contents screen">
<div class="cdata"><pre>
Fatal error: Uncaught Error: Unknown named parameter $foo in /in/XaaeN:14
Stack trace:
#0 {main}
  thrown in /in/XaaeN on line 14
</pre></div>
      </div>
     </div>
    </div>
   </div>
  </div>

  <div class="sect2" id="language.oop5.basic.class.class">
   <h3 class="title">::class</h3>

   <p class="para">
    <code class="literal">class</code> anahtar sözcüğü, ayrıca
    sınıf isim çözünürlüğü için de kullanılabilmektedir.
    <code class="literal">SınıfAdı</code> sınıfının tam nitelenmiş ismini
    <code class="literal">SınıfAdı::class</code> biçeminde kullanarak bir dizge elde
    edilebilir. Bu, özellikle <a href="language.namespaces.php" class="link">isim
    alanlı</a> sınıflarda çok kullanışlıdır.
   </p>
   <p class="para">
    <div class="example" id="language.oop5.basic.class.class.name">
     <p><strong>Örnek 15 - Sınıf adı çözünürlüğü</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">namespace </span><span style="color: #0000BB">NS </span><span style="color: #007700">{<br />    class </span><span style="color: #0000BB">SınıfAdı </span><span style="color: #007700">{<br />    }<br /><br />    echo </span><span style="color: #0000BB">SınıfAdı</span><span style="color: #007700">::class;<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>
NS\SınıfAdı
</pre></div>
     </div>
    </div>
   </p>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <p class="para">
      <code class="literal">::class</code> kullanarak sınıf ismi çözünürlüğü bir
      derleme zamanı dönüşümüdür. Yani, sınıf ismi dizgesi oluşturulduğu
      sırada otomatik bir yükleme henüz oluşmamıştır. Sonuç olarak, sınıf
      henüz mevcut değilken bile sınıf isimleri genişletilir. Bu durumda
      hiçbir hata oluşmaz.
    </p>
    <div class="example" id="language.oop5.basic.class.class.fail">
     <p><strong>Örnek 16 - Eksik sınıf adı çözümlemesi</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">print </span><span style="color: #0000BB">Does\Not\Exist</span><span style="color: #007700">::class;<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>
Does\Not\Exist
</pre></div>
     </div>
    </div>
   </p></blockquote>
   <p class="para">
    PHP 8.0.0&#039;dan itibaren, <code class="literal">::class</code> nesnelerde de
    kullanılabilir. Bu çözümleme derleme zamanında değil çalışma zamanında
    gerçekleşir. Etkisi, nesne üzerinde <span class="function"><a href="function.get-class.php" class="function">get_class()</a></span> işlevini
    çağırmakla aynıdır.
   </p>
   <div class="example" id="language.oop5.basic.class.class.object">
    <p><strong>Örnek 17 - Nesne adı çözümlemesi</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">namespace </span><span style="color: #0000BB">NS </span><span style="color: #007700">{<br />    class </span><span style="color: #0000BB">ClassName </span><span style="color: #007700">{<br />    }<br />}<br /></span><span style="color: #0000BB">$c </span><span style="color: #007700">= new </span><span style="color: #0000BB">ClassName</span><span style="color: #007700">();<br />print </span><span style="color: #0000BB">$c</span><span style="color: #007700">::class;<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>
NS\ClassName
</pre></div>
    </div>
   </div>
  </div>

 <div class="sect2" id="language.oop5.basic.nullsafe">
  <h3 class="title">Güvenli Null yöntemler ve özellikler</h3>
  <p class="para">
   PHP 8.0.0&#039;dan itibaren, özelliklere ve yöntemlere, &quot;güvenli null&quot; işleci ile
   de erişilebilir: <code class="literal">?-&gt;</code>. Güvenli null işleci, yukarıdaki
   özellik veya yöntem erişimiyle aynı şekilde çalışır, tek fark, başvurulan
   nesne <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> ise bir istisna yerine <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> döner. Başvurulan nesne bir
   zincirin parçasıysa, zincirin geri kalanı atlanır.
  </p>
  <p class="para">
   Etkisi, her bir erişimi önce <span class="function"><a href="function.is-null.php" class="function">is_null()</a></span> denetiminden
   geçirmeye benzer, ancak daha karmaşıktır.
  </p>
  <p class="para">
   <div class="example" id="example-14">
    <p><strong>Örnek 18 - Güvenli Null İşleci</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: #FF8000">// PHP 8.0.0 ve sonrasında, bu satır:<br /></span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">$repository</span><span style="color: #007700">?-&gt;</span><span style="color: #0000BB">getUser</span><span style="color: #007700">(</span><span style="color: #0000BB">5</span><span style="color: #007700">)?-&gt;</span><span style="color: #0000BB">name</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// aşağıdaki kod kümesi ile aynıdır:<br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">is_null</span><span style="color: #007700">(</span><span style="color: #0000BB">$repository</span><span style="color: #007700">)) {<br />    </span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br />} else {<br />    </span><span style="color: #0000BB">$user </span><span style="color: #007700">= </span><span style="color: #0000BB">$repository</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getUser</span><span style="color: #007700">(</span><span style="color: #0000BB">5</span><span style="color: #007700">);<br />    if (</span><span style="color: #0000BB">is_null</span><span style="color: #007700">(</span><span style="color: #0000BB">$user</span><span style="color: #007700">)) {<br />        </span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br />    } else {<br />        </span><span style="color: #0000BB">$result </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 />}<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">
    Güvenli Null işleci işleci, en iyi, null değerinin bir özellik veya yöntem
    dönüşü için geçerli ve beklenen olası bir değer olarak kabul edilmesi
    durumunda kullanılır. Bir hatayı belirtmek için, bir istisna oluşturmak
    tercih edilebilir.
   </p>
  </p></blockquote>
 </div>
</div><?php manual_footer($setup); ?>