一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - PHP教程 - Zend Framework框架Smarty擴(kuò)展實(shí)現(xiàn)方法

Zend Framework框架Smarty擴(kuò)展實(shí)現(xiàn)方法

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

這篇文章主要介紹了Zend Framework框架Smarty擴(kuò)展實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Zend Framework框架Smarty擴(kuò)展的具體步驟與相關(guān)設(shè)置技巧,需要的朋友可以參考下

本文實(shí)例講述了Zend Framework框架Smarty擴(kuò)展實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

今天總結(jié)一下ZF框架中擴(kuò)展Smarty模板的方法,在ZF幫助文檔中已經(jīng)有比較詳細(xì)的介紹,在這我稍微多說一些。

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

二.在Zend/View下添加文件:Smarty.php ,文件的內(nèi)容如下:

?
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");
/**
* 創(chuàng)建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);
  }
  /**
   * 設(shè)置是否生成緩存
   * 如果沒有參數(shù),默認(rèn)為true
   */
  public function setCache($bool){
     if (isset($bool)) {
      $this->_smarty->caching = $bool;
      return;
    }
  }
}

三.在app文件夾下創(chuàng)建cache ,compile 文件夾

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

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

三,四兩步可以參見前面關(guān)于zendfreamwork框架搭建網(wǎng)站相關(guān)教程

五.在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 = "<{"; //定義標(biāo)示符
    $smarty->right_delimiter = "}>";
    $registry = Zend_Registry::getInstance();
    $registry->set('smartyview',$smarty); //smarty對(duì)象
    $registry->set('sview',$view);         
}

并在 函數(shù) init()中加入

?
1
$this->_initSmartyView();

六.在Controller中調(diào)用

因?yàn)橐呀?jīng)將對(duì)象注冊(cè),所以可以如下調(diào)用:

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

希望本文所述對(duì)大家基于Zend Framework框架的PHP程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 性吧有你 | 亚洲国产成人精品不卡青青草原 | 奇米网狠狠网 | 免费369看片入口 | 国产好深好硬好爽我还要视频 | 日本又黄又裸一级大黄裸片 | 福利片成人午夜在线 | 亚洲精品成人456在线播放 | 欧美video丝袜连裤袜bd | 3d动漫h在线观看网站蜜芽 | 紧身裙女教师波多野结衣 | 乳环调教 | 无遮挡h肉动漫在线观看电车 | 国产成人无精品久久久 | 乳环调教 | 天天干女人 | 韩国美女vip内部2020 | 国产精品国色综合久久 | 沉沦艳妇杨幂肉体小说 | 热剧库 | 四虎影视在线看 | 美女流白浆 | 99撸| 国产成人精品免费久久久久 | 91久久偷偷做嫩草影院免费 | 激情婷婷成人亚洲综合 | 四虎永久免费在线观看 | 农村妇女野外性生话免费视频 | 亚洲激情一区 | 国产亚洲女在线精品 | 亚洲免费黄色网 | 男人的天堂在线观看视频不卡 | 日本不卡不码高清免费观看 | 国产亚洲精品精品国产亚洲综合 | 精品区卡一卡2卡三免费 | 美女班主任下面好爽好湿好紧 | 8x8x华人免费 | 视频一区精品 | 2021国产麻豆剧传媒剧情动漫 | 国内揄拍国内精品久久 | 国产老太婆hd老头 |