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

首頁 > 開發(fā) > PHP > 正文

Symfony學習十分鐘入門經(jīng)典教程

2024-05-04 23:42:44
字體:
來源:轉載
供稿:網(wǎng)友
這篇文章主要介紹了Symfony學習十分鐘入門教程,詳細介紹了Symfony的安裝配置,項目初始化,建立Bundle,設計實體,添加約束,增刪改查等基本操作技巧,需要的朋友可以參考下
 

Symfony是一個強大的基于PHP的Web開發(fā)框架,在這里我們用十分鐘的時間來做一個簡單的增刪改查的程序, 任何不熟悉Symfony的人都可以通過這個教程完成自己的第一個Symfony程序。

如果需要這個樣例程序的全部源代碼,可以訪問 這里 ,或者通過下面的方式獲取源代碼:

$git clone https://github.com/saharabear/symfony-sample.git

項目初始化

首先,需要你在自己的電腦中安裝PHP環(huán)境并安裝git.這方面的內(nèi)容屬于基礎內(nèi)容,網(wǎng)絡上有大量的教程,在這里就不多介紹了,不過要提示的一點是:PHP從5.4開始, 已經(jīng)內(nèi)置了測試用服務器,Symfony也擁抱了這個由PHP內(nèi)置的服務器,只需要在命令行中使用$php app/console server:run 就可以 啟動基于Symfony框架的PHP程序進行測試,因此不必要使用XAMPP這一類復雜的集成環(huán)境,直接安裝PHP并保證在命令行下可以執(zhí)行php命令就可以了。

然后,我們需要建立一個新的目錄,名字叫symfony-sample,Symfony使用一個叫composer的程序管理各種類庫的依賴關系,因此如果你的機器上 安裝了composer,就可以直接跳過這一步,如果沒有安裝,可以用下面的命令安裝最新版本的composer.

$cd symfony-sample$curl -sS https://getcomposer.org/installer | php

如果希望了解更多關于composer的信息,可以參考這個網(wǎng)站。

安裝完成composer后,我們可以開始安裝當前最新版本的Symfony2.6.0

復制代碼代碼如下:
$php composer.phar create-project symfony/framework-standard-edition mysampleproject/ 2.6.0

 

安裝過程中,需要填寫數(shù)據(jù)庫等信息,在這個例子中,我們會使用mysql數(shù)據(jù)庫,因此你可以一路按回車鍵,先不要關心這一切配置應該如何填寫。反正 Symfony會在安裝成功后,生成一個配置文件,叫app/config/parameters.yml,下面我會提供一個parameters.yml文件的 內(nèi)容樣本,只要復制進去就可以了,先不必關注這么多細節(jié)。

剛才創(chuàng)建mysampleproject以后,在symfony-sample目錄下生成了mysampleproject目錄,我習慣于將程序放在項目的根目錄下,因此執(zhí)行下面的幾個命令, 就可以把項目從symfony-sample/mysampleproject目錄中,移到symfony-sample目錄中

$mv mysampleproject/* ./$rm -rf mysampleproject

理論上來講,我們已經(jīng)完成了Symfony項目的創(chuàng)建,不過剛才提到的parameters.yml文件還沒有解釋。這個parameters.yml是Symfony的全局配置文件, 無論是數(shù)據(jù)庫配置信息還是其他的各種配置,都可以放在這個文件中。下面是我們需要使用的測試用的parameters.yml,記得把最后一行的值修改為一個隨機值

# This file is auto-generated during the composer installparameters:  database_driver: pdo_mysql  database_host: localhost  database_port: 3306  database_name: symfony  database_user: root  database_password: root  mailer_transport: smtp  mailer_host: localhost  mailer_user: null  mailer_password: null  locale: en  secret: ChangeThisLineAsYouWish_ioiuqwoieru

直接用這段,替換掉app/config/parameters.yml文件中的內(nèi)容,然后編輯app/config/config.yml,找到下面幾行,把最后一行添加進去并保存。

driver:  "%database_driver%"host:   "%database_host%"port:   "%database_port%"dbname:  "%database_name%"user:   "%database_user%"password: "%database_password%"charset: UTF8path:   "%database_path%"

好了,這樣我們就完成了基本的Symfony程序的配置,你現(xiàn)在有了一個配置好了數(shù)據(jù)庫,郵件發(fā)送器,日志系統(tǒng)的基本程序原型。下面,我們就開始編寫自己的Symfony程序。

建立Bundle

先說一下什么是Bundle。Symfony是以DI為核心的,可能你不知道什么是DI,沒關系,這不重要,你可以把Symfony的DI理解成為一個功能池,把程序中的所有功能都做成Bundle,或者你把Bundle理解成一組php文件組合而成的程序就可以。 比如用戶注冊,登錄功能做成一個Bundle,你也可以把一個論壇的發(fā)帖回貼功能做成一個Bundle,自然也可以把文章管理做成一個Bundle,然后用一個Bundle去調(diào)用和配置不同的Bundle,那么你就可以把網(wǎng)站組裝起來了,而你寫的各種Bundle,在其他的應用程序中還可以繼續(xù)復用,這樣寫的Bundle越多,可復用性就越強,制作新項目的時候也越有利。

我們現(xiàn)在就來建立自己的Bundle.在命令行中,使用命令:

$php app/console generate:bundleBundle namespace: Symfony/Bundle/SampleBundleBundle name [SymfonySampleBundle]:Target directory [/home/saharabear/workspace/symfony-sample/src]:Configuration format (yml, xml, php, or annotation): ymlDo you want to generate the whole directory structure [no]? yesDo you confirm generation [yes]? yesGenerating the bundle code: OKChecking that the bundle is autoloaded: OKConfirm automatic update of your Kernel [yes]? yesEnabling the bundle inside the Kernel: OKConfirm automatic update of the Routing [yes]? yes

這樣就成功建立了我們的Bundle,名字叫SymfonySampleBundle,我們使用的Bundle namespace是Symfony/Bundle/SampleBundle,這是一種約定,我們還可以建立其他的Bundle,比如Symfony/Bundle/PostBundle, 或者Symfony/Bundle/ArticleBundle,而對應的Bundle name就分別是SymfonyPostBundle或者SymfonyArticleBundle。你也可以自己建立這幾個Bundle,這并不會影響當前我們的教程。

對了,在我們建立的Bundle中,分別會生成下面幾個目錄:

① Entity:這個目錄并不是必須的,很多情況下只有在生成實體的時候才會生成,放置模型,也就是MVC中的M
② Controller:這個目錄會生成DefaultController.php,你可以在這里建立自己的Controller控制器,也就是MVC中的C
③ Resources:這個目錄下面還有子目錄,其中views放置的是模板,也就是MVC中的V,而public放置的是靜態(tài)文件,比如js, css, images等等
④ Tests:放置單元測試與集成測試的代碼,在這個樣例程序中暫時不需要
⑤ DependencyInjection:與DI相關的目錄,暫時也不需要去了解
⑥ SymfonySampleBundle.php:當前這個Bundle的定義文件

更多細節(jié)可以去閱讀Symfony 的官方文檔,而當前的重點是把這個Symfony的樣例程序運行起來。

設計實體

在MVC的設計理念中,M是最重要的,因為M表達的內(nèi)容是業(yè)務邏輯。我覺得如果這個地方往深入去探討,會一直探討到富血模型或者貧血模型,不過目前在這個教程中根本 不需要考慮這么多,你只需要知道實體就是MVC中的M,用于表達業(yè)務邏輯。比如說,我們要開發(fā)一個文章管理的系統(tǒng),那么文章本身就代表的業(yè)務邏輯。比如,我們的文章要有 標題,內(nèi)容,作者,那么這三項就屬于業(yè)務邏輯,而標題不能夠為空,不能超過200長度,內(nèi)容不能為空,作者卻是可以為空的,這些也屬于業(yè)務邏輯。同時,這個文章需要被 存儲起來,比如存儲到數(shù)據(jù)庫中,那么這個M就應該能夠映射到數(shù)據(jù)庫的表中。我們把這個M,叫實體。

還是少說廢話,直接上代碼。那么如何建立實體呢?當然不是從頭一點一點地寫,而是直接用下面的命令生成:

$php app/console generate:doctrine:entityWelcome to the Doctrine2 entity generatorThis command helps you generate Doctrine2 entities.First, you need to give the entity name you want to generate.You must use the shortcut notation like AcmeBlogBundle:Post.The Entity shortcut name: SymfonySampleBundle:ArticleDetermine the format to use for the mapping information.Configuration format (yml, xml, php, or annotation) [annotation]:ymlInstead of starting with a blank entity, you can add some fields now.Note that the primary key will be added automatically (named id).Available types: array, simple_array, json_array, object,boolean, integer, smallint, bigint, string, text, datetime, datetimetz,date, time, decimal, float, blob, guid.New field name (press to stop adding fields): titleField type [string]:Field length [255]: 200New field name (press to stop adding fields): contentField type [string]: textNew field name (press to stop adding fields): authorField type [string]:Field length [255]: 20New field name (press to stop adding fields):Do you want to generate an empty repository class [no]? yesSummary before generationYou are going to generate a "SymfonySampleBundle:Article" Doctrine2 entityusing the "yml" format.Do you confirm generation [yes]? yesEntity generationGenerating the entity code: OKYou can now start using the generated code!

經(jīng)過這些命令,你會發(fā)現(xiàn)在Entity中建立了新的文件Article.php,代碼如下:

namespace Symfony/Bundle/SampleBundle/Entity;use Doctrine/ORM/Mapping as ORM;/** * Article * * @ORM/Table() * @ORM/Entity(repositoryClass="Symfony/Bundle/SampleBundle/Entity/ArticleRepository") */class Article{  /**   * @var integer   *   * @ORM/Column(name="id", type="integer")   * @ORM/Id   * @ORM/GeneratedValue(strategy="AUTO")   */  private $id;  /**   * @var string   *   * @ORM/Column(name="title", type="string", length=200)   */  private $title;  /**   * @var string   *   * @ORM/Column(name="content", type="text")   */  private $content;  /**   * @var string   *   * @ORM/Column(name="author", type="string", length=20)   */  private $author;  /**   * Get id   *   * @return integer   */  public function getId()  {    return $this->id;  }  /**   * Set title   *   * @param string $title   * @return Article   */  public function setTitle($title)  {    $this->title = $title;    return $this;  }  /**   * Get title   *   * @return string   */  public function getTitle()  {    return $this->title;  }  /**   * Set content   *   * @param string $content   * @return Article   */  public function setContent($content)  {    $this->content = $content;    return $this;  }  /**   * Get content   *   * @return string   */  public function getContent()  {    return $this->content;  }  /**   * Set author   *   * @param string $author   * @return Article   */  public function setAuthor($author)  {    $this->author = $author;    return $this;  }  /**   * Get author   *   * @return string   */  public function getAuthor()  {    return $this->author;  }}

你可以一行不改地使用這些代碼。這時候我們再來做幾個神奇的操作:

復制代碼代碼如下:
$php app/console doctrine:schema:update --force

 

這個操作,已經(jīng)幫助你通過Article.php建立了數(shù)據(jù)庫和數(shù)據(jù)表,你不需要自己操作這個過程,下面我們還會對Article.php進行改造,而到時候只需要重新 執(zhí)行上面的這個操作,Symfony會幫助你自動修改數(shù)據(jù)庫的表結構。

添加約束

上面我們創(chuàng)建了Article.php,既然這個實體代表了具體的業(yè)務邏輯,因此我們要考慮幾個現(xiàn)實的問題:

1. 用戶必須填寫標題和內(nèi)容
2. 用戶填寫的標題不能超過200個字
3. 用戶可以不填寫作者

這些就屬于業(yè)務邏輯,而我們可以修改Article.php如下,以增加相應的業(yè)務邏輯的約束:

namespace Symfony/Bundle/SampleBundle/Entity;use Doctrine/ORM/Mapping as ORM;use Symfony/Component/Validator/Constraints as Assert;/** * Article * * @ORM/Table() * @ORM/Entity(repositoryClass="Symfony/Bundle/SampleBundle/Entity/ArticleRepository") */class Article{  /**   * @var integer   *   * @ORM/Column(name="id", type="integer")   * @ORM/Id   * @ORM/GeneratedValue(strategy="AUTO")   */  private $id;  /**   * @var string   * @Assert/NotBlank(message="標題不可為空")   * @Assert/Length(   *   max=200,   *   maxMessage="標題不能超過200個字"   * )   * @ORM/Column(name="title", type="string", length=200)   */  private $title;  /**   * @var string   *   * @Assert/NotBlank(message="文章內(nèi)容不可為空")   * @ORM/Column(name="content", type="text")   */  private $content;  /**   * @var string   *   * @ORM/Column(name="author", type="string", length=20,nullable=true)   */  private $author;  /**   * Get id   *   * @return integer   */  public function getId()  {    return $this->id;  }  /**   * Set title   *   * @param string $title   * @return Article   */  public function setTitle($title)  {    $this->title = $title;    return $this;  }  /**   * Get title   *   * @return string   */  public function getTitle()  {    return $this->title;  }  /**   * Set content   *   * @param string $content   * @return Article   */  public function setContent($content)  {    $this->content = $content;    return $this;  }  /**   * Get content   *   * @return string   */  public function getContent()  {    return $this->content;  }  /**   * Set author   *   * @param string $author   * @return Article   */  public function setAuthor($author)  {    $this->author = $author;    return $this;  }  /**   * Get author   *   * @return string   */  public function getAuthor()  {    return $this->author;  }}

然后執(zhí)行同步數(shù)據(jù)庫的操作:

$ php app/console doctrine:schema:update --forceUpdating database schema...Database schema updated successfully! "1" queries were executed

增刪改查

好了,我們來做一個針對文章的增刪改查操作。首先請執(zhí)行下面的命令:

$ php app/console generate:doctrine:crud Welcome to the Doctrine2 CRUD generatorThis command helps you generate CRUD controllers and templates.First, you need to give the entity for which you want to generate a CRUD.You can give an entity that does not exist yet and the wizard will helpyou defining it.You must use the shortcut notation like AcmeBlogBundle:Post.The Entity shortcut name: SymfonySampleBundle:ArticleBy default, the generator creates two actions: list and show.You can also ask it to generate "write" actions: new, update, and delete.Do you want to generate the "write" actions [no]? yesDetermine the format to use for the generated CRUD.Configuration format (yml, xml, php, or annotation) [annotation]: ymlDetermine the routes prefix (all the routes will be "mounted" under thisprefix: /prefix/, /prefix/new, ...).Routes prefix [/article]: /article Summary before generationYou are going to generate a CRUD controller for "SymfonySampleBundle:Article"using the "yml" format.Do you confirm generation [yes]? yes CRUD generationGenerating the CRUD code: OKGenerating the Form code: OK You can now start using the generated code!

然后請編輯DefaultController.php中的indexAction如下:

/** * @Route("/",name="welcome") * @Template() */public function indexAction(){  return array();}

編輯Resource/views/Default/index.html.twig內(nèi)容如下:

<a href="{{path('article')}}">文章管理</a>

讓我們看看神奇的事情,啟動內(nèi)置的測試服務器:

$php app/console server:run

好了,我們已經(jīng)完成了這十分鐘的博客,一切的代碼都在Controller/ArticleController.php,Form/ArticleType.php,Resource/views/Article/*.html.twig中,我們已經(jīng)完成了最基本的文章管理功能。當然在你熟悉Symfony以后,未必需要完全依靠Symfony幫你生成這些增刪改查操作,可是起碼Symfony用一個命令讓一切都先運行起來了,這不就是我們所要的原型嗎?

本文永久地址:http://blog.it985.com/5133.html
本文出自 IT985博客 ,轉載時請注明出處及相應鏈接。

希望本文所述對大家基于Symfony框架的PHP程序設計有所幫助。



注:相關教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
亚洲欧洲国产日韩| 91视频国产观看| 婷婷亚洲成人| 国产亚洲毛片| 欧美精品一区二区三区久久| 正义之心1992免费观看全集完整版| 国产剧情日韩欧美| 亚洲国产日韩成人综合天堂| 久久综合一区二区| 欧美人狂配大交3d怪物一区| 美女写真久久影院| 国产综合欧美在线看| 久草在线资源站资源站| 69av视频在线播放| 日本道在线观看一区二区| 另类调教123区| 欧美a在线播放| 国产日韩欧美一区二区三区| 成人午夜剧场视频网站| 欧美色视频一区二区三区在线观看| 久色视频在线观看| 3d欧美精品动漫xxxx无尽| 男人天堂2024| 理论片影音先锋| 影音先锋日韩资源| 日本aⅴ免费视频一区二区三区| 亚洲av综合色区无码一区爱av| 我的公把我弄高潮了视频| 日韩在线网址| 国产日韩一级片| 成人全视频免费观看在线看| 成人午夜免费视频| 日韩特级黄色片| av资源网在线播放| 国产日韩欧美一区二区| 国产91在线免费观看| 可以在线观看的黄色| 成熟亚洲日本毛茸茸凸凹| 九九九久久国产免费| 国产成人午夜99999| 国产视频一区二区在线| 国产chinese中国hdxxxx| 美女的尿口免费视频| 欧美 日韩 国产 精品| 中文字幕视频在线免费欧美日韩综合在线看| 中文在线一二区| 黄色免费的网站| 日韩国产高清影视| 国产精品精品久久久| 日韩欧美一区三区| 国产一区二区三区视频免费观看| 中文字幕亚洲在线观看| 国产又粗又猛又爽又黄| www插插插无码视频网站| 一本一道久久a久久精品蜜桃| 亚洲免费精彩视频| 日韩Av无码精品| 欧美性猛交xxxx黑人| 美女诱惑一区二区| 国内自拍一区| 成人a在线观看| 九九精品视频在线看| 国产无套在线观看| 亚洲成人av观看| 国产一二三区在线观看| 欧美一区二区在线观看视频| 国产女优在线播放| 中文字幕一区二区三区不卡| 午夜国产在线| 亚洲一区欧美激情| 九九久久久久99精品| 日本乱子伦xxxx| 精品国产凹凸成av人网站| 自拍电影在线观看| 久久久久久99久久久精品网站| 欧美性猛交99久久久久99| 国产精品第6页| 免费观看成年人视频在线观看| 亚洲高清乱码| 秋霞午夜剧场| 羞羞的视频在线看| 一区二区三欧美| 欧美成人黑人猛交| 动漫av网站免费观看| 国产999精品久久久久久| 国产精品久久久久久久久电影网| 国产日韩欧美精品在线| 国产无一区二区| 91网页版在线登录入口| 日本福利视频在线| 日韩毛片久久久| 久草在线在线| 在线成人免费| 亚洲欧洲av一区二区三区久久| 日韩毛片一二三区| 欧美激情一区二区久久久| 国产精品伦子伦免费视频| 久久久久久久99| xxx性欧美在线| 欧美永久精品| 国产精品wwww| 鲁大师私人影院在线观看| 韩国三级hd两男一女| 天堂在线资源网| 青青青爽在线视频免费观看| 久久综合丝袜日本网| 色综合色综合色综合| 日韩av手机在线免费观看| 国产精品剧情一区二区在线观看| 美女在线不卡| 四虎在线免费看| 亚洲精品成人免费| 色悠久久久久综合先锋影音下载| 免费看成年人视频在线观看| 成人丝袜18视频在线观看| 色综合久久综合网97色综合| 亚洲午夜一二三区视频| 国产精品中文字幕亚洲欧美| 99精品免费视频| 91精品视频免费在线观看| 久久视频在线| 69av二区| 一区二区三区四区影院| 一区二区精彩视频| 欧美精品videosbestsex另类| 制服丨自拍丨欧美丨动漫丨| 久久久久久久爱| 久久久九九九九| av成人免费看| 一本一本久久| 人人澡人人爽| jizzjizzwww| 国产成人亚洲精品乱码在线观看| 免费女人毛片视频| 亚洲1024| 97在线免费公开视频| 成视频免费观看在线看| 熟女少妇精品一区二区| 精品综合久久久久久97| 在线sese| 666欧美在线视频| 久久精品国语| 18视频在线观看网站| 中文字幕91视频| 国产午夜精品一区二区三区欧美| 色域天天综合网| 日韩欧美综合视频| 亚洲第一香蕉视频| 国产麻豆综合视频在线观看| 国产精品麻豆久久| 亚洲欧洲日本精品| 夜夜嗨av禁果av粉嫩avhd| abab456成人免费网址| 精品国产免费人成电影在线观...| 91激情视频在线| 色内内免费视频播放| 黄色网免费观看| 国产精品久久占久久| 国产精选久久久久久| 久久国产激情视频| 96日本xxxxxⅹxxx17| 久久中文欧美| 日韩免费小视频| 69ww免费视频播放器| 精品日韩在线视频| 天天操精品视频| 91麻豆国产自产在线观看亚洲| 国产馆精品极品| 激情欧美成人久久综合小说| 五月天色网站| 国产日韩在线观看视频| 国产一区二区三区无遮挡| 国产二级一片内射视频播放| 日本wwwwwww| 午夜高潮免费视频| 含羞草激情视频| 成人黄色网址在线观看| 欧美久久精品一级c片| 国产欧美精品日韩区二区麻豆天美| 亚洲精品第一国产综合野| 美女爆乳18禁www久久久久久| 亚洲综合成人在线| 亚洲欧美日韩精品久久奇米色影视| 日韩在线视频在线| 草草影院在线| 加勒比av一区二区| 热久久精品免费视频| 国产福利影院在线观看| 国产wwww| 精品国产伦一区二区三区免费| 日韩精品一区二区亚洲av观看| 日韩丝袜美女视频| 亚洲欧美日韩精品久久| av电影不卡在线观看| jizz亚洲| 欧美成人专区| 日本美女一区二区| 国产写真视频在线观看| 无码人妻丰满熟妇区毛片蜜桃精品| 国精产品一区一区三区mba下载| va视频在线观看| 天天插天天操天天射| 色偷偷av一区二区三区| 久久中文精品视频| 污片在线免费观看| 6080国产精品一区二区| 老熟妇高潮一区二区高清视频| 美女做暖暖视频免费在线观看全部网址91| 蜜桃日韩视频| 欧美久久免费观看| 成人精品视频久久久久| 精品国产欧美一区二区五十路| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲美女精品视频| 欧美亚洲一级二级| 国产美女18xxxx免费视频| 国产嫩草一区二区三区在线观看| 日本大胆欧美人术艺术动态| 国产日韩免费视频| 国产精品亚洲欧美一级在线| 亚洲日本欧美| 亚洲女人视频| 黄色国产精品视频| 91高清视频在线免费观看| 四虎永久在线| 91香蕉视频在线观看| 91免费国产精品| 美女扒开腿让男人桶爽久久动漫| 超碰精品一区二区三区乱码| 婷婷色播视频| 一级全黄少妇性色生活片| 三年中国国语在线播放免费| 欧美裸体在线版观看完整版| 波多野结衣亚洲一区二区| 91精东传媒理伦片在线观看| 免费a级观看| 91精品国产麻豆国产在线观看| 中文字幕精品三级久久久| 亚洲欧美日韩不卡一区二区三区| 麻豆精品一区二区综合av| 一级少妇精品久久久久久久| 91成人在线观看国产| www久久久久久| 在线黄色免费看| 国产一二三在线观看| 欧美成人xxxx| 欧美gvvideo网站| 午夜在线不卡| 男人插女人下面免费视频| 国产一区二区三区四区五区3d| 中文字幕一区二区人妻视频| 国产高潮呻吟久久久| 福利地址发布页| 蜜桃视频欧美| 91夜夜未满十八勿入爽爽影院| 国产成人av资源| 天天插天天射| 亚洲一级二级在线| 内衣办公室在线| 亚洲国产精彩中文乱码av| 欧美性猛交xxxx免费看手交| 538在线精品| 先锋影音网一区二区| 国产亚洲一区二区在线观看| 精品亚洲国产成人av制服丝袜| 天海翼精品一区二区三区| 一本色道69色精品综合久久| 小h片在线观看| 中文字幕免费观看一区| 久久综合狠狠综合| 国产毛片av| 一区二区av| 美女在线视频一区二区| 中文字幕在线播放不卡| 日韩午夜电影av| 亚洲观看黄色网| 黄色国产精品| 欧美日韩激情在线一区二区三区| 色噜噜在线播放| 麻豆传媒在线免费| 波多野结衣家庭教师| 中文字幕2020第一页| 日韩欧美精品网站| www.国产麻豆| 成人免费视频网址| 亚洲主播在线播放| 久久人人爽人人人人片| 国产特黄级aaaaa片免| 男女免费观看在线爽爽爽视频| 黄色一级大片在线免费看国产一| 三年片观看免费观看大全视频下载| 久久免费在线观看视频| 折磨小男生性器羞耻的故事| 日韩免费一区二区| 国产片一区二区三区| 91肉色超薄丝袜脚交一区二区| 日本在线小视频| av电影资源| 天天做天天摸天天爽天天爱| 怡红院av一区二区三区| 中文字幕免费中文| 国产厕所精品在线观看| 一区二区三区四区视频精品免费| 四虎网站在线观看| 97视频在线观看免费| 老司机精品视频在线观看6| 亚洲激情六月丁香| 国产精品15p| 天堂蜜桃一区二区三区| 中文字幕精品一区二区精品| 国产精品2018| 国产精品成人av久久| 精品一区二区三区在线观看| 福利片在线看| 成人深夜福利app| 国产精品成人无码免费| 精品亚洲一区二区| 亚洲一区导航| 五月婷在线视频| 国产综合在线播放| 青青在线免费观看| 成年女人免费视频| 欧美最猛性xxxxx(亚洲精品)| 成人不卡免费视频| 特一级黄色大片| 中文字幕亚洲图片| 九九热r在线视频精品| 国产精品久久久久久久久免费丝袜|