PHP sağlam php ile file_get_contents?

6 Cevap php

Hala sağlam ve yürütülebilir ama php ile - bir bir değişkene bir php dosyanın içeriğini kaydetmek mümkün ... dosyasına dahil php çalıştırır, hangi dahil kullanarak karşı?

Amacım gibi bir şey görünüyor:

$template = some_imaginary_include_function('myfile.php');
foreach($list_of_blogs as $blog) {
    // somehow get blog content in template and render template;
}

Ben aptal bir örnek şu biliyorum ... ama genel bir fikir göstermektedir umuyoruz. Ben bir sayfa (bloglar listesi olduğunu söylüyorlar) üzerinde şablona döngü 50 kez varsa, aslında çalıştırmak ve her biri için dahil etmek aptal gibi görünüyor.

Yanılıyor muyum? Bunu yapmak için bir yolu var mı?

6 Cevap

Buna ne dersiniz ...

function getTemplate($file) {

    ob_start(); // start output buffer

    include $file;
    $template = ob_get_contents(); // get contents of buffer
    ob_end_clean();
    return $template;

}

Temel olarak, bu $file ne olursa olsun olsun, ve PHP ile bunu ayrıştırmak, sonra bir değişken içine çıktı dönmek.

Ile $content = file_get_contents('/path/to/your/file.php'); tüm PHP etiketlerini korunmuş olacak, daha sonra eval() veya tokenize onları istediğiniz her şeyi yapabilirsiniz.

Döngüye dahil yapıyor değil SO dumb.

Eklemek için önce tanımlanmış tüm değişkenler şablonunuzda içine erişilebilir olacaktır.

Keep it simple !

== DÜZENLEME ==

Veya belki Alex'in cevabı artırabilirsiniz:

function getTemplate($file, $template_params = array()) {

    ob_start(); // start output buffer
    extract($template_params); // see PHPDoc
    // from here $var1 will be accessible with value "value1"
    // so your template may contain references to $var1

    include $file;
    $template = ob_get_contents(); // get contents of buffer
    ob_end_clean();
    return $template;

}
echo getTemplate('your_template.php', array('var1' => 'value1'));

(O kadar basit değil artık ^ ^)

İstenen çıktıyı döndürür dahil PHP script bir fonksiyon yazın. Ana PHP komut dosyası bir sabit tanımlayın. Dahil PHP komut dosyası, sabit dedi olmaması için kontrol edin ve bu durumda eğer işlevin dönüş değerini echo.

Genellikle kötü olmak için sözde olsa da, sen eval() get_file_contents() ile birlikte kullanarak deneyebilirsiniz

Eğer 5.3 gelişmekte iseniz çok daha kolay ama bile 5,2 üzerinde bunu yapmak için bir anonim işlev denen kullanabilirsiniz.

Anonim bir işlevi bir değişken olarak etrafında kod geçmesine izin verir. Bir dosyadan bu kodu yüklemek için, sonra bir değişkene koymak bir dize, eval içine file_get_bytes zorunda olabilir ama umarım noktası olsun.

5.3: Anonymous functions

5.2: create_function