Yardımcı fonksiyon içerir

5 Cevap php

Im PHP basit bir şablon sistemi yapmaya çalışıyorum. Ben PHP için yeni değilim, bu yüzden ciddi bir şey değil. Ama bazı sorunlar var:

Düzenli eserleri bulunmaktadır:

$variable = "test";
include("templates/news.html");

Ama bu olmayacak:

Bu diyor $variable undefined:

$variable = "test";
getTemplate("news");

Fonksiyonu:

function getTemplate($tpl) {
    $file = "templates/$tpl.html";
    if (file_exists($file))
        return include($file);
    return false;
}

news.html

<h1>php echo $variable</h1>

fonksiyonu çalışır ve içeren sayfayı ancak değişkenleri yazmayın

Bütün sayfaların üst fonksiyon içerir.

Şimdiden teşekkürler!

5 Cevap

extract fonksiyonu ile, bir dizi farklı değişkenleri tanımlayabilirsiniz.

Bunu şöyle yapabilirsiniz:

$vars = array('var1' => "value1", 'var2' => "value2");

function getTemplate($tpl, $vars) {
$file = "templates/$tpl.html";

extract($vars, EXTR_SKIP)

if (file_exists($file))
    return include($file);
return false;
}

getTemplate('news', $vars);

Sizin şablonda $ var1 ve $ var2 kullanabilirsiniz.

Eğer bir fonksiyonun global değişkene ulaşmak için çalışıyoruz.

Eğer ya bir işlevi bir değişken küresel bir beyan ya da sadece kullanın: $ GLOBALS ["değişken"]

function () {
global $variable;
etc..
}

Bir fonksiyon içerisinde gelen dosya dahil Çünkü, bu dosyanın içeriğini küresel kapsamda artık.

Bu global $variable; fonksiyonunun başlangıç ​​eklemek, ya da echo $GLOBALS['variable']; news.html kullanmak için gereken ya da.

Senin sorunun değişken kapsam belirleme ile ilgisi olduğuna inanıyorum. Bir işlevini çağırdığınızda, global (bir saniye içinde bu konuda daha fazla) değişkenler veya işleve geçirilen değişkenler dışında, bu işlev dışında değişkenleri erişemiyor. Evrensel erişilen komut, sabitleri tanımlamak için global function tells PHP that you'd like to use the same variable in the function as in the parent scope. You can also use the define fonksiyonu.

Global değişkenler kullanılarak çok sayıda çok hoş karşılanmaz, ben işlevine ilişkilendirilebilir bir dizi ya geçen önermek, ya da bir daha nesne yönelimli yaklaşımı kullanmak istiyorum.

Hope this helps, Jacob

Eğer kullanmayı düşündünüz mü Smarty

Bu şablon motoru kullanmak istemiyorsanız belki bunun arkasında bazı fikirleri kontrol etmelisiniz. Kısacası, bir nesneye değişken değerleri atayarak şablonları değişkenleri atama ile ilgilidir. Bir şablon nesnesine değişken atanır Eğer o şablon dosyasında kullanabilirsiniz.