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

首頁 > 編程 > PHP > 正文

PHP各種版本區別對比詳解

2020-03-22 18:41:49
字體:
來源:轉載
供稿:網友
截至目前(2015.1), PHP 的最新穩定版本是 PHP5.5, 但有差不多一半的用戶仍在使用已經不在維護 的 PHP5.2, 其余的一半用戶在使用 PHP5.3 .因為 PHP 那“集百家之長”的蛋疼語法,加上社區氛圍不好,很多人對新版本,新特征并無興趣。
本文將會介紹自 PHP5.2 起,直至 PHP5.6 中增加的新特征。

  • PHP5.2 以前:autoload, PDO 和 html' target='_blank'>MySQLi, 類型約束

  • PHP5.2:JSON 支持

  • PHP5.3:棄用的功能,匿名函數,新增魔術方法,命名空間,后期靜態綁定,Heredoc 和 Nowdoc, const, 三元運算符,Phar

  • PHP5.4:Short Open Tag, 數組簡寫形式,Traits, 內置 Web 服務器,細節修改

  • PHP5.5:yield, list() 用于 foreach, 細節修改

  • PHP5.6: 常量增強,可變函數參數,命名空間增強

注:已于2011年1月停止支持: http://www.php.net/eol.php
注:http://w3techs.com/technologies/details/pl-php/5/all

PHP5.2以前

(2006前)
順便介紹一下 PHP5.2 已經出現但值得介紹的特征。

autoload

大家可能都知道 __autoload() 函數,如果定義了該函數,那么當在代碼中使用一個未定義的類的時候,該函數就會被調用,你可以在該函數中加載相應的類實現文件,如:

function __autoload($classname){    require_once("{$classname}.php")}

但該函數已經不被建議使用,原因是一個項目中僅能有一個這樣的 __autoload() 函數,因為 PHP 不允許函數重名。但當你使用一些類庫的時候,難免會出現多個 autoload 函數的需要,于是 spl_autoload_register() 取而代之:

spl_autoload_register(function($classname){    require_once("{$classname}.php")});

spl_autoload_register() 會將一個函數注冊到 autoload 函數列表中,當出現未定義的類的時候,SPL [注] 會按照注冊的倒序逐個調用被注冊的 autoload 函數,這意味著你可以使用 spl_autoload_register() 注冊多個 autoload 函數.

注:SPL: Standard PHP Library, 標準 PHP 庫, 被設計用來解決一些經典問題(如數據結構).

PDO 和 MySQLi

即 PHP Data Object, PHP 數據對象,這是 PHP 的新式數據庫訪問接口。

按照傳統的風格,訪問 MySQL 數據庫應該是這樣子:

// 連接到服務器,選擇數據庫$conn = mysql_connect("localhost", "user", "password");mysql_select_db("database");// 執行 SQL 查詢$type = $_POST['type'];$sql = "SELECT * FROM `table` WHERE `type` = {$type}";$result = mysql_query($sql);// 打印結果while($row = mysql_fetch_array($result, MYSQL_ASSOC)){    foreach($row as $k => $v)        print "{$k}: {$v}/n";}// 釋放結果集,關閉連接mysql_free_result($result);mysql_close($conn);

為了能夠讓代碼實現數據庫無關,即一段代碼同時適用于多種數據庫(例如以上代碼僅僅適用于MySQL),PHP 官方設計了 PDO.
除此之外,PDO 還提供了更多功能,比如:

  • 面向對象風格的接口

  • SQL預編譯(prepare), 占位符語法

  • 更高的執行效率,作為官方推薦,有特別的性能優化

  • 支持大部分SQL數據庫,更換數據庫無需改動代碼

上面的代碼用 PDO 實現將會是這樣:

// 連接到數據庫$conn = new PDO("mysql:host=localhost;dbname=database", "user", "password");// 預編譯SQL, 綁定參數$query = $conn->prepare("SELECT * FROM `table` WHERE `type` = :type");$query->bindParam("type", $_POST['type']);// 執行查詢并打印結果foreach($query->execute() as $row){    foreach($row as $k => $v)        print "{$k}: {$v}/n";}

PDO 是官方推薦的,更為通用的數據庫訪問方式,如果你沒有特殊需求,那么你最好學習和使用 PDO.
但如果你需要使用 MySQL 所特有的高級功能,那么你可能需要嘗試一下 MySQLi, 因為 PDO 為了能夠同時在多種數據庫上使用,不會包含那些 MySQL 獨有的功能。

MySQLi 是 MySQL 的增強接口,同時提供面向過程和面向對象接口,也是目前推薦的 MySQL 驅動,舊的C風格 MySQL 接口將會在今后被默認關閉。
MySQLi 的用法和以上兩段代碼相比,沒有太多新概念,在此不再給出示例,可以參見 PHP 網址文檔 [注]。

注:http://www.php.net/manual/en/mysqli.quickstart.php

類型約束

通過類型約束可以限制參數的類型,不過這一機制并不完善,目前僅適用于類和 callable(可執行類型) 以及 array(數組), 不適用于 string 和 int.

// 限制第一個參數為 MyClass, 第二個參數為可執行類型,第三個參數為數組function MyFunction(MyClass $a, callable $b, array $c){    // ...}

PHP5.2

(2006-2011)

JSON 支持

包括 json_encode(), json_decode() 等函數,JSON 算是在 Web 領域非常常用的數據交換格式,可以被 JS 直接支持,JSON 實際上是 JS 語法的一部分。
JSON 系列函數,可以將 PHP 中的數組結構與 JSON 字符串進行轉換:

$array = ["key" => "value", "array" => [1, 2, 3, 4]];$json = json_encode($array);echo "{$json}/n";$object = json_decode($json);print_r($object);

輸出:

{"key":"value","array":[1,2,3,4]}stdClass Object(    [key] => value    [array] => Array        (            [0] => 1            [1] => 2            [2] => 3            [3] => 4        ))

值得注意的是 json_decode() 默認會返回一個對象而非數組,如果需要返回數組需要將第二個參數設置為 true.

PHP5.3

(2009-2012)

PHP5.3 算是一個非常大的更新,新增了大量新特征,同時也做了一些不向下兼容的修改。

棄用的功能

以下幾個功能被棄用,若在配置文件中啟用,則 PHP 會在運行時發出警告。

Register Globals

這是 php.ini 中的一個選項(register_globals), 開啟后會將所有表單變量(GET和GET和_POST)注冊為全局變量.
看下面的例子:

if(isAuth())    $authorized = true;if($authorized)    include("page.php");

這段代碼在通過驗證時,將 authorized設置為true.然后根據authorized設置為true.然后根據authorized 的值來決定是否顯示頁面.

但由于并沒有事先把 $authorized 初始化為 false, 當 register_globals 打開時,可能訪問 /auth.php?authorized=1 來定義該變量值,繞過身份驗證。

該特征屬于歷史遺留問題,在 PHP4.2 中被默認關閉,在 PHP5.4 中被移除。

Magic Quotes

對應 php.ini 中的選項 magic_quotes_gpc, 這個特征同樣屬于歷史遺留問題,已經在 PHP5.4 中移除。

該特征會將所有用戶輸入進行轉義,這看上去不錯,在第一章我們提到過要對用戶輸入進行轉義。
但是 PHP 并不知道哪些輸入會進入 SQL , 哪些輸入會進入 Shell, 哪些輸入會被顯示為 HTML, 所以很多時候這種轉義會引起混亂。

Safe Mode

很多虛擬主機提供商使用 Safe Mode 來隔離多個用戶,但 Safe Mode 存在諸多問題,例如某些擴展并不按照 Safe Mode 來進行權限控制。
PHP官方推薦使用操作系統的機制來進行權限隔離,讓Web服務器以不同的用戶權限來運行PHP解釋器,請參見第一章中的最小權限原則.

匿名函數

也叫閉包(Closures), 經常被用來臨時性地創建一個無名函數,用于回調函數等用途。

$func = function($arg){    print $arg;};$func("Hello World");

以上代碼定義了一個匿名函數,并賦值給了 $func.
可以看到定義匿名函數依舊使用 function 關鍵字,只不過省略了函數名,直接是參數列表。

然后我們又調用了 $func 所儲存的匿名函數。

匿名函數還可以用 use 關鍵字來捕捉外部變量:

function arrayPlus($array, $num){    array_walk($array, function(&$v) use($num){        $v += $num;    });}

上面的代碼定義了一個 arrayPlus() 函數(這不是匿名函數), 它會將一個數組(array)中的每一項,加上一個指定的數字(array)中的每一項,加上一個指定的數字(num).

在 arrayPlus() 的實現中,我們使用了 array_walk() 函數,它會為一個數組的每一項執行一個回調函數,即我們定義的匿名函數。
在匿名函數的參數列表后,我們用 use 關鍵字將匿名函數外的 $num 捕捉到了函數內,以便知道到底應該加上多少。

魔術方法:__invoke(), __callStatic()

PHP 的面向對象體系中,提供了若干“魔術方法”,用于實現類似其他語言中的“重載”,如在訪問不存在的屬性、方法時觸發某個魔術方法。

隨著匿名函數的加入,PHP 引入了一個新的魔術方法 __invoke().
該魔術方法會在將一個對象作為函數調用時被調用:

class A{    public function __invoke($str)    {        print "A::__invoke(): {$str}";    }}$a = new A;$a("Hello World");

輸出毫無疑問是:

A::__invoke(): Hello World

__callStatic() 則會在調用一個不存在的靜態方法時被調用。

命名空間

PHP的命名空間有著前無古人后無來者的無比蛋疼的語法:

<?php// 命名空間的分隔符是反斜杠,該聲明語句必須在文件第一行。// 命名空間中可以包含任意代碼,但只有 **類, 函數, 常量** 受命名空間影響。namespace XXOO/Test;// 該類的完整限定名是 /XXOO/Test/A , 其中第一個反斜杠表示全局命名空間。class A{}// 你還可以在已經文件中定義第二個命名空間,接下來的代碼將都位于 /Other/Test2 .namespace Other/Test2;// 實例化來自其他命名空間的對象:$a = new /XXOO/Test/A;class B{}// 你還可以用花括號定義第三個命名空間namespace Other {    // 實例化來自子命名空間的對象:    $b = new Test2/B;    // 導入來自其他命名空間的名稱,并重命名,    // 注意只能導入類,不能用于函數和常量。    use /XXOO/Test/A as ClassA}

更多有關命名空間的語法介紹請參見網址 [注].

命名空間時常和 autoload 一同使用,用于自動加載類實現文件:

spl_autoload_register(    function ($class) {        spl_autoload(str_replace("//", "/", $class));    });

當你實例化一個類 /XXOO/Test/A 的時候,這個類的完整限定名會被傳遞給 autoload 函數,autoload 函數將類名中的命名空間分隔符(反斜杠)替換為斜杠,并包含對應文件。
這樣可以實現類定義文件分級儲存,按需自動加載。

注:http://www.php.net/manual/zh/language.namespaces.php

后期靜態綁定

PHP 的 OPP 機制,具有繼承和類似虛函數的功能,例如如下的代碼:

class A{    public function callFuncXXOO()    {        print $this->funcXXOO();    }    public function funcXXOO()    {        return "A::funcXXOO()";    }}class B extends A{    public function funcXXOO()    {        return "B::funcXXOO";    }}$b = new B;$b->callFuncXXOO();

輸出是:

B::funcXXOO

可以看到,當在 A 中使用 $this->funcXXOO() 時,體現了“虛函數”的機制,實際調用的是 B::funcXXOO().
然而如果將所有函數都改為靜態函數:

class A{    static public function callFuncXXOO()    {        print self::funcXXOO();    }    static public function funcXXOO()    {        return "A::funcXXOO()";    }}class B extends A{    static public function funcXXOO()    {        return "B::funcXXOO";    }}$b = new B;$b->callFuncXXOO();

情況就沒這么樂觀了,輸出是:

A::funcXXOO()

這是因為 self 的語義本來就是“當前類”,所以 PHP5.3 給 static 關鍵字賦予了一個新功能:后期靜態綁定:

class A{    static public function callFuncXXOO()    {        print static::funcXXOO();    }    // ...}// ...

這樣就會像預期一樣輸出了:

B::funcXXOO

Heredoc 和 Nowdoc

PHP5.3 對 Heredoc 以及 Nowdoc 進行了一些改進,它們都用于在 PHP 代碼中嵌入大段字符串。

Heredoc 的行為類似于一個雙引號字符串:

$name = "MyName";echo <<< TEXTMy name is "{$name}".TEXT;

Heredoc 以三個左尖括號開始,后面跟一個標識符(TEXT), 直到一個同樣的頂格的標識符(不能縮進)結束。
就像雙引號字符串一樣,其中可以嵌入變量。

Heredoc 還可以用于函數參數,以及類成員初始化:

var_dump(<<<EODHello WorldEOD);class A{    const xx = <<< EODHello WorldEOD;    public $oo = <<< EODHello WorldEOD;}

Nowdoc 的行為像一個單引號字符串,不能在其中嵌入變量,和 Heredoc 唯一的區別就是,三個左尖括號后的標識符要以單引號括起來:

$name = "MyName";echo <<< 'TEXT'My name is "{$name}".TEXT;

輸出:

My name is "{$name}".

用 const 定義常量

PHP5.3 起同時支持在全局命名空間和類中使用 const 定義常量。

舊式風格:

define("XOOO", "Value");

新式風格:

const XXOO = "Value";

const 形式僅適用于常量,不適用于運行時才能求值的表達式:

// 正確const XXOO = 1234;// 錯誤const XXOO = 2 * 617;

三元運算符簡寫形式

舊式風格:

echo $a ? $a : "No Value";

可簡寫成:

echo $a ?: "No Value";

即如果省略三元運算符的第二個部分,會默認用第一個部分代替。

Phar

Phar即PHP Archive, 起初只是Pear中的一個庫而已,后來在PHP5.3被重新編寫成C擴展并內置到 PHP 中。
Phar用來將多個 .php 腳本打包(也可以打包其他文件)成一個 .phar 的壓縮文件(通常是ZIP格式)。
目的在于模仿 Java 的 .jar, 不對,目的是為了讓發布PHP應用程序更加方便。同時還提供了數字簽名驗證等功能。

.phar 文件可以像 .php 文件一樣,被PHP引擎解釋執行,同時你還可以寫出這樣的代碼來包含(require) .phar 中的代碼:

require("xxoo.phar");require("phar://xxoo.phar/xo/ox.php");

更多信息請參見網址 [注].

注:http://www.php.net/manual/zh/phar.using.intro.php

PHP5.4

(2012-2013)

Short Open Tag

Short Open Tag 自 PHP5.4 起總是可用。
在這里集中講一下有關 PHP 起止標簽的問題。即:

<?php// Code...?>

通常就是上面的形式,除此之外還有一種簡寫形式:

<? /* Code... */ ?>

還可以把

<?php echo $xxoo;?>

簡寫成:

<?= $xxoo;?>

這種簡寫形式被稱為 Short Open Tag, 在 PHP5.3 起被默認開啟,在 PHP5.4 起總是可用。
使用這種簡寫形式在 HTML 中嵌入 PHP 變量將會非常方便。

對于純 PHP 文件(如類實現文件), PHP 官方建議頂格寫起始標記,同時 省略 結束標記。
這樣可以確保整個 PHP 文件都是 PHP 代碼,沒有任何輸出,否則當你包含該文件后,設置 Header 和 Cookie 時會遇到一些麻煩 [注].

注:Header 和 Cookie 必須在輸出任何內容之前被發送。

數組簡寫形式

這是非常方便的一項特征!

// 原來的數組寫法$arr = array("key" => "value", "key2" => "value2");// 簡寫形式$arr = ["key" => "value", "key2" => "value2"];

Traits

所謂Traits就是“構件”,是用來替代繼承的一種機制。PHP中無法進行多重繼承,但一個類可以包含多個Traits.

// Traits不能被單獨實例化,只能被類所包含trait SayWorld{    public function sayHello()    {        echo 'World!';    }}class MyHelloWorld{    // 將SayWorld中的成員包含進來    use SayWorld;}$xxoo = new MyHelloWorld();// sayHello() 函數是來自 SayWorld 構件的$xxoo->sayHello();

Traits還有很多神奇的功能,比如包含多個Traits, 解決沖突,修改訪問權限,為函數設置別名等等。
Traits中也同樣可以包含Traits. 篇幅有限不能逐個舉例,詳情參見網址 [注].

注:http://www.php.net/manual/zh/language.oop5.traits.php

內置 Web 服務器

PHP從5.4開始內置一個輕量級的Web服務器,不支持并發,定位是用于開發和調試環境。

在開發環境使用它的確非常方便。

php -S localhost:8000

這樣就在當前目錄建立起了一個Web服務器,你可以通過 http://localhost:8000/ 來訪問。
其中localhost是監聽的ip,8000是監聽的端口,可以自行修改。

很多應用中,都會進行URL重寫,所以PHP提供了一個設置路由腳本的功能:

php -S localhost:8000 index.php

這樣一來,所有的請求都會由index.php來處理。

你還可以使用 XDebug 來進行斷點調試。

細節修改

PHP5.4 新增了動態訪問靜態方法的方式:

$func = "funcXXOO";A::{$func}();

新增在實例化時訪問類成員的特征:

(new MyClass)->xxoo();

新增支持對函數返回數組的成員訪問解析(這種寫法在之前版本是會報錯的):

print func()[0];

PHP5.5

(2013起)

yield

yield關鍵字用于當函數需要返回一個迭代器的時候, 逐個返回值。

function number10(){    for($i = 1; $i <= 10; $i += 1)        yield $i;}

該函數的返回值是一個數組:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

list() 用于 foreach

可以用 list() 在 foreach 中解析嵌套的數組:

$array = [    [1, 2, 3],    [4, 5, 6],];foreach ($array as list($a, $b, $c))    echo "{$a} {$b} {$c}/n";

結果:

細節修改

不推薦使用 mysql 函數,推薦使用 PDO 或 MySQLi, 參見前文。
不再支持Windows XP.

可用 MyClass::class 取到一個類的完整限定名(包括命名空間)。

empty() 支持表達式作為參數。

try-catch 結構新增 finally 塊。

PHP5.6

更好的常量

定義常量時允許使用之前定義的常量進行計算:

const A = 2;const B = A + 1;class C{    const STR = "hello";    const STR2 = self::STR + ", world";}

允許常量作為函數參數默認值:

function func($arg = C::STR2)

更好的可變函數參數

用于代替 func_get_args()

function add(...$args){    $result = 0;    foreach($args as $arg)        $result += $arg;    return $result;}

同時可以在調用函數時,把數組展開為函數參數:

$arr = [2, 3];add(1, ...$arr);// 結果為 6

命名空間

命名空間支持常量和函數:

namespace Name/Space {    const FOO = 42;    function f() { echo __FUNCTION__."/n"; }}namespace {    use const Name/Space/FOO;    use function Name/Space/f;    echo FOO."/n";    f();}

相關推薦:

php幾個版本區別

以上就是PHP各種版本區別對比詳解的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩经典中文字幕在线观看| 91精品国产高清久久久久久91| 欧美精品久久久久久久久久| 欧美性xxxx极品高清hd直播| 国产综合久久久久| 91在线视频成人| 久久久国产一区| 国产精品高清在线观看| 亚洲国产精品悠悠久久琪琪| 欧洲一区二区视频| 亚洲激情第一页| 国产精品综合不卡av| 日本国产精品视频| 成人精品在线视频| 国产欧美一区二区三区久久| 欧美亚洲在线播放| 国产不卡av在线| 国产精品欧美激情在线播放| 国产美女91呻吟求| 国产国产精品人在线视| 午夜精品久久久久久久白皮肤| 97精品在线观看| 久久久免费在线观看| 日韩成人在线免费观看| 欧美极品少妇xxxxⅹ裸体艺术| 久久久久久久亚洲精品| 欧美日韩国产精品| 国产精品自拍偷拍| 久久精品亚洲国产| 日本一区二三区好的精华液| 日韩va亚洲va欧洲va国产| 91精品国产高清久久久久久| 俺去亚洲欧洲欧美日韩| 欧美午夜激情在线| 日韩av在线最新| 国产又爽又黄的激情精品视频| 国产成人精品av| 欧美性感美女h网站在线观看免费| 91精品国产精品| 在线观看国产精品淫| 国内精品一区二区三区| 日韩电视剧在线观看免费网站| 81精品国产乱码久久久久久| 亚洲国产成人在线视频| 国产精品一区二区久久国产| 亚洲精品福利在线观看| 国产成人免费av电影| 欧美日韩性生活视频| 亚洲自拍在线观看| 欧美激情精品久久久久久黑人| 成人精品在线观看| 日韩在线观看免费高清完整版| 欧美日韩国产成人在线| 精品日韩美女的视频高清| 亚洲石原莉奈一区二区在线观看| 日本一区二区在线免费播放| 国产精品福利在线| 国产精品自在线| 亚洲福利在线视频| 国内精品久久久久影院 日本资源| 国产精品成人av性教育| 欧美激情在线狂野欧美精品| 久久精品中文字幕| 成人免费视频网址| 国产在线久久久| 亚洲人成电影网站色xx| 国产精品久久激情| 亚洲аv电影天堂网| 精品香蕉一区二区三区| 欧美成人免费va影院高清| 精品久久久一区| 91精品国产九九九久久久亚洲| 久久国产精品久久久| 亚洲色图综合久久| 精品国产91久久久| 欧美一区亚洲一区| 欧美成人h版在线观看| 亚洲精品在线不卡| 久久久久久国产精品三级玉女聊斋| 久久中文字幕在线| 成人疯狂猛交xxx| 日韩电视剧免费观看网站| 久久婷婷国产麻豆91天堂| 欧美日韩福利在线观看| 欧美与黑人午夜性猛交久久久| 少妇av一区二区三区| 国产精品美女主播在线观看纯欲| 国产美女久久精品| 亚洲白虎美女被爆操| 国产视频观看一区| 欧美日韩一区二区三区在线免费观看| 亚洲欧洲日韩国产| 国产99久久精品一区二区 夜夜躁日日躁| 最新91在线视频| 中文字幕在线亚洲| 久久免费少妇高潮久久精品99| 色婷婷综合久久久久| 国产精品女主播| 美女福利精品视频| 欧美视频国产精品| 国产亚洲美女久久| 欧美猛男性生活免费| 777午夜精品福利在线观看| 欧美孕妇与黑人孕交| 欧美精品免费在线| 亚洲精品福利免费在线观看| 亚洲欧美第一页| 91精品国产91久久久久| 久久久久久久影院| 91精品在线一区| 尤物九九久久国产精品的分类| 欧美综合国产精品久久丁香| 久久影视电视剧免费网站| 色777狠狠综合秋免鲁丝| 欧美大尺度电影在线观看| 国产精品一区专区欧美日韩| 久久国产一区二区三区| 日韩欧美在线视频| 成人羞羞国产免费| 亚洲国产精品va在线| 成人久久一区二区三区| 97久久精品人搡人人玩| 国产精品一久久香蕉国产线看观看| 美日韩精品视频免费看| 国产男女猛烈无遮挡91| 97国产精品视频人人做人人爱| 国产精品pans私拍| 欧美做爰性生交视频| 亚洲精品av在线播放| 亚洲最大的网站| 亚洲xxxx18| 欧美日韩精品国产| 中文综合在线观看| 91精品在线一区| 浅井舞香一区二区| 成人在线免费观看视视频| 日韩欧美一区二区三区久久| 中文字幕一区二区精品| 久久久久久久国产精品视频| 亚州成人av在线| 日本精品免费一区二区三区| 久久久亚洲网站| 欧美日韩在线视频一区二区| 欧美高跟鞋交xxxxhd| 免费91在线视频| 欧美性生活大片免费观看网址| 亚洲精品久久视频| 亚洲伊人久久大香线蕉av| 日韩视频免费看| 国产精品专区h在线观看| 欧美日韩人人澡狠狠躁视频| 俺去亚洲欧洲欧美日韩| 亚洲日韩第一页| 国产精品久久久久影院日本| 午夜精品在线观看| 色哟哟网站入口亚洲精品| 欧美成人一区二区三区电影| 高清视频欧美一级| 91成人在线播放| 伊人久久男人天堂| 精品日本美女福利在线观看| 日日噜噜噜夜夜爽亚洲精品| 亚洲性av网站| www.日本久久久久com.|