<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.sqlite3.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'sqlite3.createaggregate.php',
    1 => 'SQLite3::createAggregate',
    2 => 'Toparlayıcı bir SQL işlevi olarak kullanılmak &uuml;zere bir PHP
  işlevini kayda ge&ccedil;irir',
  ),
  'up' => 
  array (
    0 => 'class.sqlite3.php',
    1 => 'SQLite3',
  ),
  'prev' => 
  array (
    0 => 'sqlite3.construct.php',
    1 => 'SQLite3::__construct',
  ),
  'next' => 
  array (
    0 => 'sqlite3.createcollation.php',
    1 => 'SQLite3::createCollation',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'reference/sqlite3/sqlite3/createaggregate.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="sqlite3.createaggregate" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">SQLite3::createAggregate</h1>
  <p class="verinfo">(PHP 5 &gt;= 5.3.0, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">SQLite3::createAggregate</span> &mdash; <span class="dc-title">Toparlayıcı bir SQL işlevi olarak kullanılmak üzere bir PHP
  işlevini kayda geçirir</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-sqlite3.createaggregate-description">
  <h3 class="title">Açıklama</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="methodname"><strong>SQLite3::createAggregate</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$isim</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$sekme_işlevi</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$son_işlev</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$değş_sayısı</code><span class="initializer"> = -1</span></span><br>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="para rdfs-comment">
   SQL deyimlerinde toparlayıcı bir SQL işlevi olarak kullanılmak üzere bir
   PHP işlevini veya bir kullanıcı tanımlı işlevi kayda geçirir.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-sqlite3.createaggregate-parameters">
  <h3 class="title">Bağımsız Değişkenler</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">isim</code></dt>
     <dd>
      <p class="para">
       Oluşturulacak veya yeniden tanımlanacak toparlayıcı SQL işlevinin ismi.
      </p>
     </dd>
    
    
     <dt><code class="parameter">sekme_işlevi</code></dt>
     <dd>
      <p class="para">
       Sonuç kümesinin her satırı için çalıştırılacak geriçağırım işlevinin
       ismi. Bu geriçağırım işlevi sonucu biriktirmeli ve toparlayıcı bir
       bağlamda saklamalıdır.
      </p>
      <p class="para">
       Bu işlev şöyle tanımlanmalıdır:
       <div class="methodsynopsis dc-description">
        <span class="methodname"><span class="replaceable">sekme_işlevi</span></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$bağlam</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$satır_num</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$değer</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">...$değerler</code></span><br>): <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span></div>

       <dl>
        
         <dt><code class="parameter">bağlam</code></dt>
         <dd>
          <p class="para">
           İlk satır için <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>; sonraki satırlarda
           <span class="replaceable">sekme_işlevi</span>nden evvelce dönmüş değer.
           Bunu toparlayıcı bağlamı oluşturmakta kullanmalısınız.
          </p>
         </dd>
        
        
         <dt><code class="parameter">satır_num</code></dt>
         <dd>
          <p class="para">
           İşlenen satır numarası.
          </p>
         </dd>
        
        
         <dt><code class="parameter">değer</code></dt>
         <dd>
          <p class="para">
           Toparlayıcı bağlama aktarılacak ilk bağımsız değişken.
          </p>
         </dd>
        
        
         <dt><code class="parameter">değerler</code></dt>
         <dd>
          <p class="para">
           Toparlayıcı bağlama aktarılacak diğer bağımsız değişkenler.
          </p>
         </dd>
        
       </dl>
       Bu işlevin dönüş değeri ardından çağrılacak sekme_işlevi veya
       son_işlevin <code class="parameter">bağlam</code> bağımsız değişkeninde
       kullanılmalıdır.
      </p>
     </dd>
    
    
     <dt><code class="parameter">son_işlev</code></dt>
     <dd>
      <p class="para">
       Veri toplama işlemi bittikten sonra çalıştırılacak geriçağırım işlevinin
       ismi. Tüm satırlar işlendikten sonra, bu işlev çağrılmalı ve ardından
       verileri toparlama bağlamından alıp sonucu döndürmelidir. Bu geri
       çağırım işlevi, SQLite tarafından bilinen türde bir değer (yani değişmez
       bir değer) döndürmelidir.
      </p>
      <p class="para">
       Bu işlev şöyle tanımlanmalıdır:
       <div class="methodsynopsis dc-description">
        <span class="methodname"><span class="replaceable">son_işlev</span></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$bağlam</code></span>, <span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$satır_num</code></span>): <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span></div>

       <dl>
        
         <dt><code class="parameter">bağlam</code></dt>
         <dd>
          <p class="para">
           Son <span class="replaceable">sekme_işlevi</span>nden dönen değer.
          </p>
         </dd>
        
        
         <dt><code class="parameter">satır_num</code></dt>
         <dd>
          <p class="para">
           Daima <code class="literal">0</code>.
          </p>
         </dd>
        
       </dl>
       Bu işlevin dönüş değeri toparlayıcı için dönüş değeri olarak kullanılır.
       </p>
     </dd>
    
    
     <dt><code class="parameter">değş_sayısı</code></dt>
     <dd>
      <p class="para">
       SQL işlevinin alacağı bağımsız değişken sayısı. Negatif bir sayı belirtilirse
       SQL işlevi herhangi bir sayıda bağımsız değişken alabilir demektir.
      </p>
     </dd>
    
   </dl>
  </p>

 </div>


 <div class="refsect1 returnvalues" id="refsect1-sqlite3.createaggregate-returnvalues">
  <h3 class="title">Dönen Değerler</h3>
  <p class="para">
   Toparlayıcı başarıyla oluşturulmuşsa <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, başarısızlık durumunda <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> döner.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-sqlite3.createaggregate-examples">
  <h3 class="title">Örnekler</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Örnek 1 - en_uzun toparlayıcı işlev örneği</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$data </span><span style="color: #007700">= array(<br />   </span><span style="color: #DD0000">'one'</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">'two'</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">'three'</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">'four'</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">'five'</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">'six'</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">'seven'</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">'eight'</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">'nine'</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">'ten'</span><span style="color: #007700">,<br />   );<br /></span><span style="color: #0000BB">$db </span><span style="color: #007700">= new </span><span style="color: #0000BB">SQLite3</span><span style="color: #007700">(</span><span style="color: #DD0000">':memory:'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$db</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">exec</span><span style="color: #007700">(</span><span style="color: #DD0000">"CREATE TABLE strings(a)"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$insert </span><span style="color: #007700">= </span><span style="color: #0000BB">$db</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prepare</span><span style="color: #007700">(</span><span style="color: #DD0000">'INSERT INTO strings VALUES (?)'</span><span style="color: #007700">);<br />foreach (</span><span style="color: #0000BB">$data </span><span style="color: #007700">as </span><span style="color: #0000BB">$str</span><span style="color: #007700">) {<br />    </span><span style="color: #0000BB">$insert</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">bindValue</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">$str</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$insert</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execute</span><span style="color: #007700">();<br />}<br /></span><span style="color: #0000BB">$insert </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br /><br />function </span><span style="color: #0000BB">en_uzun_sekme</span><span style="color: #007700">(</span><span style="color: #0000BB">$baglam</span><span style="color: #007700">, </span><span style="color: #0000BB">$str_num</span><span style="color: #007700">, </span><span style="color: #0000BB">$dizge</span><span style="color: #007700">)<br />{<br />    if (</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$dizge</span><span style="color: #007700">) &gt; </span><span style="color: #0000BB">$baglam</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">$baglam </span><span style="color: #007700">= </span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$dizge</span><span style="color: #007700">);<br />    }<br />    return </span><span style="color: #0000BB">$baglam</span><span style="color: #007700">;<br />}<br /><br />function </span><span style="color: #0000BB">en_uzun_son</span><span style="color: #007700">(</span><span style="color: #0000BB">$baglam</span><span style="color: #007700">, </span><span style="color: #0000BB">$str_num</span><span style="color: #007700">)<br />{<br />    return </span><span style="color: #0000BB">$baglam </span><span style="color: #007700">=== </span><span style="color: #0000BB">null </span><span style="color: #007700">? </span><span style="color: #0000BB">0 </span><span style="color: #007700">: </span><span style="color: #0000BB">$baglam</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$db</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">createAggregate</span><span style="color: #007700">(</span><span style="color: #DD0000">'en_uzun'</span><span style="color: #007700">, </span><span style="color: #DD0000">'en_uzun_sekme'</span><span style="color: #007700">, </span><span style="color: #DD0000">'en_uzun_son'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$db</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">querySingle</span><span style="color: #007700">(</span><span style="color: #DD0000">'SELECT en_uzun(a) from strings'</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="examplescode"><pre class="examplescode">int(5)</pre>
</div>
    </div>
   </div>
  </p>
  <p class="para">
   Bu örnekte, tablonun sütunlarından birindeki en uzun dizenin uzunluğunu
   hesaplayacak bir toparlama işlevi oluşturulmaktadır. Her satır için
   <code class="literal">en_uzun_sekme</code> işlevi çağrılmakta ve bir
   <code class="literal">$baglam</code> bağımsız değişkenine aktarılmaktadır.
   <code class="literal">$baglam</code> bağımsız değişkeni, diğer PHP değişkenleri gibidir ve
   bir diziyi veya hatta bir nesne değerini tutacak şekilde ayarlanabilir. Bu
   örnekte, bulunan en büyük uzunluğu tutmak için kullanılmaktadır.
   <code class="literal">$dizge</code> önceki en uzun dizgeden daha uzunsa,
   <code class="literal">$baglam</code> bağımsız değişkeni bu yeni değeri tutacak şekilde
   güncellenmektedir.
  </p>
  <p class="para">
   Tüm satırlar işlendikten sonra SQLite, toparlama sonucunu belirlemek için
   <code class="literal">en_uzun_son</code> işlevini çağırır. Burada,
   <code class="literal">$baglam</code>da bulunan verilere dayanarak bir tür hesaplama
   yapılabilir. Yine de bu basit örnekte, sorgu ilerledikçe sonuç
   hesaplanmakta, bu nedenle bağlam değerini döndürmek yeterli olmaktadır.
  </p>
  <div class="tip"><strong class="tip">İpucu</strong>
   <p class="para">
    SQLite&#039;ın sorguyu işlemek için çok fazla bellek kullanmasına neden
    olacağından, değerlerin bir kopyasının bağlamda saklanması ve ardından
    bunların en sonda işlenmesi ÖNERİLMEZ. Her biri 32 bayt uzunluğunda bir
    dizge içeren bir milyon satır...
   </p>
  </div>
  <div class="tip"><strong class="tip">İpucu</strong>
   <p class="para">
    <span class="methodname"><strong>SQLite3::createAggregate()</strong></span> yöntemi SQLite&#039;ın dahili
    SQL işlevlerini geçersiz kılmak için kullanılabilir.
   </p>
  </div>
 </div>


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