> php教程 > PHP开发 > 본문

Zend Framework는 Zend_View 통합 Smarty 템플릿 시스템 방법을 구현합니다.

高洛峰
풀어 주다: 2017-01-03 13:35:40
원래의
1294명이 탐색했습니다.

이 기사의 예에서는 Zend Framework가 Zend_View 통합 Smarty 템플릿 시스템을 구현하는 방법을 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하십시오.

Zend_View는 Zend_View_Interface를 추상화하여 smarty와 같은 다양한 뷰 솔루션을 통합할 수 있게 해줍니다. zend에서 다른 뷰 시스템을 뷰로 사용하려면 Zend_View_Interface 인터페이스를 구현하기만 하면 됩니다.

Zend_View_Interface 인터페이스 정의:

<?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 = &#39;Zend_View&#39;);
  /**
   * Add an additional path to view resources
   *
   * @param string $path
   * @param string $classPrefix
   * @return void
   */
  public function addBasePath($path, $classPrefix = &#39;Zend_View&#39;);
  /**
   * 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);
}
로그인 후 복사

Smarty 통합의 기본 구현은 다음과 같습니다.

smarty 다운로드 주소

http://www. smarty.net/files/Smarty-3.1.7.tar.gz

디렉토리 구조

root@coder-671T-M:/www/zf_demo1# 트리
.
├─ ─ 애플리케이션
│ ├── Bootstrap.php
│ ├── configs
│ │ └── application.ini
│ ├── 컨트롤러
│ │ ├── ErrorController .php │ ├── 오류
│                                                                          ─ index.tpl
├── docs
│ └── README.txt
├── 라이브러리
│ ├── Lq
│ │ └── 보기
│ │ └── Smarty.php
│ └── smarty lib
│  ├── debug.tpl
│  ├── 플러그인
│  │  ├── ........................ ...
│ │── Variablefilter.htmlspecialchars.php
│ ├─ ─ SmartyBC.class.php
│ ├── Smarty.class.php
│ └── sysplugins
│                                            | ─) smarty <🎜 ├ ├ <<<└ │ │ └ └ └ └ └ └ └ └ └ └ <<<<└ <<<└ <<🎜 ├ ├ ├ ├ ├ ├ <🎜 ├ ├ <🎜 ├ ├ <<<
│ └── IndexControllerTest.php
├── bootstrap.php
├── library
└─ ─ phpunit.xml

디렉터리 24개, 파일 134개

/zf_demo1/library/Lq/View/Smarty.php


/zf_demo1/application/configs/application .ini


/zf_demo1/application/Bootstrap.php


/zf_demo1/application/controllers/IndexController.php


/zf_demo1/application/views/scripts/index/index.tpl


smarty를 구성해야 하는 경우

와 같은 해당 구성에 대한 /zf_demo1/library/smartylib/Smarty.class.php 파일을 열 수 있습니다. PHP 프로그래밍 설계에 종사하는 모든 사람에게 도움이 됩니다.

Zend Framework가 Zend_View 통합 Smarty 템플릿 시스템을 구현하는 방법에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!
<?php
require_once &#39;smartylib/Smarty.class.php&#39;;
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 ( &#39;Invalid path provided&#39; );
  }
  /**
   * 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 = &#39;Zend_View&#39;) {
    return $this->setScriptPath ( $path );
  }
  /**
   * Alias for setScriptPath
   *
   * @param $path string
   * @param $prefix string
   *      Unused
   * @return void
   */
  public function addBasePath($path, $prefix = &#39;Zend_View&#39;) {
    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.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿