PHP: Bir işlev içinde çıkışını bastır?

4 Cevap php

Bir işlev üretebilir herhangi çıktıyı bastırmak için basit yolu nedir? Ben bu var ki:

function testFunc() {
    echo 'Testing';
    return true;
}

Ve ben testFunc () arayın ve sayfada gösterilmesini "Test" olmadan dönüş değerini almak istiyorum. does çıkışı diğer şeyler, bu iş için iyi bir yöntem olduğunu, bu diğer kod bağlamında olacağını varsayarak? Belki çıkış tamponu ile karıştırmasını?

4 Cevap

Evet, Output Buffer ile karıştırmasını tam cevaptır. Eğer yöntemi aramadan hemen önce açın ki olur çıkışı (değil işlevi kendisini, ama onu aramak, nerede sizin tüm komut dosyası veya komut akışı etrafında sarın olabilir, ama sadece tarafından mümkün olduğu kadar "sıkı" olarak yapabilirsiniz ) yöntemin çağrı etrafında sarma:

function foo() {
  echo "Flush!";
  return true;
}

ob_start();
$a = foo();
ob_end_clean();

Ve çıktı oluşturulur.

Buyrun:

ob_start();
testFunc();
ob_end_clean();

"Ob" "çıktı tamponlama" anlamına gelir, burada manuel sayfalarına bir göz atın: http://www.php.net/outcontrol

Evet doğru yolda PHP'nin çıktı tamponlama işlevlerini yararlanarak olarak, yani ob_start ve ob_end_clean (php.net onları aramak):

<?php

function testFunc() { echo 'Testing'; return true; }

ob_start();
$output = testFunc();
ob_end_clean();

echo $output;

>

Bu kod bazı koşullar uygulamak kadar kolay değil mi?

Ben eğer değişken = test sonra çıktı, başka değil mi yani?

EVAL gibi tarayıcı doğrudan çıktılar bir sonuç işlevleri için, bir ob_start içinde sonuç yakalamak olabilir.