ob_start

(PHP 4, PHP 5, PHP 7, PHP 8)

ob_startÇıktı tamponlamasını başlatır

Açıklama

ob_start(callable $geriçağırım = null, int $parça_boyu = 0, int $seçenekler = PHP_OUTPUT_HANDLER_STDFLAGS): bool

Bu işlev çıktı tamponlamasını ektin kılar. Çıktı tamponlaması etkinken betikten (başlıklar dışında) hiçbir çıktı gönderilmez ve çıktı dahili bir tamponda saklanır.

Bu dahili tamponun içeriği ob_get_contents() işleviyle bir dizge değişkenine kopyalanabilir. Dahili tamponda birikenleri çıktılamak için ob_end_flush() işlevini kullanın. Çıktılamak istemiyorsanız, ob_end_clean() işlevi ile tampon içeriğini sessiz sedasız silebilirsiniz.

Uyarı

Bazı HTTP sunucuları (Apache gibi) geriçağırım işlevini çağırırken betiğin çalışma dizinini değiştirir. Geriçağırım işlevinde chdir(dirname($_SERVER['SCRIPT_FILENAME'])) gibi bir çağrıyla betiğin bulunduğu dizine dönebilirsiniz.

Çıktı tamponlaması bir yığıt gibi çalışabilir, bir ob_start() etkinken başka bir ob_start() çağrısı yapabilirsiniz. Yalnız aynı sayıda ob_end_flush() çağrısı yapmayı unutmayın. Eğer çok sayıda çıktı geriçağırım işlevi etkinse, her biri iç içelik sırası gözetilerek çıktıyı süzerler.

Betik sonlandığında çıktı tamponu hala etkinse, içeriği PHP tarafından otomatik olarak çıktılanır.

Bağımsız Değişkenler

geriçağırım

Bu bağımsız değişken ile isteğe bağlı bir çıktı eylemcisi işlev belirtilebilir. Bu işlev bağımsız değişken olarak bir dizge almalı ve bir dizge döndürmelidir. Bu işlev, çıktı tamponu boşaltılırken (gönderim), tampon temizlenirken (ob_flush(), ob_clean() ve benzeri bir işlevle) veya isteğin sonunda çıktı tamponu kullanıcının tarayıcısına boşaltılırken çağrılacaktır. İşlev çağrıldığında çıktı tamponunu bağımsız değişken olarak alması ve sonuçta tarayıcıya gönderilmek üzere yeni bir çıktı tamponu döndürmesi beklenir. Eğer bu bağımsız değişken ile belirtilen işlev çağrılabilir değilse ob_start() false döndürür. İşlevinin sözdizimi:

işlev_ismi(string $tampon, int $kip = ?): string
tampon
Çıktı tamponunun içeriği.
kip
PHP_OUTPUT_HANDLER_* sabitlerinin bit maskesi.

geriçağırım false döndürdüğü takdirde özgün çıktı tarayıcıya gönderilir.

geriçağırım, bağımsız değişkenine bir null değer aktarılarak atlanabilir.

ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() ve ob_start() bir geriçağırım işlevi olarak belirtilemez. Bunlardan biri belirtilirse, davranışın nasıl olacağı belirsizdir. Bir tamponun içeriğini silmek isterseniz geriçağrıcıdan "" (boş dizge) döndürmelisiniz. Bir geriçağırım işlevinden, çıktı tamponlama işlevlerini kullanarak print_r($ifade, true) veya highlight_file($dosyaismi, true) gibi işlevleri çağıramazsınız.

Bilginize:

Sıkıştırılmış sayfaları destekleyen tarayıcılara gziplenmiş veri göndermek için ob_gzhandler() işlevi kullanılabilmektedir. ob_gzhandler() işlevi tarayıcının kabul edeceği içerik kodlamasının türünü tespit ettikten sonra buna uygun çıktı döndürür.

parça_boyu

İsteğe bağlı parça_boyu belirtildiği takdirde, parça_boyunu aşan veya tamponun tam dolmasına sebep olan bir çıktılama çağrısından sonra tampon boşaltılır. Öntanımlı 0 değerinin anlamı işlevin sadece çıktı tamponu kapandığında çağrılacağı anlamına gelir.

kip

kip, çıktı tamponuna uygulanabilecek işlemleri denetleyen bir bitmaskesidir. Çıktı tamponunun temizlenmesi, boşaltılması ve silinmesine izin vermek öntanımlı olup, bunun karşılığı PHP_OUTPUT_HANDLER_CLEANABLE | PHP_OUTPUT_HANDLER_FLUSHABLE | PHP_OUTPUT_HANDLER_REMOVABLE veya kısaca PHP_OUTPUT_HANDLER_STDFLAGS sabitidir.

Her sabit aşağıda açıklandığı gibi belli bir işlev kümesine erişimi denetler:

Sabit İşlevler
PHP_OUTPUT_HANDLER_CLEANABLE ob_clean(), ob_end_clean() ve ob_get_clean().
PHP_OUTPUT_HANDLER_FLUSHABLE ob_end_flush(), ob_flush() ve ob_get_flush().
PHP_OUTPUT_HANDLER_REMOVABLE ob_end_clean(), ob_end_flush() ve ob_get_flush().

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

Örnekler

Örnek 1 - Kullanıcı tanımlı geriçağırım işlevi örneği

<?php

function geriçağırım($tampon)
{
// elmaları armutlarla değiştirelim
return (str_replace("elmalar", "armutlar", $tampon));
}

ob_start("geriçağırım");

?>
<html>
<body>
<p>Bizden elmalarla armutların karşılaştırılması isteniyor.</p>
</body>
</html>
<?php

ob_end_flush
();

?>

Yukarıdaki örneğin çıktısı:

<html>
<body>
<p>Bizden armutlarla armutların karşılaştırılması isteniyor.</p>
</body>
</html>

Örnek 2 - Çıktı tamponunun silinmesini önleyen kod örneği

<?php

ob_start
(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_REMOVABLE);

?>

Ayrıca Bakınız