<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/features.commandline.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'features.commandline.interactive.php',
    1 => 'Etkileşimli kabuk',
    2 => 'Etkileşimli kabuk',
  ),
  'up' => 
  array (
    0 => 'features.commandline.php',
    1 => 'Komut satırından kullanım',
  ),
  'prev' => 
  array (
    0 => 'features.commandline.io-streams.php',
    1 => 'G/&Ccedil; Akımları',
  ),
  'next' => 
  array (
    0 => 'features.commandline.webserver.php',
    1 => 'Yerleşik HTTP sunucusu',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'features/commandline.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="features.commandline.interactive" class="section">
  <h2 class="title">Etkileşimli kabuk</h2>

  <p class="para">
   PHP <strong class="option configure">--with-readline</strong> seçeneği ile
   derlenmişse, <abbr title="Command Line Interpreter/Interface">CLI</abbr> <abbr title="Server Application Programming Interface">SAPI</abbr> <strong class="option unknown">-a</strong> seçeneği kullanıldığında
   etkileşimli bir kabuk açar. PHP 7.1.0&#039;dan itibaren etkileşimli kabuk,
   <a href="book.readline.php" class="link">readline eklentisi</a> etkinse, Windows
   altında da kullanılabilmektedir.
  </p>

  <p class="para">
   Etkileşimli kabuğu kullanarak PHP kodu yazabilir ve bunları doğrudan
   çalıştırabilirsiniz.
  </p>

  <div class="example" id="example-1">
   <p><strong>Örnek 1 - Etkileşimli kabuk kullanarak kod çalıştırmak</strong></p>
   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">$ php -a
Interactive shell

php &gt; echo 5+8;
13
php &gt; function ikiEkle($n)
php &gt; {
php { return $n + 2;
php { }
php &gt; var_dump(ikiEkle(2));
int(4)
php &gt;</pre>
</div>
   </div>

  </div>

  <p class="para">
   Etkileşimli kabuk ayrıca, işlevler, sabitler, sınıf isimleri, değişkenler
   statik yöntem çağrıları ve sınıf sabitleri için sekme ile kod tamalama
   özelliklerine sahiptir.
  </p>

  <div class="example" id="example-2">
   <p><strong>Örnek 2 - Kod tamamlama</strong></p>
   <div class="example-contents"><p>
    Sekme tuşuna iki kere basarak yazdığınız harflerle başlayan anahtar
    sözcükleri listeleyebilirsiniz:
   </p></div>
   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">php &gt; strp[TAB][TAB]
strpbrk   strpos    strptime
php &gt; strp</pre>
</div>
   </div>

   <div class="example-contents"><p>
    Olası tek seçenek olduğunda sekme tuşuna ilk basışınızda sözcük aynı
    satırda tamamlanır:
   </p></div>
   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">php &gt; strpt[TAB]ime(</pre>
</div>
   </div>

   <div class="example-contents"><p>
    Tamamlama, bulunduğunuz etkileşimli kabuk ortamında tanımlanmış isimler için de çalışacaktır::
   </p></div>
   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">php &gt; $fooThisIsAReallyLongVariableName = 42;
php &gt; $foo[TAB]ThisIsAReallyLongVariableName</pre>
</div>
   </div>

  </div>

  <p class="para">
   Etkileşimli kabukta yukarı ve aşağı ok tuşlerını kullanarak geçmiş
   üzerinde dolaşabilirsiniz. Geçmiş <var class="filename">~/.php_history</var>
   dosyasına kaydedilir.
  </p>

  <p class="para">
   <code class="parameter">cli.pager</code> ve
   <code class="parameter">cli.prompt</code> <var class="filename">php.ini</var> değişkenleri devreye
   girmiştir. <code class="parameter">cli.pager</code> ile çıktıyı ekranda göstermek
   yerine çıktıyı sayfalayacak bir programda (<var class="filename">less</var> gibi)
   göstermek mümkündür. <code class="parameter">cli.prompt</code> ile <code class="literal">php
   &gt;</code> çıktısını değiştirebilirsiniz.
  </p>

  <p class="para">
  <var class="filename">php.ini</var> ayarlarını etkileşimli kabukta bir
   kısayol ile değiştirmek de mümkündür.
  </p>

  <div class="example" id="example-3">
   <p><strong>Örnek 3 - Etkileşimli kabukta <var class="filename">php.ini</var> ayarlarını değiştirmek</strong></p>
   <div class="example-contents"><p>
    <code class="parameter">cli.prompt</code> ile:
   </p></div>
   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">php &gt; #cli.prompt=hello world :&gt;
hello world :&gt;</pre>
</div>
   </div>

   <div class="example-contents"><p>
    Ters tırnakları kullanarak komut isteminde kod çalıştırabilirsiniz:
   </p></div>
   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">php &gt; #cli.prompt=`echo date(&#039;H:i:s&#039;);` php &gt;
15:49:35 php &gt; echo &#039;hi&#039;;
hi
15:49:43 php &gt; sleep(2);
15:49:45 php &gt;</pre>
</div>
   </div>

   <div class="example-contents"><p>
    Sayfalayıcı olarak <var class="filename">less</var> belirtmek:
   </p></div>
   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">php &gt; #cli.pager=less
php &gt; phpinfo();
(çıktı less içinde gösterilir)
php &gt;</pre>
</div>
   </div>

  </div>

  <p class="para">
   <code class="parameter">cli.prompt</code> içinde bir kaç öncelem belirtilebilir:
   <table class="doctable table">
    <caption><strong>- <code class="parameter">cli.prompt</code> öcelemleri</strong></caption>
    
     <thead>
      <tr>
       <th>Öncelem</th>
       <th>Açıklama</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td><code class="literal">\e</code></td>
       <td>
        Komut istemine renk eklemek için kullanılır. Örnek:
        <code class="literal">\e[032m\v \e[031m\b \e[34m\&gt; \e[0m</code>
       </td>
      </tr>

      <tr>
       <td><code class="literal">\v</code></td>
       <td>PHP sürümü.</td>
      </tr>

      <tr>
       <td><code class="literal">\b</code></td>
       <td>
        Neyin içindekinin engelleneceğini belirtir. Örneğin, çok satırlı bir açıklama içinde olmayı belirtmek için: <code class="literal">/*</code> Dış kapsam <code class="literal">php</code> tarafından belirtilir.
       </td>
      </tr>

      <tr>
       <td><code class="literal">\&gt;</code></td>
       <td>
        Komut istemi karakterini belirtir. By default this is
        <code class="literal">&gt;</code> öntanımlı olsa da kabuk sonlandırılmamış bir
        dizge veya blok içindeyse bu değişir. Olası karakterler: <code class="literal">&#039; &quot;
        { ( &gt;</code>
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>

  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <p class="para">
    <a href="ini.core.php#ini.auto-prepend-file" class="link">auto_prepend_file</a> ve <a href="ini.core.php#ini.auto-append-file" class="link">auto_append_file</a> ile
    içselleştirilen dosyalar bu kipte bazı sınırlamalarla çözümlenebilir;
    örneğin çağrılmadan önce işlevler bu dosyalarda tanımlanabilir.
   </p>
  </p></blockquote>

  <div class="section" id="features.commandline.interactive.mode">
   <h2 class="title">Etkileşimli kip</h2>
   <p class="para">
    Readline eklentisi kullanılabiliyorsa PHP 8.1.0 öncesinde,
    <strong class="option unknown">-a</strong> seçeneği kullanılarak yapılan bir  <abbr title="Command Line Interpreter/Interface">CLI</abbr> <abbr title="Server Application Programming Interface">SAPI</abbr> çağrısı
    etkileşimli kipe girilmesini sağlardı. Bu kipte, eksiksiz bir PHP
    betiğinin standart girdiden verilmesi gerekir. POSIX&#039;te
    <code class="literal">CRTL+d</code> veya Windows&#039;ta <code class="literal">CTRL+z</code> ve
    ardından <code class="literal">ENTER</code> tuşlanmasıyla bu betik çalıştırılır.
    Bu temelde <strong class="option unknown">-a</strong> seçeneği kullanmaksızın yapılan bir
    <abbr title="Command Line Interpreter/Interface">CLI</abbr> <abbr title="Server Application Programming Interface">SAPI</abbr> çağrısına eşdeğerdir.
   </p>
   <p class="para">
    PHP 8.1.0 itibariyle, <strong class="option unknown">-a</strong> seçeneği kullanılarak yapılan
    bir <abbr title="Command Line Interpreter/Interface">CLI</abbr> <abbr title="Server Application Programming Interface">SAPI</abbr> çağrısı, readline eklentisi kullanılabilir değilse
    başarısız olur.
   </p>
  </div>
  </div><?php manual_footer($setup); ?>