《PHP实例:Zend Framework实现Zend_View集成Smarty模板系统的方法》要点:
本文介绍了PHP实例:Zend Framework实现Zend_View集成Smarty模板系统的方法,希望对您有用。如果有疑问,可以联系我们。
PHP学习本文实例讲述了Zend Framework实现Zend_View集成Smarty模板系统的办法.分享给大家供大家参考,具体如下:
PHP学习Zend_View抽象出了Zend_View_Interface,可以让我们集成不同的视图办理方案,例如可以集成smarty.要在zend中使用其他视图系统作为视图,只要实现Zend_View_Interface接口即可.
PHP学习Zend_View_Interface的接口定义:
- PHP学习
- <?php
- /**
- * Interface class for Zend_View compatible template engine implementations
- *
- * @category Zend
- * @package Zend_View
- * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- interface Zend_View_Interface
- {
- /**
- * Return the template engine object, if any
- *
- * If using a third-party template engine, such as Smarty, patTemplate,
- * phplib, etc, return the template engine object. Useful for calling
- * methods on these objects, such as for setting filters, modifiers, etc.
- *
- * @return mixed
- */
- public function getEngine();
- /**
- * Set the path to find the view script used by render()
- *
- * @param string|array The directory (-ies) to set as the path. Note that
- * the concrete view implentation may not necessarily support multiple
- * directories.
- * @return void
- */
- public function setScriptPath($path);
- /**
- * Retrieve all view script paths
- *
- * @return array
- */
- public function getScriptPaths();
- /**
- * Set a base path to all view resources
- *
- * @param string $path
- * @param string $classPrefix
- * @return void
- */
- public function setBasePath($path, $classPrefix = 'Zend_View');
- /**
- * Add an additional path to view resources
- *
- * @param string $path
- * @param string $classPrefix
- * @return void
- */
- public function addBasePath($path, $classPrefix = 'Zend_View');
- /**
- * Assign a variable to the view
- *
- * @param string $key The variable name.
- * @param mixed $val The variable value.
- * @return void
- */
- public function __set($key, $val);
- /**
- * Allows testing with empty() and isset() to work
- *
- * @param string $key
- * @return boolean
- */
- public function __isset($key);
- /**
- * Allows unset() on object properties to work
- *
- * @param string $key
- * @return void
- */
- public function __unset($key);
- /**
- * Assign variables to the view script via differing strategies.
- *
- * Suggested implementation is to allow 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);
- /**
- * 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();
- /**
- * Processes a view script and returns the output.
- *
- * @param string $name The script name to process.
- * @return string The script output.
- */
- public function render($name);
- }
PHP学习集成Smarty的基本实现如下:
PHP学习smarty下载地址
PHP学习http://www.smarty.net/files/Smarty-3.1.7.tar.gz
PHP学习目录结构
PHP学习root@coder-671T-M:/www/zf_demo1# tree
.
├── application
│ ├── Bootstrap.php
│ ├── configs
│ │ └── application.ini
│ ├── controllers
│ │ ├── ErrorController.php
│ │ └── IndexController.php
│ ├── models
│ └── views
│ ├── helpers
│ └── scripts
│ ├── error
│ │ └── error.phtml
│ └── index
│ ├── index.phtml
│ └── index.tpl
├── docs
│ └── README.txt
├── library
│ ├── Lq
│ │ └── View
│ │ └── Smarty.php
│ └── smartylib
│ ├── debug.tpl
│ ├── plugins
│ │ ├── ...........................
│ │ └── variablefilter.htmlspecialchars.php
│ ├── SmartyBC.class.php
│ ├── Smarty.class.php
│ └── sysplugins
│ ├── ..........................
│ └── smarty_security.php
├── public
│ └── index.php
├── temp
│ └── smarty
│ └── templates_c
│ └── 73d91bef3fca4e40520a7751bfdfb3e44b05bdbd.file.index.tpl.php
└── tests
├── application
│ └── controllers
│ └── IndexControllerTest.php
├── bootstrap.php
├── library
└── phpunit.xml
PHP学习24 directories, 134 files
PHP学习/zf_demo1/library/Lq/View/Smarty.php
- PHP学习
- <?php
- require_once 'smartylib/Smarty.class.php';
- class Lq_View_Smarty implements Zend_View_Interface {
- /**
- * Smarty object
- *
- * @var Smarty
- */
- protected $_smarty;
- /**
- * Constructor
- *
- * @param $tmplPath string
- * @param $extraParams array
- * @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 $path string
- * 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' );
- }
- /**
- * Retrieve the current template directory
- *
- * @return string
- */
- public function getScriptPaths() {
- return array ($this->_smarty->template_dir );
- }
- /**
- * Alias for setScriptPath
- *
- * @param $path string
- * @param $prefix string
- * Unused
- * @return void
- */
- public function setBasePath($path, $prefix = 'Zend_View') {
- return $this->setScriptPath ( $path );
- }
- /**
- * Alias for setScriptPath
- *
- * @param $path string
- * @param $prefix string
- * Unused
- * @return void
- */
- public function addBasePath($path, $prefix = 'Zend_View') {
- return $this->setScriptPath ( $path );
- }
- /**
- * Assign a variable to the template
- *
- * @param $key string
- * The variable name.
- * @param $val mixed
- * The variable value.
- * @return void
- */
- public function __set($key, $val) {
- $this->_smarty->assign ( $key, $val );
- }
- /**
- * Retrieve an assigned variable
- *
- * @param $key string
- * 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 $key string
- * @return boolean
- */
- public function __isset($key) {
- return (null !== $this->_smarty->get_template_vars ( $key ));
- }
- /**
- * Allows unset() on object properties to work
- *
- * @param $key string
- * @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 $spec string|array
- * The assignment strategy to use (key or array of key
- * => value pairs)
- * @param $value mixed
- * (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 $name string
- * The template to process.
- * @return string The output.
- */
- public function render($name) {
- ob_start();
- echo $this->_smarty->fetch ( $name );
- unset($name);
- }
- }
PHP学习/zf_demo1/application/configs/application.ini
- PHP学习
- [production]
- includePaths.library = APPLICATION_PATH "/../library"
- bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
- bootstrap.class = "Bootstrap"
- appnamespace = "Application"
- autoloadernamespaces.lq = "Lq_"
- pluginpaths.Lq_View_Smarty = "Lq/View/Smarty"
- resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
- resources.frontController.params.displayExceptions = 1
- phpSettings.display_startup_errors = 1
- phpSettings.display_errors = 1
PHP学习/zf_demo1/application/Bootstrap.php
- PHP学习
- <?php
- class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
- /**
- * Initialize Smarty view
- */
- protected function _initSmarty() {
- $smarty = new Lq_View_Smarty ();
- $smarty->setScriptPath('/www/zf_demo1/application/views/scripts');
- return $smarty;
- }
- }
PHP学习/zf_demo1/application/controllers/IndexController.php
- PHP学习
- <?php
- class IndexController extends Zend_Controller_Action {
- public function init() {
- /*
- * Initialize action controller here
- */
- }
- public function indexAction() {
- $this->_helper->getHelper('viewRenderer')->setNoRender();
- $this->view = $this->getInvokeArg ( 'bootstrap' )->getResource ( 'smarty' );
- $this->view->book = 'Hello World! ';
- $this->view->author = 'by smarty';
- $this->view->render('index/index.tpl');
- }
- }
PHP学习/zf_demo1/application/views/scripts/index/index.tpl
- PHP学习
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- {$book}
- {$author}
- </body>
- </html>
PHP学习如果需要配置smarty可以打开/zf_demo1/library/smartylib/Smarty.class.php文件进行相应配置例如
- PHP学习
- /**
- * Initialize new Smarty object
- *
- */
- public function __construct()
- {
- // selfpointer needed by some other class methods
- $this->smarty = $this;
- if (is_callable('mb_internal_encoding')) {
- mb_internal_encoding(Smarty::$_CHARSET);
- }
- $this->start_time = microtime(true);
- // set default dirs
- $this->setTemplateDir('/www/zf_demo1/temp/smarty' . DS . 'templates' . DS)
- ->setCompileDir('/www/zf_demo1/temp/smarty' . DS . 'templates_c' . DS)
- ->setPluginsDir(SMARTY_PLUGINS_DIR)
- ->setCacheDir('/www/zf_demo1/temp/smarty' . DS . 'cache' . DS)
- ->setConfigDir('/www/zf_demo1/temp/smarty' . DS . 'configs' . DS);
- $this->debug_tpl = 'file:' . dirname(__FILE__) . '/debug.tpl';
- if (isset($_SERVER['SCRIPT_NAME'])) {
- $this->assignGlobal('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']);
- }
- }
PHP学习更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
PHP学习希望本文所述对大家PHP程序设计有所赞助.
《PHP实例:Zend Framework实现Zend_View集成Smarty模板系统的方法》是否对您有启发,欢迎查看更多与《PHP实例:Zend Framework实现Zend_View集成Smarty模板系统的方法》相关教程,学精学透。维易PHP学院为您提供精彩教程。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/7463.html