从smarty文件结构部署看面向对象中路径的作用域

简介: public function __construct() {// selfpointer needed by some other class methods $this->smarty = $this;if (is_callable('mb_internal_encodi...
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:\APMServ\www\htdocs\zf\two\smarty\Smarty.class.php

②我在另一个文件中(ZF的入口文件中)将该文件包含进来:E:\APMServ\www\htdocs\zf\two\index.php

<?php
·········
$registry = new Zend_Registry();

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

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

③我在第三个文件中使用这个new出来的对象:E:\APMServ\www\htdocs\zf\two\application\controllers\HelloController.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');
}

}

问题是:①中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默认的路径,而是另外指定的路径,那就看你指定到哪里了

目录
相关文章
|
6月前
|
弹性计算 运维 Shell
动态创建目录结构
【4月更文挑战第30天】
16 0
|
6月前
|
存储 编译器 程序员
【新手解答1】深入探索 C 语言:变量名、形参 + 主调函数、被调函数 + 类和对象 + 源文件(.c 文件)、头文件(.h 文件)+ 库
【新手解答1】深入探索 C 语言:变量名、形参 + 主调函数、被调函数 + 类和对象 + 源文件(.c 文件)、头文件(.h 文件)+ 库
130 0
|
11月前
|
前端开发 小程序 PHP
laravel5.8(四)引入自定义常量文件及公共函数文件
开发过程中,我们一般会用到一些不会改变,或者改变不是很频繁的值,这样的值我们一般将他们定义成常量。 比如网站根目录,或者分页数,或者域名等等。 那我们如何在laravel5.8中引入自定义的常量文件及公共的函数文件呢。 大概有两种方式: 1:框架目录下引入(不推荐) 在框架目录vendor下新建常量文件const.php,以及公共函数文件function.php 在autoload.php文件中引入。 这种方法是可以的,但是不推荐,框架目录下最好都是框架自己的那些文件,正常来说,框架的文件我们在开发过程中,git是不会进行托管的。 2:在app目录下引入 在bootstrap目录下新建常量文件
68 0
简单实例-对比文件
简单实例-对比文件
|
Java 应用服务中间件 容器
javaweb项目中引用带有dll文件处理方式
javaweb项目中引用带有dll文件处理方式
|
Go
go语言简单实现加载ini文件
go语言简单实现加载ini文件
129 0
go语言简单实现加载ini文件
|
PHP 开发者
嵌套文件包含路径问题|学习笔记
快速学习嵌套文件包含路径问题
嵌套文件包含路径问题|学习笔记
【ThinkPHP5.1】如何引用extend的类库
【ThinkPHP5.1】如何引用extend的类库
581 0
|
存储 Java 索引
类文件结构
java通过java虚拟机实现一次编写,到处运行 java 虚拟机不和包括java在内的任何语言绑定,它只与“class 文件”这种特定的二进制文件格式关联,class文件包含了Java虚拟机指令集 和符号表以及其他辅助信息。
1425 0