激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - Zend Framework框架Smarty擴展實現方法

Zend Framework框架Smarty擴展實現方法

2021-01-03 17:25yueming PHP教程

這篇文章主要介紹了Zend Framework框架Smarty擴展實現方法,結合實例形式較為詳細的分析了Zend Framework框架Smarty擴展的具體步驟與相關設置技巧,需要的朋友可以參考下

本文實例講述了Zend Framework框架Smarty擴展實現方法。分享給大家供大家參考,具體如下:

今天總結一下ZF框架中擴展Smarty模板的方法,在ZF幫助文檔中已經有比較詳細的介紹,在這我稍微多說一些。

一.將smarty的核心文件包放在lib文件夾下,文件包中要包括(internals/,plugins/,Config_File.class.php,Smarty.class.php,Smarty_Compiler.class.php,debug.tpl).

二.在Zend/View下添加文件:Smarty.php ,文件的內容如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<?php
/**
* Zend_View_Interface
*/
require_once 'Zend/View/Interface.php';
/**
* Smarty
*/
require_once("smarty/Smarty.class.php");
/**
* 創建Smarty視圖
*/
class Zend_View_Smarty implements Zend_View_Interface
{
  /**
   * Smarty object
   * @var Smarty
   */
  protected $_smarty;
  /**
   * Constructor
   *
   * @param string $tmplPath
   * @param array $extraParams
   * @return void
   */
  public function __construct($tmplPath = null, $extraParams = array())
  {
    $this->_smarty = new Smarty;
    if (null !== $tmplPath) {
      $this->setScriptPath($tmplPath);
    }
    foreach ($extraParams as $key => $value) {
      $this->_smarty->$key = $value;
    }
  }
  /**
   * Return the template engine object 
   *
   * @return Smarty
   */
  public function getEngine()
  {
    return $this->_smarty;
  }
  /**
   * Set the path to the templates
   *
   * @param string $path The directory to set as the path.
   * @return void
   */
  public function setScriptPath($path)
  {
    if (is_readable($path)) {
      $this->_smarty->template_dir = $path;
      return;
    }
    throw new Exception('Invalid path provided');
  }
  /**
  * set smarty緩存
  * @author lengfeng
  */
  public function setCompilePath($path){
    if (is_readable($path)) {
      $this->_smarty->compile_dir = $path;
      return;
    }
    throw new Exception('Invalid path provided');   
  }
  /**
  * set smarty 編譯后文檔
  * @author lengfeng
  */
  public function setCachePath($path){
    if (is_readable($path)) {
      $this->_smarty->cache_dir = $path;
      return;
    }
    throw new Exception('Invalid path provided');   
  }
  /**
   * Retrieve the current template directory
   *
   * @return string
   */
  public function getScriptPaths()
  {
    return array($this->_smarty->template_dir);
  }
  /**
   * Alias for setScriptPath
   *
   * @param string $path
   * @param string $prefix Unused
   * @return void
   */
  public function setBasePath($path, $prefix = 'Zend_View')
  {
    return $this->setScriptPath($path);
  }
  /**
   * Alias for setScriptPath
   *
   * @param string $path
   * @param string $prefix Unused
   * @return void
   */
  public function addBasePath($path, $prefix = 'Zend_View')
  {
    return $this->setScriptPath($path);
  }
  /**
   * Assign a variable to the template
   *
   * @param string $key The variable name.
   * @param mixed $val The variable value.
   * @return void
   */
  public function __set($key, $val)
  {
    $this->_smarty->assign($key, $val);
  }
  /**
   * Retrieve an assigned variable
   *
   * @param string $key The variable name.
   * @return mixed The variable value.
   */
  public function __get($key)
  {
    return $this->_smarty->get_template_vars($key);
  }
  /**
   * Allows testing with empty() and isset() to work
   *
   * @param string $key
   * @return boolean
   */
  public function __isset($key)
  {
     return (null !== $this->_smarty->get_template_vars($key));
  }
  /**
   * Allows unset() on object properties to work
   *
   * @param string $key
   * @return void
   */
  public function __unset($key)
  {
    $this->_smarty->clear_assign($key);
  }
  /**
   * Assign variables to the template
   *
   * Allows setting a specific key to the specified value, OR passing an array
   * of key => value pairs to set en masse.
   *
   * @see __set()
   * @param string|array $spec The assignment strategy to use (key or array of key
   * => value pairs)
   * @param mixed $value (Optional) If assigning a named variable, use this
   * as the value.
   * @return void
   */
  public function assign($spec, $value = null)
  {
    if (is_array($spec)) {
      $this->_smarty->assign($spec);
      return;
    }
    $this->_smarty->assign($spec, $value);
  }
  /**
   * Clear all assigned variables
   *
   * Clears all variables assigned to Zend_View either via {@link assign()} or
   * property overloading ({@link __get()}/{@link __set()}).
   *
   * @return void
   */
  public function clearVars()
  {
    $this->_smarty->clear_all_assign();
  }
  /**
   * Processes a template and returns the output.
   *
   * @param string $name The template to process.
   * @return string The output.
   */
  public function render($name)
  {
    return $this->_smarty->fetch($name);
  }
  /**
   * 設置是否生成緩存
   * 如果沒有參數,默認為true
   */
  public function setCache($bool){
     if (isset($bool)) {
      $this->_smarty->caching = $bool;
      return;
    }
  }
}

三.在app文件夾下創建cache ,compile 文件夾

四.在config.ini 配置文件中加入

?
1
2
dir.compile    = ../app/compile
dir.cache    = ../app/cache

三,四兩步可以參見前面關于zendfreamwork框架搭建網站相關教程

五.在application.php 文件中添加

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* 初始化smarty視圖
*
*/
private function _initSmartyView()
{
    $view = new Zend_View_Smarty();
    $view->setBasePath($this->_pathConfig->dir->viewBase);
    $view->setScriptPath($this->_pathConfig->dir->viewBase."/scripts");
    $view->setCompilePath($this->_pathConfig->dir->compile);
    $view->setCachePath($this->_pathConfig->dir->cache);
    $smarty=$view->getEngine();
    $smarty->caching=false;
    $smarty->debugging = true;
    $smarty->compile_check = true;   
    $smarty->left_delimiter = "<{"; //定義標示符
    $smarty->right_delimiter = "}>";
    $registry = Zend_Registry::getInstance();
    $registry->set('smartyview',$smarty); //smarty對象
    $registry->set('sview',$view);         
}

并在 函數 init()中加入

?
1
$this->_initSmartyView();

六.在Controller中調用

因為已經將對象注冊,所以可以如下調用:

?
1
2
3
4
5
$view = Zend_Registry::getInstance()->get("smartyview");
//注意這是smarty對象,使用smarty的那些語法,比如 $view->assign("user","root");
$view = Zend_Registry::getInstance()->get("sview");
//這是zf的view對象,按zf中的那些方法用,不用改變。
//按這樣,你如果要將以前寫的代碼改為用smaty,后臺不用變了,只需要將視圖文件改變就行了

希望本文所述對大家基于Zend Framework框架的PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费h片| 视频精品二区 | 欧美日韩一区二区综合 | 爱福利视频网 | h色视频在线观看 | 性少妇videosexfreexx入片 | 欧美日韩免费一区 | 亚洲日本韩国精品 | 亚洲电影免费观看国语版 | 中文字幕一区在线观看视频 | 欧美一级特黄a | 色就色 综合偷拍区91网 | 欧美日韩精品一二三区 | 久久久久免费电影 | 久久精品片 | 伊人午夜视频 | 欧美特级一级毛片 | 一级看片免费视频 | 国产精品久久久久久久娇妻 | 精品国产一区二区三区免费 | 91短视频网页版 | 日韩黄色片免费看 | 久久久久久久一区二区三区 | 日本人乱人乱亲乱色视频观看 | 久久精品成人影院 | 国产扩阴视频 | 中文字幕在线视频网站 | 国产一区二区三区手机在线 | 麻豆视频国产在线观看 | 国产毛片毛片 | 国产黄色一级大片 | h色网站在线观看 | 日韩欧美高清片 | 亚洲午夜精品视频 | 黄色免费视频观看 | 国产午夜精品一区二区三区在线观看 | 国产亚洲欧美日韩在线观看不卡 | 久久国产夫妻视频 | 天天舔天天插 | 欧美特级一级毛片 | 国产精品视频一区二区三区综合 |