ホームページ >バックエンド開発 >PHPチュートリアル >Smarty クラスを継承するときに関連する問題が発生しました。ご指導ください。

Smarty クラスを継承するときに関連する問題が発生しました。ご指導ください。

WBOY
WBOYオリジナル
2016-06-13 13:26:31858ブラウズ

Smarty クラスを継承する際に問題が発生しました。アドバイスをお願いします。 !
smarty の libs ディレクトリをテスト プロジェクトに直接コピーしました。テスト プロジェクトは非常に単純です。demo.php と init.inc.php で区切り文字などのいくつかの設定を行います。 . 、テンプレートディレクトリなど、このようになっている場合:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php 
    include_once './libs/Smarty.class.php';
    $tpl=new Smarty;
    $tpl->left_delimiter="<!--{";
    $tpl->right_delimiter="}-->";
?>

設定が完了したら、demo.php にこれを書きます
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php 
        require_once 'init.inc.php';
        $title="this is a title";
    $content="this is my content";
    $tpl->assign("title",$title);
    $tpl->assign("content",$content);
    $tpl->display("default/test.tpl");
?>

表示はOKです
smartyクラスを継承した別クラスmySmartyを作成すると、init.inc.php
PHPコード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
       <?php 
    include_once './libs/Smarty.class.php';
    class mySmarty extends Smarty{
        function mySmarty(){
            $this->Smarty();
            $this->template_dir="./templates/";
            $this->compile_dir="./templates_c/";
            $this->config_dir="./configs/";
            $this->cache_dir="./cache/";
            $this->caching=true;
            $this->left_delimiter="<!--{";
            $this->right_delimiter="}-->";
            $this->assign('app_name','mySmartyTest');
        }
    }
       ?>

デモで、次の呼び出しを行って

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php
    require_once 'init.inc.php';
    $tpl=new mySmarty;
    $title="this is a title";
    $content="this is my content";
    $tpl->assign("title",$title);
    $tpl->assign("content",$content);
    $tpl->display("default/test.tpl");
?>

を表示すると、500 エラーが報告されます。何が起こっているのでしょうか? 、 ありがとう! !


-----解決策--------- phpのエラー表示機能をオンにするとどこに問題があるのか​​が分かります

継承
Smarty 2であれば大きな間違いはないはずです
Smarty 3であれば、それは別の問題です

------解決策----------------------私は6年間働いてきました、そして教えます私の経験から言えば、非人道的なテンプレートエンジンはできるだけ早くやめてください。

-----解決策---------それは面倒だから
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。