Zend Framework动作助手Json用法实例解析

Json 用来解码和发送 JSON 响应,JSON 响应迅速变成选择的响应,Framework动作助手(Zend,主要是在action使用,助手的抽象基类是Zend,本文实例讲述了Zend,Zend,Url主要用于创建url

正文实例陈诉了Zend
Framework动作帮手Json用法。分享给大家供大家参照他事他说加以考察,具体如下:

本文实例陈诉了Zend
Framework动作帮手(Zend_Controller_Action_Helper)用法。分享给我们供大家参谋,具体如下:

本文实例汇报了Zend
Framework创造本身的动作帮手完毕格局。分享给大家供大家仿照效法,具体如下:

正文实例呈报了Zend
Framework动作帮手Url用法。共享给我们供大家参考,具体如下:

Json的利用较简单,以下是文书档案给出的用法:

经过助网络麻豆式,能够把一部分常常利用的作用模块做封装,进而在能够在急需的地点灵活使用,主假诺在action使用。

出手的空洞基类是Zend_Controller_Action_Helper_Abstract,如要定义自个儿的出手,要求延续此类。

Url首要用来创设url;

Json 用来解码和出殡和埋葬 JSON 响应;

Zend
Framework中有二种帮手,动作帮手(Zend_Controller_Action_Helper)和试图帮手(Zend_View_Helper)。

类的源代码如下:

public function simple($action, $controller = null, $module = null, array $params = null)
public function url($urlOptions = array(), $name = null, $reset = false, $encode = true)
public function direct($action, $controller = null, $module = null, array $params = null)



<?php
class IndexController extends Zend_Controller_Action
{
  public function init()
  {
    /* Initialize action controller here */
  }
  public function indexAction()
  {
    //$urlParser = $this->_helper->getHelper('UrlParser');
    //var_dump($urlParser->parse('//www.jb51.net/article/80479.htm'));
    $url = $this->_helper->getHelper('Url');
    $action = 'actionname';
    $controller = 'controllername';
    $module = 'modulename';
    $params = array('param1'=>'中文参数');
    var_dump($url->simple($action, $controller, $module, $params));
    $urlOptions = array(
        'action'=>$action,
        'controller'=>$controller,
        'module'=>$module,
        'params'=>$params);
    var_dump($url->url($urlOptions));
    var_dump($url->direct($action, $controller, $module, $params));
    exit;
  }
}

当处理期望数据表响应的 AJAX 央求,JSON 响应火速成为选拔的响应。

动作帮手得以向别的Zend_Controller_Action的衍生动作调控器中,即时的参与功用(runtime
and/or on-demand
functionality),以使得扩充公家的动作调整器作用时,尽量降低衍生动作调节器类的须要。

<?php
/**
 * @see Zend_Controller_Action
 */
require_once 'Zend/Controller/Action.php';
abstract class Zend_Controller_Action_Helper_Abstract
{
  /**
   * $_actionController
   *
   * @var Zend_Controller_Action $_actionController
   */
  protected $_actionController = null;
  /**
   * @var mixed $_frontController
   */
  protected $_frontController = null;
  /**
   * setActionController()
   *
   * @param Zend_Controller_Action $actionController
   * @return Zend_Controller_ActionHelper_Abstract Provides a fluent interface
   */
  public function setActionController(Zend_Controller_Action $actionController = null)
  {
    $this->_actionController = $actionController;
    return $this;
  }
  /**
   * Retrieve current action controller
   *
   * @return Zend_Controller_Action
   */
  public function getActionController()
  {
    return $this->_actionController;
  }
  /**
   * Retrieve front controller instance
   *
   * @return Zend_Controller_Front
   */
  public function getFrontController()
  {
    return Zend_Controller_Front::getInstance();
  }
  /**
   * Hook into action controller initialization
   *
   * @return void
   */
  public function init()
  {
  }
  /**
   * Hook into action controller preDispatch() workflow
   *
   * @return void
   */
  public function preDispatch()
  {
  }
  /**
   * Hook into action controller postDispatch() workflow
   *
   * @return void
   */
  public function postDispatch()
  {
  }
  /**
   * getRequest() -
   *
   * @return Zend_Controller_Request_Abstract $request
   */
  public function getRequest()
  {
    $controller = $this->getActionController();
    if (null === $controller) {
      $controller = $this->getFrontController();
    }
    return $controller->getRequest();
  }
  /**
   * getResponse() -
   *
   * @return Zend_Controller_Response_Abstract $response
   */
  public function getResponse()
  {
    $controller = $this->getActionController();
    if (null === $controller) {
      $controller = $this->getFrontController();
    }
    return $controller->getResponse();
  }
  /**
   * getName()
   *
   * @return string
   */
  public function getName()
  {
    $fullClassName = get_class($this);
    if (strpos($fullClassName, '_') !== false) {
      $helperName = strrchr($fullClassName, '_');
      return ltrim($helperName, '_');
    } elseif (strpos($fullClassName, '\\') !== false) {
      $helperName = strrchr($fullClassName, '\\');
      return ltrim($helperName, '\\');
    } else {
      return $fullClassName;
    }
  }
}

www.localzend.com/helper_demo1/public/index

JSON 能够即时在客户端被解析,进而快捷施行。

动作帮手在急需调用时加载,能够在伸手的时候(bootstrap)恐怕动作调节器创设的时候(init())实例化。

帮厨基类提供的常用方法如下:

string(101)
“/helper_demo1/public/modulename/controllername/actionname/param1/%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0”
string(101)
“/helper_demo1/public/modulename/controllername/actionname/params/%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0”
string(101)
“/helper_demo1/public/modulename/controllername/actionname/param1/%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0”

JSON 动作助手达成以下职分:

涉嫌到的连锁文件

setActionController() 用来安装当前的动作调控器。
init(),该办法在实例化时由帮手经纪人触发,可用来触发助手的开头化进程;
动作链中三个调控器选取同一的入手时,如要苏醒状态时将这一个行之有效。
preDispatch()分发动作在此之前接触。
postDispatch()分发进程甘休时接触——尽管preDispatch()插件已经跳过了该动作。清理时多量施用。
getRequest() 获取当前的央浼对象。
getResponse() 获取当前的响应对象。
getName()
获取帮手名。获取了下划线前边的类名部分,未有下划线则收获类的姓名。

落到实处源码如下:

一旦布局是开垦(enabled)的,则关闭(disable)它。

在/library/Zend/Controller/Action/中

诸如,若是类名称叫Zend_Controller_Action_Helper_Redirector,他将回来
Redirector,假如类名称为FooMessage,将会回去全名。

/**
 * @see Zend_Controller_Action_Helper_Abstract
 */
require_once 'Zend/Controller/Action/Helper/Abstract.php';
/**
 * Helper for creating URLs for redirects and other tasks
 *
 * @uses    Zend_Controller_Action_Helper_Abstract
 * @category  Zend
 * @package  Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
 * @license  http://framework.zend.com/license/new-bsd   New BSD License
 */
class Zend_Controller_Action_Helper_Url extends Zend_Controller_Action_Helper_Abstract
{
  /**
   * Create URL based on default route
   *
   * @param string $action
   * @param string $controller
   * @param string $module
   * @param array $params
   * @return string
   */
  public function simple($action, $controller = null, $module = null, array $params = null)
  {
    $request = $this->getRequest();
    if (null === $controller) {
      $controller = $request->getControllerName();
    }
    if (null === $module) {
      $module = $request->getModuleName();
    }
    $url = $controller . '/' . $action;
    if ($module != $this->getFrontController()->getDispatcher()->getDefaultModule()) {
      $url = $module . '/' . $url;
    }
    if ('' !== ($baseUrl = $this->getFrontController()->getBaseUrl())) {
      $url = $baseUrl . '/' . $url;
    }
    if (null !== $params) {
      $paramPairs = array();
      foreach ($params as $key => $value) {
        $paramPairs[] = urlencode($key) . '/' . urlencode($value);
      }
      $paramString = implode('/', $paramPairs);
      $url .= '/' . $paramString;
    }
    $url = '/' . ltrim($url, '/');
    return $url;
  }
  /**
   * Assembles a URL based on a given route
   *
   * This method will typically be used for more complex operations, as it
   * ties into the route objects registered with the router.
   *
   * @param array  $urlOptions Options passed to the assemble method of the Route object.
   * @param mixed  $name    The name of a Route to use. If null it will use the current Route
   * @param boolean $reset
   * @param boolean $encode
   * @return string Url for the link href attribute.
   */
  public function url($urlOptions = array(), $name = null, $reset = false, $encode = true)
  {
    $router = $this->getFrontController()->getRouter();
    return $router->assemble($urlOptions, $name, $reset, $encode);
  }
  /**
   * Perform helper when called as $this->_helper->url() from an action controller
   *
   * Proxies to {@link simple()}
   *
   * @param string $action
   * @param string $controller
   * @param string $module
   * @param array $params
   * @return string
   */
  public function direct($action, $controller = null, $module = null, array $params = null)
  {
    return $this->simple($action, $controller, $module, $params);
  }
}

倘诺视图剖析器(ViewRenderer)是开垦的,则关闭它。

│  Exception.php
│  HelperBroker.php
│  Interface.php

├─Helper
│  │  Abstract.php
│  │  ActionStack.php
│  │  AjaxContext.php
│  │  AutoCompleteDojo.php
│  │  AutoCompleteScriptaculous.php
│  │  Cache.php
│  │  ContextSwitch.php
│  │  FlashMessenger.php
│  │  Json.php
│  │  Redirector.php
│  │  Url.php
│  │  ViewRenderer.php
│  │
│  └─AutoComplete
│          Abstract.php

└─HelperBroker
       PriorityStack.php

举个例子表明自定义动作帮手类

越多关于zend相关内容感兴趣的读者可查阅本站专项论题:《Zend
FrameWork框架入门教程》、《php出色开荒框架计算》、《Yii框架入门及常用技能总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作手艺汇总》

安装 ‘Content-Type’ 响应头为 ‘application/json’。

常见的动作帮手有

功效:深入分析传入的网站,再次来到各样部分。使用parse_url分析钦赐的网站。
用zendstudio新建二个zend framework项目helper_demo1。

可望本文所述对大家PHP程序设计具有扶助。

缺省级地区级,没有必要等待动作施行到位,即刻赶回响应。

FlashMessenger 用来拍卖Flash Messenger会话;
Json 用来解码和出殡和埋葬 JSON 响应;
Url  用于成立Urls;
金沙澳门官网7817网址,Redirector 提供另一种实现情势,帮衬程序重定向到中间如故外界页面;
ViewRenderer 自动的成就在调控器内成立视图对象并渲染视图的进度;
AutoComplete 自动响应 AJAX 的电动完毕;
ContextSwitch 和 AjaxContext 为您的动作提供代替响应格式;
Cache  达成cache的连带操作;
ActionStack 用于操作动作仓库。

增加产量文件:/helper_demo1/library/Application/Controller/Action/Helpers/UrlParser.php

您或然感兴趣的稿子:

  • Zend
    Framework教程之Zend_Helpers动作帮手ViewRenderer用法详解
  • Zend
    Framework教程之动作的基类Zend_Controller_Action详解
  • Zend
    Framework动作助手Redirector用法实例详解
  • Zend
    Framework动作助手Json用法实例剖析
  • Zend
    Framework动作帮手FlashMessenger用法详解
  • Zend
    Framework成立协和的动作帮手详解
  • Zend
    Framework动作帮手(Zend_Controller_Action_Helper)用法详解
  • Zend
    Framework教程在此以前端调控器Zend_Controller_Front用法详解
  • php入门教程之Zend
    Studio设置与支出实例
  • Zend
    Framework开荒入门特出教程
  • Zend
    Framework动作调控器用法示例

用法很简短:或许把它当作帮手代理的法子来调用,或许调用 encodeJson() 和
sendJson() 方法的中间之一:

出手的二种实例化使用方法

<?php
require_once 'Zend/Controller/Action/Helper/Abstract.php';
class Application_Controller_Action_Helpers_UrlParser extends Zend_Controller_Action_Helper_Abstract
{
  public function __construct()
  {
  }
  /**
   * Parse url
   *
   * @param String $url
   * @return Array part of url
   */
  public function parse($url)
  {
    return parse_url($url);
  }
}