簡體   English   中英

在php的__autoload中包含smarty,找不到類'Smarty_Internal_Template'

[英]Include smarty in php's __autoload gives Class 'Smarty_Internal_Template' not found

我有這樣的自動加載功能:

function __autoload($class)
{
    //define('DOCROOT', dirname(__FILE__));

    $filename = "../sys/class/class." . strtolower($class) . ".inc.php";
    //$filename = DOCROOT . "/sys/class/class." . strtolower($class) . ".inc.php";

    if ( file_exists($filename) )
    {
            include_once $filename;
    }

}

我將smarty文件重命名為class.smarty.inc.php因此它包含在自動加載中,但是我收到此錯誤:

Fatal error: Class 'Smarty_Internal_Template' not found in /var/www/v3/sys/class/class.smarty.inc.php on line 441 

不知道那是什么意思..

不要修改第三方的庫。 只需按照Smarty的命名約定創建第二個自動加載器。

function defaultAutoloader($className) {
    // your code ($file = /path/to/my/lib/{{ CLASS }}.inc.php)

    if (file_exists($file)) {
        require $file;
        return true;
    }

    return false;
}

function smartyAutoloader($className) {
    // code ($file = /path/to/smarty/{{ CLASS }}.php)

    if (file_exists($file)) {
        require $file;
        return true;
    }

    return false;
}

spl_autoload_register('defaultAutoloader');
spl_autoload_register('smartyAutoloader');

自動加載器將類名映射到文件名的方式會導致文件class.smarty_internal_template.inc.php ,這顯然不是您期望的文件名。 我不知道Smarty是如何構造的,但你應該確保自動加載器可以找到它的任何類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM