亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

Zend Framework動(dòng)作助手(Zend_Controller_Action_Helper)用法詳解

2024-05-04 23:43:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了Zend Framework動(dòng)作助手(Zend_Controller_Action_Helper)用法,詳細(xì)分析了動(dòng)作助手Zend_Controller_Action_Helper功能,定義,使用方法與相關(guān)實(shí)現(xiàn)代碼,需要的朋友可以參考下
 

本文實(shí)例講述了Zend Framework動(dòng)作助手(Zend_Controller_Action_Helper)用法。分享給大家供大家參考,具體如下:

通過(guò)助手模式,可以把一些經(jīng)常使用的功能模塊做封裝,從而在可以在需要的地方靈活使用,主要是在action使用。

Zend Framework中有兩種助手,動(dòng)作助手(Zend_Controller_Action_Helper)和試圖助手(Zend_View_Helper)。

動(dòng)作助手可以向任何Zend_Controller_Action的衍生動(dòng)作控制器中,即時(shí)的加入功能(runtime and/or on-demand functionality),以使得增加公共的動(dòng)作控制器功能時(shí),盡量減少衍生動(dòng)作控制器類的必要。

動(dòng)作助手在需要調(diào)用時(shí)加載,可以在請(qǐng)求的時(shí)候(bootstrap)或者動(dòng)作控制器創(chuàng)建的時(shí)候(init())實(shí)例化。

涉及到的相關(guān)文件

在/library/Zend/Controller/Action/中

│  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

常見(jiàn)的動(dòng)作助手有

FlashMessenger 用來(lái)處理Flash Messenger會(huì)話;
Json 用來(lái)解碼和發(fā)送 JSON 響應(yīng);
Url  用于創(chuàng)建Urls;
Redirector 提供另一種實(shí)現(xiàn)方式,幫助程序重定向到內(nèi)部或者外部頁(yè)面;
ViewRenderer 自動(dòng)的完成在控制器內(nèi)建立視圖對(duì)象并渲染視圖的過(guò)程;
AutoComplete 自動(dòng)響應(yīng) AJAX 的自動(dòng)完成;
ContextSwitch 和 AjaxContext 為你的動(dòng)作提供替代響應(yīng)格式;
Cache  實(shí)現(xiàn)cache的相關(guān)操作;
ActionStack 用于操作動(dòng)作堆棧。

動(dòng)手的幾種實(shí)例化使用方式

1.通過(guò)Zend_Controller_Action的 $_helper成員的getHelper()方法。直接調(diào)用getHelper(),傳入助手的名稱即可。

$redirector = $this->_helper->getHelper('Redirector');//$redirector->getName();$redirector->gotoSimple('index2');

2.直接通過(guò)訪問(wèn)的_helper助手的屬性對(duì)應(yīng)的助手對(duì)象

$redirector = $this->_helper->Redirector;

Zend_Controller_Action_HelperBroker

中文名稱譯作"助手經(jīng)紀(jì)人",顧名思義,是動(dòng)作助手的中間人。

在動(dòng)作的實(shí)例化使用的方式的第二種方式就是通過(guò)Zend_Controller_Action_HelperBroker的魔術(shù)方法__get()來(lái)實(shí)現(xiàn)的。

助手經(jīng)紀(jì)人用于注冊(cè)助手對(duì)象和助手路徑以及獲取助手等等功能。

Zend_Controller_Action_HelperBroker的實(shí)現(xiàn)以及常用方法列表

<?php/** * @see Zend_Controller_Action_HelperBroker_PriorityStack */require_once 'Zend/Controller/Action/HelperBroker/PriorityStack.php';/** * @see Zend_Loader */require_once 'Zend/Loader.php';/** * @category  Zend * @package  Zend_Controller * @subpackage Zend_Controller_Action * @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_HelperBroker{  /**   * $_actionController - ActionController reference   *   * @var Zend_Controller_Action   */  protected $_actionController;  /**   * @var Zend_Loader_PluginLoader_Interface   */  protected static $_pluginLoader;  /**   * $_helpers - Helper array   *   * @var Zend_Controller_Action_HelperBroker_PriorityStack   */  protected static $_stack = null;  /**   * Set PluginLoader for use with broker   *   * @param Zend_Loader_PluginLoader_Interface $loader   * @return void   */  public static function setPluginLoader($loader)  {    if ((null !== $loader) && (!$loader instanceof Zend_Loader_PluginLoader_Interface)) {      require_once 'Zend/Controller/Action/Exception.php';      throw new Zend_Controller_Action_Exception('Invalid plugin loader provided to HelperBroker');    }    self::$_pluginLoader = $loader;  }  /**   * Retrieve PluginLoader   *   * @return Zend_Loader_PluginLoader   */  public static function getPluginLoader()  {    if (null === self::$_pluginLoader) {      require_once 'Zend/Loader/PluginLoader.php';      self::$_pluginLoader = new Zend_Loader_PluginLoader(array(        'Zend_Controller_Action_Helper' => 'Zend/Controller/Action/Helper/',      ));    }    return self::$_pluginLoader;  }  /**   * addPrefix() - Add repository of helpers by prefix   *   * @param string $prefix   */  static public function addPrefix($prefix)  {    $prefix = rtrim($prefix, '_');    $path  = str_replace('_', DIRECTORY_SEPARATOR, $prefix);    self::getPluginLoader()->addPrefixPath($prefix, $path);  }  /**   * addPath() - Add path to repositories where Action_Helpers could be found.   *   * @param string $path   * @param string $prefix Optional; defaults to 'Zend_Controller_Action_Helper'   * @return void   */  static public function addPath($path, $prefix = 'Zend_Controller_Action_Helper')  {    self::getPluginLoader()->addPrefixPath($prefix, $path);  }  /**   * addHelper() - Add helper objects   *   * @param Zend_Controller_Action_Helper_Abstract $helper   * @return void   */  static public function addHelper(Zend_Controller_Action_Helper_Abstract $helper)  {    self::getStack()->push($helper);    return;  }  /**   * resetHelpers()   *   * @return void   */  static public function resetHelpers()  {    self::$_stack = null;    return;  }  /**   * Retrieve or initialize a helper statically   *   * Retrieves a helper object statically, loading on-demand if the helper   * does not already exist in the stack. Always returns a helper, unless   * the helper class cannot be found.   *   * @param string $name   * @return Zend_Controller_Action_Helper_Abstract   */  public static function getStaticHelper($name)  {    $name = self::_normalizeHelperName($name);    $stack = self::getStack();    if (!isset($stack->{$name})) {      self::_loadHelper($name);    }    return $stack->{$name};  }  /**   * getExistingHelper() - get helper by name   *   * Static method to retrieve helper object. Only retrieves helpers already   * initialized with the broker (either via addHelper() or on-demand loading   * via getHelper()).   *   * Throws an exception if the referenced helper does not exist in the   * stack; use {@link hasHelper()} to check if the helper is registered   * prior to retrieving it.   *   * @param string $name   * @return Zend_Controller_Action_Helper_Abstract   * @throws Zend_Controller_Action_Exception   */  public static function getExistingHelper($name)  {    $name = self::_normalizeHelperName($name);    $stack = self::getStack();    if (!isset($stack->{$name})) {      require_once 'Zend/Controller/Action/Exception.php';      throw new Zend_Controller_Action_Exception('Action helper "' . $name . '" has not been registered with the helper broker');    }    return $stack->{$name};  }  /**   * Return all registered helpers as helper => object pairs   *   * @return array   */  public static function getExistingHelpers()  {    return self::getStack()->getHelpersByName();  }  /**   * Is a particular helper loaded in the broker?   *   * @param string $name   * @return boolean   */  public static function hasHelper($name)  {    $name = self::_normalizeHelperName($name);    return isset(self::getStack()->{$name});  }  /**   * Remove a particular helper from the broker   *   * @param string $name   * @return boolean   */  public static function removeHelper($name)  {    $name = self::_normalizeHelperName($name);    $stack = self::getStack();    if (isset($stack->{$name})) {      unset($stack->{$name});    }    return false;  }  /**   * Lazy load the priority stack and return it   *   * @return Zend_Controller_Action_HelperBroker_PriorityStack   */  public static function getStack()  {    if (self::$_stack == null) {      self::$_stack = new Zend_Controller_Action_HelperBroker_PriorityStack();    }    return self::$_stack;  }  /**   * Constructor   *   * @param Zend_Controller_Action $actionController   * @return void   */  public function __construct(Zend_Controller_Action $actionController)  {    $this->_actionController = $actionController;    foreach (self::getStack() as $helper) {      $helper->setActionController($actionController);      $helper->init();    }  }  /**   * notifyPreDispatch() - called by action controller dispatch method   *   * @return void   */  public function notifyPreDispatch()  {    foreach (self::getStack() as $helper) {      $helper->preDispatch();    }  }  /**   * notifyPostDispatch() - called by action controller dispatch method   *   * @return void   */  public function notifyPostDispatch()  {    foreach (self::getStack() as $helper) {      $helper->postDispatch();    }  }  /**   * getHelper() - get helper by name   *   * @param string $name   * @return Zend_Controller_Action_Helper_Abstract   */  public function getHelper($name)  {    $name = self::_normalizeHelperName($name);    $stack = self::getStack();    if (!isset($stack->{$name})) {      self::_loadHelper($name);    }    $helper = $stack->{$name};    $initialize = false;    if (null === ($actionController = $helper->getActionController())) {      $initialize = true;    } elseif ($actionController !== $this->_actionController) {      $initialize = true;    }    if ($initialize) {      $helper->setActionController($this->_actionController)          ->init();    }    return $helper;  }  /**   * Method overloading   *   * @param string $method   * @param array $args   * @return mixed   * @throws Zend_Controller_Action_Exception if helper does not have a direct() method   */  public function __call($method, $args)  {    $helper = $this->getHelper($method);    if (!method_exists($helper, 'direct')) {      require_once 'Zend/Controller/Action/Exception.php';      throw new Zend_Controller_Action_Exception('Helper "' . $method . '" does not support overloading via direct()');    }    return call_user_func_array(array($helper, 'direct'), $args);  }  /**   * Retrieve helper by name as object property   *   * @param string $name   * @return Zend_Controller_Action_Helper_Abstract   */  public function __get($name)  {    return $this->getHelper($name);  }  /**   * Normalize helper name for lookups   *   * @param string $name   * @return string   */  protected static function _normalizeHelperName($name)  {    if (strpos($name, '_') !== false) {      $name = str_replace(' ', '', ucwords(str_replace('_', ' ', $name)));    }    return ucfirst($name);  }  /**   * Load a helper   *   * @param string $name   * @return void   */  protected static function _loadHelper($name)  {    try {      $class = self::getPluginLoader()->load($name);    } catch (Zend_Loader_PluginLoader_Exception $e) {      require_once 'Zend/Controller/Action/Exception.php';      throw new Zend_Controller_Action_Exception('Action Helper by name ' . $name . ' not found', 0, $e);    }    $helper = new $class();    if (!$helper instanceof Zend_Controller_Action_Helper_Abstract) {      require_once 'Zend/Controller/Action/Exception.php';      throw new Zend_Controller_Action_Exception('Helper name ' . $name . ' -> class ' . $class . ' is not of type Zend_Controller_Action_Helper_Abstract');    }    self::getStack()->push($helper);  }}

助手經(jīng)紀(jì)人的常見(jiàn)用法:

一、注冊(cè)一個(gè)助手

1.

Zend_Controller_Action_HelperBroker::addHelper($helper);

2.通過(guò)addPrefix()方法帶有一個(gè)類前綴參數(shù),用來(lái)加入自定義助手類的路徑。
要求前綴遵循Zend Framework的類命名慣例。

// Add helpers prefixed with My_Action_Helpers in My/Action/Helpers/Zend_Controller_Action_HelperBroker::addPrefix('My_Action_Helpers');

3.使用addPath()方法第一個(gè)參數(shù)為一個(gè)目錄,第二個(gè)為類前綴(默認(rèn)為'Zend_Controller_Action_Helper')。

用來(lái)將自己的類前綴映射到指定的目錄。

// Add helpers prefixed with Helper in Plugins/Helpers/Zend_Controller_Action_HelperBroker::addPath('./Plugins/Helpers',                       'Helper');

二、判讀助手是否存在

使用hasHelper($name)方法來(lái)判定助手經(jīng)紀(jì)人中是否存在某助手,$name是助手的短名稱(去掉前綴的):

// Check if 'redirector' helper is registered with the broker:if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {  echo 'Redirector helper registered';}

從助手經(jīng)紀(jì)人中獲取助手有兩個(gè)靜態(tài)方法:getExistingHelper() 和 getStaticHelper() 。getExistingHelper()將獲取助手僅當(dāng)它以前調(diào)用過(guò)或者顯性地通過(guò)助手經(jīng)紀(jì)人注冊(cè)過(guò),否則就拋出一個(gè)異常。getStaticHelper() 的做法和getExistingHelper()一樣,但如果還沒(méi)有注冊(cè)助手堆棧,它將嘗試初始化助手,為獲取你要配置的的助手,getStaticHelper()是一個(gè)好的選擇。

兩個(gè)方法都帶一個(gè)參數(shù),$name,它是助手的短名稱(去掉前綴)。

// Check if 'redirector' helper is registered with the broker, and fetch:if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {  $redirector =    Zend_Controller_Action_HelperBroker::getExistingHelper('redirector');}// Or, simply retrieve it, not worrying about whether or not it was// previously registered:$redirector =  Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');}

三、removeHelper($name)刪除助手經(jīng)紀(jì)人中的某個(gè)助手,$name是助手的短名稱

// Conditionally remove the 'redirector' helper from the broker:if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {  Zend_Controller_Action_HelperBroker::removeHelper('redirector')}
 


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
狠狠久久综合| 少妇人妻好深好紧精品无码| 宅男噜噜噜66一区二区66| 亚洲精品天天看| 精品一区二区在线观看| 538精品视频| 国产真实老熟女无套内射| 国产xxxxx视频| 91天堂在线视频| 91精品国产黑色紧身裤美女| 色婷婷综合久久久久中文一区二区| 亚洲人a成www在线影院| 欧美另类在线视频| 欧美中文字幕不卡| 午夜视频在线看| 精品制服美女久久| 国产又黄又爽又色| 欧美1区2区3区4区| www.av在线| 成人精品在线视频观看| 99精品国产在热久久| jvid福利在线一区二区| 精品粉嫩超白一线天av| 国产精品av在线播放| 成年网站免费观看| 欧美三级在线看| 欧美亚洲激情| 精品福利在线视频| 澳门av一区二区三区| 国产精品系列在线观看| 亚洲午夜精品久久久久久久久久久久| 欧美日韩亚洲另类| 天天碰日日操| 国产精品专区在线| 成人爽a毛片一区二区免费| 国产视频在线观看视频| 中文字幕久久亚洲| www红色一片_亚洲成a人片在线观看_| 热久久天天拍国产| 狠狠躁日日躁夜夜躁av| 久久综合色播| 国产精品69页| 欧美一二三区精品| 成人免费福利视频| 糖心vlog免费在线观看| 青青青免费视频观看在线| 欧美中文日韩| 国产在线日韩精品| 色成年激情久久综合| 日韩欧美激情在线| 欧美激情免费在线| 青青视频免费在线| 欧美日韩一级二级三级| 国产精品视频久久| 成人免费小视频| 日本午夜精华| 日本久久精品一区二区| 国产精品18久久久久网站| www.中文字幕在线观看| 在线观看的黄色| 超碰超碰人人人人精品| 冲田杏梨av在线| 久久久久亚洲av成人毛片韩| 欧美午夜性生活| 国产成人在线播放| 国产亲伦免费视频播放| 依依成人精品视频| 欧美日韩卡一卡二| 最新国产成人av网站网址麻豆| 精品中文字幕一区| 99国内精品| 韩国av免费在线观看| 日韩不卡的av| 亚洲狠狠婷婷综合久久久| 亚洲精品福利视频| 黄色三级中文字幕| 在线看片你懂得| 亚洲精品mp4| 国产人妖一区二区| 欧美大胆a视频| 欧美激情国产精品日韩| 18免费在线视频| 亚洲国产精品ⅴa在线观看| 免费能直接在线观看黄的视频| 无码少妇一区二区三区| 国产精品日韩一区| 九九热视频精品在线观看| 天天做日日爱夜夜爽| 国产精品97在线| 一区二区在线观看视频在线观看| 麻豆视频在线观看免费网站黄| 少妇精品无码一区二区三区| 欧美日韩一二| www.99re7.com| 国产午夜精品久久久| 超污网站在线观看| 亚洲精品成人无码熟妇在线| 99视频精品全部免费在线视频| av视屏在线播放| www.av精品| 中文字幕在线观看1| 高清日韩电视剧大全免费| 999国产精品视频免费| 中文字幕色网站| 中文字幕不卡三区| 黄网站免费看| 精品人妻二区中文字幕| 国产成+人+综合+亚洲欧美丁香花| 亚洲日本欧美天堂| 高清不卡日本v二区在线| 韩国久久久久| 午夜免费高清视频| 精品一区二区三区欧美| 精品免费av一区二区三区| 亚洲一区二区三区国产| 久久无码精品丰满人妻| av资源网在线播放| 一区二区高清免费观看影视大全| 亚洲欧美日韩一区二区在线| 欧美日韩性视频一区二区三区| 亚洲欧洲在线观看av| 国产在线69| 国产精品无码电影| 蜜桃免费网站一区二区三区| 精品一区二区三区欧美| 日本一区免费观看| 久久久人成影片一区二区三区| 久久精品视频免费在线观看| 国产a级网站| 国产精品亚洲一区二区三区| 欧洲av不卡| 国产精品一品二区三区的使用体验| 成人xxxx视频| 日本高清免费不卡视频| 欧美又粗又硬又大久久久| 欧美成人三级在线播放| 精品人妻无码一区二区三区换脸| 新片速递亚洲合集欧美合集| 天堂在线视频免费观看| 国产91热爆ts人妖在线| 开心色怡人综合网站| 久久久久久久综合狠狠综合| 中文字幕久久精品| 色综合色狠狠综合色| 亚洲精品人成| 欧美日韩一区成人| 国产一区在线看| 日本中文字幕在线免费观看| 最新热久久免费视频| av人人综合网| 激情婷婷久久| 国产区精品视频在线观看豆花| 美日韩精品视频免费看| 日韩中文在线字幕| 国产宾馆实践打屁股91| 99久久综合国产精品| 国产日韩精品视频| 欧美在线播放一区| 另类free性欧美护士| 国产中文欧美精品| 亚洲久久中文字幕| 在线观看91| 亚洲免费精品视频| 美女喷水白浆| aa亚洲婷婷| 精品国产美女福利到在线不卡| 精品一区二区三区毛片| 日本中文在线观看| 欧美日韩亚洲第一| 波多野结衣精品在线| 欧美成人禁片在线观看网址| a在线视频播放观看免费观看| 日本道免费精品一区二区三区| 亚洲制服丝袜在线| xvideos国产精品| 国产精品自拍在线| 日韩最新在线视频| 特级黄色片视频| 亚洲欧美日韩中文字幕一区二区三区| 三上悠亚国产精品一区二区三区| 色狠狠一区二区| 亚洲精品国产成人av在线| 亚洲一区二区精品久久av| 亚洲欧美中日韩| 最近2018中文字幕免费在线视频| 国产精品毛片一区二区三区| 男女啪啪999亚洲精品| 蜜桃精品久久久久久久免费影院| 狠狠躁夜夜躁人人爽超碰91| 日本色综合中文字幕| 国产精品国产亚洲精品看不卡15| 久久久国际精品| 成人avav在线| 国产精品天天干| 成人乱码手机视频| 国产一区二区影院| 欧美xx视频| 美女18一级毛片一品久道久久综合| 日本一区二区在线不卡| 国产综合精品久久| 99国产精品久久久| 黄色大片网站在线观看| 久久精品日产第一区二区三区高清版| 在线视频观看一区| 欧洲精品视频在线观看| 国产成人av一区| 久久久久久穴| 国产精品永久| 国产精品成人69xxx免费视频| 亚洲另类av| 欧美一级中文字幕| 牛夜精品久久久久久久99黑人| 欧美日本国产精品| 国产国语刺激对白av不卡| 91在线亚洲| 国产精品av网站| 9.1成人看片免费版| 91国内精品久久| 亚洲色大成网站www| 91欧洲在线视精品在亚洲| 成人性色生活片免费看爆迷你毛片| 国产美女精品人人做人人爽| 国产曰批免费观看久久久| 欧美熟妇交换久久久久久分类| 中文字幕精品在线视频| 9.1片黄在线观看| 成人情趣视频网站| 盗摄牛牛av影视一区二区| 国产精品国产a级| 朝桐光av在线一区二区三区| 天堂网在线.www天堂在线| 国产精品久久久久久久久久久久久久久| 国产乱码精品一区二区三区卡| 日韩av免费网址| а√天堂www在线а√天堂视频| 亚洲综合在线观看视频| 久久亚洲一区二区三区四区| 亚洲xxxx3d| 1024在线看片你懂得| 成人av资源在线| 久久久亚洲国产美女国产盗摄| 成人国内精品久久久久一区| 亚洲欧美日韩中文视频| 日韩avvvv在线播放| 国产传媒欧美日韩成人精品大片| 91麻豆国产香蕉久久精品| 六月丁香婷婷在线| 国产在线播放91| 蜜桃久久精品乱码一区二区| 久久av红桃一区二区禁漫| 宅男午夜电影| 亚洲成人人体| 资源视频在线播放免费| 国产亚洲成年网址在线观看| 天堂中文在线观看视频| 大地资源网在线观看免费官网| 国产一区二区三区精彩视频| 日韩丝袜美女视频| 中文字幕综合在线观看| 无码人妻精品一区二区| 色综合av在线| 91精品国产综合久久男男| 极品视频在线| 国产精品777777| 日韩免费视频网站| 中文字幕在线观看不卡| 精品爆乳一区二区三区无码av| 久久成人18免费网站| 一本色道久久综合无码人妻| 亚洲成av人片在线观看无码| 男人天堂av片| 中文字幕免费精品一区| 亚洲综合图片区| 久久久精品中文字幕| 91在线播放网站| 久久亚洲精品网站| 国产白丝袜美女久久久久| 都市激情久久久久久久久久久| 亚洲va中文字幕| 国产美女www爽爽爽| 女同激情久久av久久| 伊人成综合网伊人222| gogogo高清在线观看一区二区| 4438亚洲最大| 性欧美又大又长又硬| 在线免费电影网| 国产成人97精品免费看片| 欧美日本高清视频在线观看| 好吊日免费视频| 新天天拍日日拍狠狠拍| 亚洲欧美综合国产精品一区| 欧性猛交ⅹxxx乱大交| 最新国产一区二区| 亚洲国产午夜伦理片大全在线观看网站| 国产精品嫩草影院俄罗斯| 性欧美一区二区三区| 国产日本欧美在线观看| 国产91对白在线播放| www.成人av.com| 91偷拍精品一区二区三区| 日本丶国产丶欧美色综合| 国产模特av私拍大尺度| av中文字幕免费观看| 中文字幕第15页| 午夜激情视频在线| 亚洲av无码成人精品区| 另类国产精品一区二区| 亚洲国产精品日韩| 国产网站在线免费观看| 国产成人avxxxxx在线看| 在线欧美日韩国产| 老鸭窝一区二区| 亚洲一卡二卡在线| 国产成人精品综合在线观看| 国产成人精品优优av| 黄视频网站在线| 波多野结衣视频免费观看| 亚洲最大成人在线视频| 亚洲日本一区二区三区在线观看| 777电影在线观看| 国产无遮挡又黄又爽| 五月天激情丁香| 91成人在线网站| 美女被黑人40厘米进入| 女人一区二区三区| 欧美 日韩 精品| 亚洲第一免费看片| 久久亚洲二区三区|