成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Yii2中組件的注冊與創(chuàng)建方法

Yii2中組件的注冊與創(chuàng)建方法

熱門標(biāo)簽:周口網(wǎng)絡(luò)回?fù)芡夂粝到y(tǒng) 福建高頻外呼防封系統(tǒng)哪家好 外呼系統(tǒng)人工客服 全國各省地圖標(biāo)注點(diǎn) 網(wǎng)絡(luò)電話400申請 百度地圖標(biāo)注類型是酒店 商丘外呼系統(tǒng)好處 400電話申請辦理 隨州銷售電銷機(jī)器人公司

 今天本來打算研究一下yii2.0的AR模型的實(shí)現(xiàn)原理,然而,計(jì)劃趕不上變化,突然就想先研究一下yii2.0的數(shù)據(jù)庫組件創(chuàng)建的過程。通過對yii源碼的學(xué)習(xí),了解了yii組件注冊與創(chuàng)建的過程,并發(fā)現(xiàn)原來yii組件注冊之后并不是馬上就去創(chuàng)建的,而是待到實(shí)際需要使用某個組件的時候再去創(chuàng)建對應(yīng)的組件實(shí)例的。本文大概記錄一下這個探索的過程。

  要了解yii組件的注冊與創(chuàng)建,當(dāng)然要從yii入口文件index.php說起了,整個文件代碼如下:

?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../../vendor/autoload.php');
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../../common/config/bootstrap.php');
require(__DIR__ . '/../config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
 require(__DIR__ . '/../../common/config/main.php'),
 require(__DIR__ . '/../../common/config/main-local.php'),
 require(__DIR__ . '/../config/main.php'),
 require(__DIR__ . '/../config/main-local.php')
);
(new yii\web\Application($config))->run();

可以看到入口文件引入了幾個配置文件,并將所有配置文件的內(nèi)容都合并到$config這個配置數(shù)組中,然后使用這個配置數(shù)組作為參數(shù)去創(chuàng)建一個應(yīng)用實(shí)例。若將這個配置數(shù)組打印出來,就會看到,“components”下標(biāo)對應(yīng)的元素包含了yii組件的參數(shù)信息(這里只截圖一小部分):

這些組件的信息是在引入進(jìn)來的幾個配置文件中配置的,Yii組件就是使用這些參數(shù)信息進(jìn)行注冊與創(chuàng)建的。

  接下來就進(jìn)入yii\web\Application類的實(shí)例化過程了,yii\web\Application類沒有構(gòu)造函數(shù),但是它繼承了\yii\base\Application類:

所以會自動執(zhí)行\(zhòng)yii\base\Application類的構(gòu)造函數(shù):

public function __construct($config = [])
{
 Yii::$app = $this;
 static::setInstance($this);
 $this->state = self::STATE_BEGIN;
 $this->preInit($config);
 $this->registerErrorHandler($config);
 Component::__construct($config);
}

這里要順便說一下預(yù)初始化方法preInit(),它的代碼如下:

public function preInit($config)
{
 /* 此處省略對$config數(shù)組的預(yù)處理操作代碼 */
 // merge core components with custom components
 foreach ($this->coreComponents() as $id => $component) {
  if (!isset($config['components'][$id])) {
   $config['components'][$id] = $component;
  } elseif (is_array($config['components'][$id])  !isset($config['components'][$id]['class'])) {
   $config['components'][$id]['class'] = $component['class'];
  }
 }
}

  這個函數(shù)對傳遞給構(gòu)造函數(shù)的配置數(shù)組$config進(jìn)行了一些預(yù)處理操作(這里省略了),最后使用coreComponents()方法返回的數(shù)組對$config數(shù)組進(jìn)行了完善,coreComponents()方法是這樣的:

public function coreComponents()
{
 return [
  'log' => ['class' => 'yii\log\Dispatcher'],
  'view' => ['class' => 'yii\web\View'],
  'formatter' => ['class' => 'yii\i18n\Formatter'],
  'i18n' => ['class' => 'yii\i18n\I18N'],
  'mailer' => ['class' => 'yii\swiftmailer\Mailer'],
  'urlManager' => ['class' => 'yii\web\UrlManager'],
  'assetManager' => ['class' => 'yii\web\AssetManager'],
  'security' => ['class' => 'yii\base\Security'],
 ];
}

  其實(shí)就是一些核心組件的配置,也就是說這些組件是可以不需要我們在配置文件中配置的,yii會自動進(jìn)行注冊。

  好了,回到\yii\base\Application類的構(gòu)造函數(shù),這個函數(shù)最后調(diào)用了\yii\base\Component類的構(gòu)造函數(shù),但\yii\base\Component類是沒有構(gòu)造函數(shù)的,不過它繼承了\yii\base\Object類:

所以也自動執(zhí)行了\yii\base\Object類的構(gòu)造函數(shù):

public function __construct($config = [])
{
 if (!empty($config)) {
  Yii::configure($this, $config);
 }
 $this->init();
}

這里主要是調(diào)用了\yii\BaseYii類的靜態(tài)方法configure():

public static function configure($object, $properties)
{
 foreach ($properties as $name => $value) {
  $object->$name = $value;
 }
 return $object;
}

這個方法就是循環(huán)入口文件(new yii\web\Application($config))->run();中的$config數(shù)組(這個數(shù)組的結(jié)構(gòu)參見本文第一個截圖),以數(shù)組鍵名作為對象屬性名,對應(yīng)的鍵值作為對象屬性值進(jìn)行賦值操作。所以當(dāng)循環(huán)到組件配置參數(shù)的時候是這樣子的:$object->components = $value($value為所有組件的配置數(shù)組),也就是對$object的components屬性進(jìn)行賦值操作,那這個$object是哪個類的對象呢?回想最初調(diào)用的源頭,其實(shí)它就是入口文件中需要進(jìn)行實(shí)例化的\yii\web\Application類的對象啊。然而,這個類和它的祖先類都沒有components這個成員變量啊,不急,又要進(jìn)行一番繼承套路了,順著yii\web\Application類的繼承關(guān)系一層一層往上找可以發(fā)現(xiàn)\yii\web\Application類最終也繼承了\yii\base\Object類,\yii\base\Object類是支持屬性的,所以yii\web\Application類也支持屬性(關(guān)于屬性,可以參考我的另一篇博文:yii2之屬性),當(dāng)賦值操作找不到components成員變量時會調(diào)用setComponents()方法,又去找這個方法的所在,終于在它的祖先類\yii\di\ServiceLocator中找到了setComponents()方法,沒錯,對應(yīng)用實(shí)例的components屬性進(jìn)行賦值操作其實(shí)就是調(diào)用這個方法!

  好了,現(xiàn)在就來看看setComponents()這個方法到底干了啥:

public function setComponents($components)
{
 foreach ($components as $id => $component) {
  $this->set($id, $component);
 }
}

其實(shí)很簡單,就是循環(huán)各個組件的配置數(shù)組,調(diào)用set()方法,set()方法如下:

public function set($id, $definition)
{ unset($this->_components[$id]);
 if ($definition === null) {
  unset($this->_definitions[$id]);
  return;
 }
 if (is_object($definition) || is_callable($definition, true)) {
  // an object, a class name, or a PHP callable
  $this->_definitions[$id] = $definition;
 } elseif (is_array($definition)) {
  // a configuration array
  if (isset($definition['class'])) {
   $this->_definitions[$id] = $definition;
  } else {
   throw new InvalidConfigException("The configuration for the \"$id\" component must contain a \"class\" element.");
  }
 } else {
  throw new InvalidConfigException("Unexpected configuration type for the \"$id\" component: " . gettype($definition));
 }
}

其實(shí)就是把組件配置存入$_definitions這個私有成員變量(即注冊),然后呢?然后就沒有下文了。。。

  搞了半天,原來yii創(chuàng)建應(yīng)用實(shí)例的時候只是進(jìn)行組件的注冊,并沒有實(shí)際創(chuàng)建組件,那么組件實(shí)例是什么時候進(jìn)行創(chuàng)建的?在哪里進(jìn)行創(chuàng)建的呢?別急。從上面推導(dǎo)的這個過程我們知道\yii\di\ServiceLocator類是\yii\web\Application類的祖先類,所以其實(shí)yii的應(yīng)用實(shí)例其實(shí)就是一個服務(wù)定位器,比如我們想訪問數(shù)據(jù)庫組件的時候,我們可以這樣來訪問:Yii::$app->db,這個Yii::$app就是yii應(yīng)用實(shí)例,也就是\yii\web\Application類的實(shí)例,但是\yii\web\Application類和它的父類、祖先類都找不到db這個屬性啊。哈哈,別忘了,php讀取不到類屬性的時候會調(diào)用魔術(shù)方法__get(),所以開始查找\yii\web\Application繼承關(guān)系最近的祖先類中的__get()方法,最后在\yii\di\ServiceLocator類中找到了,也就是說,Yii::$app->db最終會調(diào)用\yii\di\ServiceLocator類中的__get()方法:

public function __get($name)
{
 if ($this->has($name)) {
  return $this->get($name);
 } else {
  return parent::__get($name);
 }
}

__get()方法首先調(diào)用has()方法(這個不再貼代碼了)判斷組件是否已注冊,若已注冊則調(diào)用get()方法:

public function get($id, $throwException = true)
{
 if (isset($this->_components[$id])) {
  return $this->_components[$id];
 }
 if (isset($this->_definitions[$id])) {
  $definition = $this->_definitions[$id];
  if (is_object($definition)  !$definition instanceof Closure) {
   return $this->_components[$id] = $definition;
  } else {
   return $this->_components[$id] = Yii::createObject($definition);
  }
 } elseif ($throwException) {
  throw new InvalidConfigException("Unknown component ID: $id");
 } else {
  return null;
 }
}

其中私有成員變量$_components是存儲已經(jīng)創(chuàng)建的組件實(shí)例的,若發(fā)現(xiàn)組件已經(jīng)創(chuàng)建過則直接返回組件示例,否則使用$_definitions中對應(yīng)組件的注冊信息,調(diào)用\yii\BaseYii::createObject()方法進(jìn)行組件創(chuàng)建,這個方法最終會調(diào)用依賴注入容器\yii\di\Container的get()方法,接著就是依賴注入創(chuàng)建對象的過程了,關(guān)于這個過程已經(jīng)在我的上一篇博文中講解過了,可以參考一下:yii2之依賴注入與依賴注入容器。

  好了,yii組件注冊與創(chuàng)建的整個過程就是這樣的。最后總結(jié)一下,其實(shí)yii創(chuàng)建應(yīng)用實(shí)例的時候只是進(jìn)行了各個組件的注冊,也就是將組件的配置信息存入\yii\di\ServiceLocator類的私有成員變量$_definitions中,并沒有進(jìn)行實(shí)際創(chuàng)建,等到程序運(yùn)行過程中真正需要使用到某個組件的時候才根據(jù)該組件在$_definitions中保存的注冊信息使用依賴注入容器\yii\di\Container進(jìn)行組件實(shí)例的創(chuàng)建,然后把創(chuàng)建的實(shí)例存入私有成員變量$_components,這樣下次訪問相同組件的時候就可以直接返回組件實(shí)例,而不再需要執(zhí)行創(chuàng)建過程了。yii的這個組件注冊與創(chuàng)建機(jī)制其實(shí)是大有裨益的,試想一下,如果在應(yīng)用實(shí)例創(chuàng)建的時候就進(jìn)行所有組件的創(chuàng)建,將會大大增加應(yīng)用實(shí)例創(chuàng)建的時間,用戶每次刷新頁面都會進(jìn)行應(yīng)用實(shí)例的創(chuàng)建的,也就是說用戶每刷新一次頁面都很慢,這用戶體驗(yàn)就很不好了,而且很多情況下有很多組件其實(shí)是沒有使用到的,但是我們還是花了不少時間去創(chuàng)建這些組件,這是很不明智的,所以yii的做法就是:先把組件參數(shù)信息保存起來,需要使用到哪些組件再去創(chuàng)建相應(yīng)的實(shí)例,大大節(jié)省了應(yīng)用創(chuàng)建的時間,同時也節(jié)省了內(nèi)存,這種思路是很值得我們學(xué)習(xí)的!

總結(jié)

以上所述是小編給大家介紹的Yii2中組件的注冊與創(chuàng)建方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • Yii框架學(xué)習(xí)筆記之應(yīng)用組件操作示例
  • yii2高級應(yīng)用之自定義組件實(shí)現(xiàn)全局使用圖片上傳功能的方法
  • Yii框架組件和事件行為管理詳解
  • Yii擴(kuò)展組件編寫方法實(shí)例分析
  • yii2行為的方法如何注入到組件類中詳解
  • Yii框架響應(yīng)組件用法實(shí)例分析
  • Yii框架核心組件類實(shí)例詳解
  • PHP的Yii框架中移除組件所綁定的行為的方法
  • Yii框架自定義數(shù)據(jù)庫操作組件示例
  • Yii框架組件的事件機(jī)制原理與用法分析
  • Yii框架應(yīng)用組件用法實(shí)例分析

標(biāo)簽:海南 十堰 定西 樂山 佛山 迪慶 南寧 六安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Yii2中組件的注冊與創(chuàng)建方法》,本文關(guān)鍵詞  Yii2,中,組件,的,注冊,與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Yii2中組件的注冊與創(chuàng)建方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于Yii2中組件的注冊與創(chuàng)建方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    九九九在线观看| 亚洲 自拍 另类小说综合图区| 精品久久久三级| 中文字幕人成一区| 日本中文字幕一区二区有码在线| 狠狠精品干练久久久无码中文字幕| 日韩在线视频网站| 一级片视频播放| 亚洲视频久久久| 欧美午夜电影在线观看| av在线免费网站| 极品色影院av| 国产有色视频色综合| 麻豆福利视频| 国产韩日影视精品| 在线观看视频一区二区| 国产精品福利无圣光在线一区| 中文字幕免费在线不卡| 欧美综合国产精品久久丁香| 天天噜天天色| 国产成年精品| 亚洲国产精品传媒在线观看| 亚洲婷婷免费| 亚洲精品久久久久久久久久久久久| 亚洲一区二区视频在线观看| 日韩精品免费观看视频| 成人在线免费观看网址| 国产suv精品一区二区68| 在线国产福利网站| 亚洲免费视频观看| 在线欧美福利| 久草热久草热线频97精品| 高潮白浆视频| 国产综合视频在线| 免费看一区二区三区| 日本五级黄色片| 国产精品论坛| 日韩精品在线观看网站| 国产精品r级在线| 黑人久久a级毛片免费观看| 欧美成人毛片| 国产在线精品一区二区中文| 久久夜色撩人精品| 欧美裸体在线版观看完整版| 五码日韩精品一区二区三区视频| 黄色av片三级三级三级免费看| 日本女优在线视频一区二区| 国产精品美女av| 国产精品自产拍高潮在线观看| 国产又爽又黄又舒服又刺激视频| 黄色国产网站在线观看| 啪啪免费网站| 一级二级三级在线观看| 亚洲天堂av资源在线观看| 久久久国产精华液| 欧美久久久久久久久中文字幕| 韩国精品久久久| 99热在线这里只有精品| 中文字幕一区二区三区日韩精品| 国产成人一区二区三区| 久久网站免费视频| 久久99精品波多结衣一区| 五月天婷婷影视| 最近2019年好看中文字幕视频| 久久精品国产亚洲av无码娇色| 国产一级在线观看视频| 久久久无码一区二区三区| 欧美成人第一区| 久久91精品国产91久久小草| 欧美 日韩 国产一区二区在线视频| 在线播放免费| 综合在线视频| 亚洲国产日韩在线观看| 极品色影院av| 国产中文字幕精品| 色噜噜狠狠狠综合曰曰曰| wwwww亚洲| 久久久久久av无码免费看大片| 国产喷水在线观看| 久久久久国产精品| 国产亚洲精品久久久网站好莱| 天堂…中文在线最新版在线| 无码人妻丰满熟妇区96| 亚洲一区二区三区四区五区六区| 久久精品免费播放| 欧美lavv| 美女一区二区在线观看| 99视频在线免费| 91国产美女视频| 一区二区三区中文在线| 一区二区三区四区五区精品视频| jizz18女人| 日韩久久免费电影| 国产乱码精品一区二区三区中文| 日韩综合一区二区| 欧日韩精品视频| 欧美成人精品欧美一级| 亚洲影影院av| 国产福利在线免费| 高清国产一区二区三区| 亚洲欧美日韩成人高清在线一区| 亚洲国产精品va在看黑人| 欧美精品成人网| 蜜桃av久久久亚洲精品| 蜜臀a∨国产成人精品| 欧美电影免费观看完整版| 亚洲精品a级片| 99精品国产在热久久婷婷| 欧美香蕉大胸在线视频观看| 黄色免费观看| 又粗又黑又大的吊av| 日本在线观看视频| 欧美特级xxxxbbbb毛片| 手机在线理论片| 国产精品bbw一区二区三区| 免费a级毛片在线播放| 亚洲午夜激情在线| 国内av一区二区三区| 青春草在线视频观看| 一级美女在线| av免费观看在线| 国产成人啪午夜精品网站男同| 亚洲人妖av一区二区| 黄色手机在线视频| 国产视频精品视频| 丰满人妻一区二区三区免费| 欧美日韩第一区日日骚| 一级黄色大片免费看| 91大神在线资源观看无广告| 欧美精品免费看| 精品久久91| 日韩电影免费在线观看| 亚洲精品一区二区三区香蕉| 成人一区二区三区中文字幕| 91黑人精品一区二区三区| 三年片免费观看大全| 亚洲小说区图片区| 亚洲国内自拍| jizz在线观看中文| 日本黄色入口| 日韩美女久久久| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久久精品黄色| 欧美日韩激情视频8区| 国产精品白嫩白嫩大学美女| 欧美激情另类| 欧美色涩在线第一页| 91破解版在线看| 色呦呦在线资源| 欧洲成人一区二区三区| 亚洲欧美日韩久久精品| 国产精品一区二区免费看| 97成人精品视频在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 欧美日韩在线视频一区二区三区| 欧美精品一级二级| 国产一二三区av| 99精品视频在线免费播放| 国产美女极品在线| 欧美日韩福利| 国产成人亚洲精品| 国产成人在线视频免费观看| 成人日韩在线| av电影不卡在线观看| 日本xxxx黄色| 伊人久久大香线蕉av超碰| 捆绑变态av一区二区三区| 成人网页在线免费观看| 国产福利电影在线播放| 日韩在线综合网| 精品国产精品一区二区夜夜嗨| 激情六月婷婷| 欧美日韩三区四区| 欧美午夜电影在线播放| 激情五月婷婷久久| 国产人久久人人人人爽| 欧美成人在线免费观看| 日本一级黄色录像| 亚洲第一在线综合网站| 日本午夜精品理论片a级appf发布| 国产人与zoxxxx另类91| 国产精品久久观看| 尤物网站在线看| 婷婷久久综合网| 亚洲第五色综合网| 日韩电影二区| 波多野结衣中文字幕一区二区三区| 91短视频推广| 青青草原一区二区| 亚洲一区二区图片| 欧美一区2区| 欧美日韩美女一区二区| 老司机福利在线视频| 免费男女羞羞的视频网站主页在线观看| 26uuu色噜噜精品一区| 成人av动漫| 狠狠色噜噜狠狠狠狠黑人| 99精品桃花视频在线观看| eeuss影院95999部| 777琪琪电影午夜理伦片| 免费看一级视频| 亚洲一二三四久久| 日韩精品免费一区二区夜夜嗨| 综合久久婷婷| 在线电影欧美成精品| 久久国产精品免费观看| 国产网红在线观看| 久久久久久国产精品免费播放| 九九九久久久| 午夜福利视频一区二区| 国产精品99久久久久久董美香| 日韩精品在线中文字幕| jizzjizz韩国| 亚州欧美一区三区三区在线| 99热国产在线| 亚洲精品国产精品久久| 宅男噜噜噜66国产精品免费| 亚洲精品久久久久久无码色欲四季| 久久久美女视频| 国产精品久久久久久成人| av大片在线看| av手机免费看| 成人精品网站在线观看| 亚洲另类欧美自拍| 日本在线观看大片免费视频| 欧美日韩有码| 免费在线观看av片| 成r视频免费观看在线播放| 电影天堂国产精品| 久久99久国产精品黄毛片入口| 人妻激情偷乱频一区二区三区| av在线不卡播放| 日本一区二区三区四区| 国产成人免费视频网站| 91最新在线视频| 成人精品电影| jk破处视频在线| 欧美第一页浮力影院| av网站手机在线观看| 亚洲人一二三区| 日韩在线一二三| 日韩av电影免费在线观看| 91成人在线视频观看| 亚洲欧洲精品一区二区三区波多野1战4| 欧美又粗又长又爽做受| 亚洲精品国偷拍自产在线观看蜜桃| 在线观看电影av| 国产精品久久久久久久久久久新郎| 成年网址网站在线观看| 久久久av免费| 成人h动漫在线| 亚洲欧美日韩国产中文| 在线天堂中文www官网| 午夜精品久久久久99蜜桃最新版| 91成人免费观看网站| 天堂va蜜桃一区二区三区| 成人影视亚洲图片在线| 少妇一级淫片免费看| 阿v天堂2014| 国产男女爽爽爽| 久久国产欧美日韩精品| 亚洲精品成人无码毛片| 99久久国产综合精品色伊| 日韩日韩日韩日韩日韩| 欧美尤物巨大精品爽| 欧美国产高跟鞋裸体秀xxxhd| 国产精品久久久久久免费观看| 久久久av水蜜桃| 91精品国产91久久综合桃花| 日本免费在线观看| 欧美激情中文字幕| 国产中文字幕乱人伦在线观看| 四虎国产精品永久在线国在线| 亚洲永久激情精品| 久久99国产综合精品免费| 偷偷操不一样的久久| 在线观看欧美www| 在线观看涩涩| 猫咪在线永久网站| 成人3d动漫在线观看| 久久99视频免费| 青草久久伊人| 欧洲vodafonewi精品| 蜜臀av午夜一区二区三区| 春暖花开亚洲一区二区三区| 国产美女直播视频一区| av高清不卡| 欧美激情综合五月色丁香| 久久99在线观看| 四虎成人免费视频| 久久久综合九色合综国产精品| 九九免费精品视频在线观看| 久久久久久久久久久99999| 99re国产在线播放| 成人动漫在线视频| 日本三级福利片| 久久99国产精品久久久久久久久| 免费激情小视频| 卡一卡二卡三在线观看| 美女尤物国产一区| 美女搞黄视频在线观看| 无码人妻精品一区二区三区蜜桃91| 俄罗斯男人又粗又大| 性生活视频网站| 色天堂在线视频| 中国女人内谢25xxxxx| 国产精品系列在线播放| 天天av综合| 精品国产无码一区二区三区| 鲁一鲁一鲁一鲁一av| 亚洲精品v亚洲精品v日韩精品| av在线二区| 亚洲伊人精品酒店| 99精品欧美一区二区| 亚洲一区中文字幕永久在线| 欧美美女喷水视频| 韩国成人动漫| 亚洲日本在线观看| 玖草视频在线| 国产一区二区三区在线观看免费视频| 国产午夜精品理论片在线| 欧美午夜精品一区二区三区| 天堂色在线视频| av在线影院| 婷婷综合五月| 久久久久亚洲天堂| 成人日韩在线视频| 欧美黄页免费|