smartyファイル構造の配置からオブジェクトへのパスの役割ドメインを見る

4365 ワード

public function __construct()
{
// selfpointer needed by some other class methods
$this->smarty = $this;
if (is_callable('mb_internal_encoding')) {//
mb_internal_encoding(SMARTY_RESOURCE_CHAR_SET);
}
$this->start_time = microtime(true);
// set default dirs DS windows ‘\’linux ‘/’
$this->template_dir = array('.' . DS . 'templates' . DS);// ‘.\templates\’ templates
$this->compile_dir = '.' . DS . 'templates_c' . DS;// ‘.\templates_c\’
        $this->plugins_dir = array(SMARTY_PLUGINS_DIR);
$this->cache_dir = '.' . DS . 'cache' . DS;
$this->config_dir = array('.' . DS . 'configs' . DS);
$this->debug_tpl = 'file:' . dirname(__FILE__) . '/debug.tpl';
if (isset($_SERVER['SCRIPT_NAME'])) {
$this->assignGlobal('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']);//
}
}

①上のコードはSmartyクラスのコンストラクション関数のソースコードで、ファイルはE:APMServwwwhtdocszftwosmartySmarty.class.php
②別のファイル(ZFのエントリファイル)にそのファイルを含める:E:APMServwwwhtdocszftwoindex.php
<?php
·········
$registry = new Zend_Registry();

require_once('Smarty.class.php');
$views = new Smarty();

$registry->set('view', $views);
··········

③私は3番目のファイルでこのnewから出てきたオブジェクトを使います:E:APMServwwwhtdocszftwoapplicationcontrollersHelloController.php
<?php
require_once('Zend/Controller/Action.php');
class HelloController extends Zend_Controller_Action
{
public function helloAction()
{
$smarty = Zend_Registry::get('view');

$smarty->assign('name','zhangsan');
$smarty->display('hello.phtml');
}

}

問題は、1のsmartyのコンストラクション関数のデフォルトのtemplatesとtemplates_cなどの書類はsmarty.class.phpは同じフォルダの下で、私は②の中でnewというクラスでオブジェクトを生成して、③ファイルの中でこのオブジェクトを使用して、それでは私はいったいtemplatesとtemplates_cなどのフォルダはどこに建てられていますか
結果:newというクラスの文が存在するファイルと同級ディレクトリの下に構築する必要があります.そうしないと、次のようになります.
SmartyException: Unable to load template file 'hello.phtml' in E:\APMServ\www\htdocs\zf\two\smarty\sysplugins\smarty_internal_templatebase.phpはもちろんsmartyのデフォルトのパスではなく、別のパスを指定しています.それはあなたがどこに指定したかによって決まります.