PHP nasıl tek bir komut dosyası bir sınıfın birden çok sınıf fonksiyonları kullanmak için?

0 Cevap php

İşte var kod. Her şey bir fonksiyonu ile birden fazla komut aynı ilan sınıf değişkeni kullanmaya çalışırken dışında çalışıyor.

include("include/database.class.php");
$db = new Database();
$db->connect();
function fill_roles()
{

    global $db;
    $r = $db->get_roles_all_order_by_name();
    $drop_down = "<select id='dd_roles' name='dd_roles'>
                <option>&nbsp;</option>";
    while($row = mysql_fetch_array($r))
    {
        $drop_down .= "<option value=$row[id]>$row[role_display_name]</option>";
    }
    $drop_down .= "</select>";
    return $drop_down;
}
//$test = mysql_num_rows($db->get_users_with_role_all());
echo $test . fill_roles();

Ben yukarıda yazıldığı gibi kod bırakırsanız, kutusunda aşağı açılan kısa zamanda ben bu satırı yorumsuz olarak doldurulduktan

//$test = mysql_num_rows($db->get_users_with_role_all());

kutusunun aşağı açılan artık içeri doldurulur

Ben bu top fill_roles arasında () işlevini değiştirirseniz

function fill_roles()
{

        //global $db;
        $db = new Database();
        $db->connect();

        ...rest of code as above...

}

Her tekrar çalışıyor.

Ben $ db bir yöntem kullandık zaman "global $ db" kullanarak nedense çalışmıyor, daha sonra) (işlevini fill_roles diyoruz. Nedense ben olarak var olsa bile işlev içinde yeniden ilan sınıf Veritabanı var "global $ db;"

Ben "global $ db;" bilmek çünkü artık işlevini fill_roles () gitmeden önce Veritabanı bir yöntem çağırıyor zaman "/ / $ test = ..." için yapılan küçük yorumun iyi çalışıyor.

PHP benim acemi bilgi ile ben ona bakarak ve o anal davranıyor nedense iş ama gerektiğini düşünüyorum. Nasıl işlevi yeniden ilan sınıf Veritabanı ve aynı zamanda () re-beyanı önlemek için fill_roles için değişken $ db geçmek zorunda değil zorunda önleyebilirsiniz.

0 Cevap