青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

教父的告白
一切都是紙老虎
posts - 82,  comments - 7,  trackbacks - 0

Phing是什么?

Phing是一個基于Apache Ant的項目代碼構建系統.你可以用她做傳統的構建系統能做的任何事情,比如GNU make,并且Phing使用簡單的XML構建文件和可擴展的”任務”使之成為易于使用和極具可擴展性的框架.

因為Phing是基于Ant的,所以本手冊部分內容是摘自Ant手冊.

Phing & Binarycloud :歷史

Phing源自Binarycloud的一個子項目.Binaryclound是一個高度工程化的框架,為了在企業環境中使用而設計.Binarycloud廣泛使用XML來存儲關于項目的元數據(配置,節點,窗口小部件,站點結構,等等).

因為Binarycloud是為PHP構建的,在每一個頁面請求上執行XML處理和轉換是不切實際的.Phing用于”編譯”XML元數據為可被PHP引擎處理的數組形式.

當然,XML”編譯”只是Binarycloud使用Phing構建系統的許多方法中的一個.Phing構建系統使你能夠:

1. 從單一的源代碼樹構建多語言頁面.

2. 在單個XML文件中聚集元數據(Metadata)并且用多個不同的XSLT生成幾個文件.(譯者注:在XSLT2.0規范中,消除了1.0規范只能有一個輸入一個輸出的限制,現在我們可以做到單一輸入來生成多個輸出文件)

最初,Binarycloud使用GNU make構建系統,但是,這樣有些缺點. 在makefile中的"Space before tab problem"問題.實際上,它僅在UNIX系統上沒有問題.因此需要尋找一個更好的構架系統.Apache Ant是一個不錯的選擇—它使用XML構建文件和模塊化的設計.但問題是Ant用java寫成,要使用它你必須得在你得計算機上安裝Java虛擬機.

Besides the need for yet another interpreter (i.e. besides PHP), there was also legal/ideological conflict in requiring a commercial JVM (there were problems with Ant on JVMs other than Sun's) for an LGPL'd Binarycloud.

因此,Phing開始開發了,Phing是一個借助于Ant的思想用PHP寫成的構建系統.第一版同時設計和開發,因此不是十分穩定.系統很快暴露出了它的限制并且需要一個更好的Phing系統.因此衍生了Phing2的雛形.

Phing當前的開發集中于Phing2,它涉及許多功能增強,bug修正,并且最值得注意的轉變是用PHP5的抽象類,接口,和try/catch/throw異常處理來重寫了原來Phing的基礎代碼.

Phing怎樣工作

Phing使用包含一組項目構建描述的XML構建文件.構建文件由一些運行實際的命令的目標組成(比如復制文件,刪除目錄,執行數據庫查詢,等等).因此使用Phing,第一步要編寫構建文件,然后運行Phing,在構建文件中定義的要執行的目標.

phing −f mybuildfile.xml mytarget

如圖1,鍵入phing –h可以查看命令參數的描述

默認情況下,Phing將會查找一個叫build.xml的文件.(除非構建文件的名稱不是build.xml,否則不必為Phing指定構建文件的名稱) 并且,如果沒有指定任何目標那么Phing將執行在<project>標簽中設置的默認目標(default屬性所指定的).

Cool,so how can i help?

Phing當前正在積極額開發之中并且又許多事情要完成.如果要參與其中,可以通過下面的方法:

1. 閱讀本手冊以了家Phing ;-)

2. 到http://phing.tigris.org訂閱”dev”郵件列表

設置Phing

本章的目標是幫助你在你的操作系統上正確的設置和執行Phing.一旦你正確的設置了phing你就不需要再回過頭來看這章了,除非你要重新安裝,或者是遷移到其他的平臺.

有幾種方法來獲得Phing的發行包.如果你不想參與當前的開發,推薦你獲取最近的快照版本或穩定版本,如果你有興趣參與我的的開發,你可以從CVS獲取正在開發中的文件.

獲取Phing發行包的最容易的方法是訪問Phing的主頁http://phing.info 下載當前相應格式的你需要的分發包.

自2.0.0b1版之后,你可以可以下載PEAR可安裝包和完全的Phing分發包.如果你希望修改Phing,我們建議你下載完整的Phing發行包,這樣你可以創建你自己的PEAR包.如果你知識簡單地使用Phing作為項目的需要或構建其他的包,下載并且安裝PEAR包.

CVS獲取一個正在開發中的拷貝

鼓勵你對Phing的開發作出貢獻.如果你像參與到Phing的開發中或你知識對其中最新的功能感興趣,你可以看看下面的敘述并中從CVS獲取一份拷貝.

The CVS revisions of Phing are not bullet−proof and may fail to execute properly on your machine. Only obtain the CVS versions if you are absolutely aware of limitations and constraints of such an action.Additionally you should sign up to the development mailinglist to report and notice errors and incompatibilities.

我們假設你正運行UNIX類型的操作系統

So we expect the CVS software is installed ant the cvs executable is in your system's search path.. However, the steps for a Windows based system are very similar.

這里有大量的關于如何使用CVS的資源可用,并且還有關于tigris項目管理平臺的CVS說明.

首先你必須做的第一件事是登錄到CVS服務器.在命令行下鍵入:

cvs –d :pserver:guest@cvs.tigris.org:/cvs login

如果你要作為開發者登錄到Tigris Web站點上.用你自己的用戶名和密碼登錄.你也可以以訪客的身份登錄到Tigris Web站點.

要從項目源代碼資源庫中撿出個別的模塊(如果你不需要整個項目資源庫),鍵入:

cvs –d :pserver:guest@cvs.tigris.org/cvs checkout phing

PEAR 安裝

安裝Phing最簡易的方法是使用pear安裝工具.

$> pear install http://phing.info/pear/phing-current.tgz

PEAR安裝工具將檢查包的依賴性,并把Phing的執行腳本放到PHP的安裝目錄下面(pear命令腳本同時也在這個目錄下面)

PEAR安裝(手動安裝)

如果你不是用pear安裝,你可以自己手動安裝,但這樣要復雜一些,你需要配置你的環境變量以使phing能夠找到phing.bat執行腳本.你可以從http://phing.tigris.org下載

phing-2.0.0.zip 或phing-2.0.0.tar.gz ,解壓到任意一個目錄下,產生三個目錄 bin,docs和classes,然后設置環境變量PHING_HOME,把它指向到Phing目錄.

例如:我下載了phing-2.0.0.tar.gz 解壓到 D:\Phing 那么就把PHING_HOME設置為D:\Phing.

運行Phing之前,你還需要做一下配置.

1. 添加$PHING_HOME(*nix)或%PHING_HOME%(windows)到PATH環境變量中.

2. 設置PHING_HOME環境變量指向到Phing的安裝目錄.

3. 設置PHP_COMMAND變量,指向php命令所在的位置,例如(*nix /usr/bin/php)或windows(c:\php5\php.exe)

4. 設置PHP_CLASSPATH環境變量以包含Phing需要額類庫.至少應該包含%PHP_HOME%\classes.

還有一種方法是把%PHP_HOME%\classes路徑添加到php.ini文件中的include_path參數中去.

5. 檢查php.ini,并確保有如下設置

a) nax_execution_time = 0 // 不限制

b) memory_limit = 32MB // 決于你的構建文件的大小,你可能需要更多的內存

UNIX

如果你使用UNIX,使用 bash bourne shell,并且Phing安裝在/opt/phing目錄下

通過下面的方法適當地設置環境.

export PHP_COMMAND=/usr/bin/php

export PHING_HOME=/opt/phing

export PHP_CLASSPATH=${PHING_HOME}/classes

export PATH=${PATH}:${PHING_HOME}/bin

Windows

在Windows平臺生假設Phing安裝在 c:\opt\phing目錄,那么配置入下:

set PHP_COMMAND=c:\opt\php\php.exe

set PHING_HOME=c:\opt\phing

set PHP_CLASSPATH=c:\opt\phing\classes

set PATH=%PATH%;%PHING_HOME%\bin

高級

有許多用于運行Phing的變量,你至少需要如下幾個設置:

1. 如果你要Phing能夠使用其他的包/類,那么你要把他們添加到PHP_CLASSPATH變量中PHP.ini文件的include_path變量中.

2. 有些任務要求第三方庫.

調用Phing

現在,你準備在命令行或腳本中調用Phing了.下面的章節簡要的描述了如何正確的執行Phing

命令行

Phing在命令行執行也很簡單.僅僅切換到構建文件所在的目錄,并鍵入:

phing [targetname]

Getting Started

phing構建文件用XML標記語言編寫,因此你應該有一些XML和Ant的基礎知識才能很好的理解下面的章節,在web上有許多的資源可用。

XMLPhing

構建文件有如下基本結構:

1. 文檔序言(document prolog)

2. 根元素<project>

3. 幾個類型元素(<property>,<fileset>,<patternset>)

4. 包含一個或幾個內建的或用戶自定義的任務元素(例如:<javac>,<tar>)

編寫一個簡單的構建文件

<?xml version="1.0"?>

<project name="FooBar" default="dist" basedir=".">

<!—創建文件夾-->

<target name="prepare">

<echo msg="Preparing build..." />

<mkdir dir="./build" />

</target>

<!—復制文件-->

<target name="build" depends="prepare">

<echo>Building...</echo>

<copy file="./src/File.php" to="./build/File.php"/>

<copy file="./src/File2.php" to="./build/File2.php"/>

</target>

<!—打包-->

<target name="dist" depends="build">

<echo message="Creating archive..." />

<tar outfile="furbee.tar.gz" basedir="./build"/>

</target>

<!—刪除,清理-->

<target name="clean">

<echo msg="Cleaning up..."/>

<delete file="./build"/>

</target>

</project>

project 元素

文件序言之后緊跟著的第一個元素的是<project>,此元素是一個包含其他元素的容器,并且有以下屬性:

<project>的屬性:

屬性 含義 要求的?

name 項目的名稱 No

basedir 項目的根目錄,如果未指定將使用當前目錄 No

default 在調用構建文件的時候,如果沒有指定要執行的目標,

將執行在此定義的項目默認目標 Yes

description 項目的描述 Yes

target 元素

一個目標可依賴其他的目標.你可能有一個在構建樹中安裝文件的目標,例如,創建一個tar.tgz分發包的目標.

Target元素的屬性:

屬性 含義 要求

name 目標的名稱 Yes

depends 此目標依賴的逗號分隔列表 No

if 為了使此目標得以執行而必須設置的屬性的名稱 No

unless 為了使此目標得以執行而禁止設置的屬性的名稱

任務元素

一個任務是一段可執行的PHP代碼段.此代碼段實現了特定的行為(例如,復制文件).因此你必須在構建文件中定義,才能是Phing真正的調用它.

附錄有一組核心任務和許多可選的任務.編寫你自己的任務也很容易(擴展Phing一節).

任務可以被分配一個id屬性:

<taskname id=”taskID” …/>

property 元素

屬性是在構建文件使用的基本的變量,可以在構建文件中通過 PropertyTask任務設置或在Phing外部通過命令行傳遞.通過命令行傳遞的屬性總是會覆蓋在構建文件中設置的屬性,也就是說命令行是最后傳遞給Phing的,自然會覆蓋先前在構建文件中設置的屬性.

屬性有一個名稱和一個唯一的值.屬性可以作為任務屬性的值.這是通過在”${”和”}”包含屬性名稱來設置的.例如:

<propery name=”javasourcedir” value=”./src/java”/>

<javac srcdir=”${javasourcedir}”/>

這里在運行時${javasourcedir}將被展開為./src/java

內建屬性

Phing給你提供了訪問系統屬性的能力,好像它已經通過<property>定義過的一樣.例如,${os.name}展開為操作系統的名稱.附錄有完整的內建屬性的列表.

更復雜的構建文件

<?xml version="1.0" ?>

<project name="testsite" basedir="." default="main">

<property environment="env"/>

<property file="${env.BCHOME}/build.properties"/>

<property name="package" value="${phing.project.name}" override="true" />

<property name="builddir" value="${env.BCHOME}/build/testsite" override="true" />

<property name="srcdir" value="${project.basedir}" override="true" />

<!-- Fileset for all files -->

<fileset dir="." id="allfiles">

<include name="**">

</fileset>

<!-- Main Target -->

<target name="main" description="main target">

<copy todir="${builddir}">

<fileset refid="allfiles" />

</copy>

</target>

<!-- Rebuild -->

<target name="rebuild" description="rebuilds this package">

<delete dir="${builddir}" />

<phingcall target="main"/>

</target>

</project>

構建文件首先用<property>標記調用PropertyTask任務來定義屬性.然后它定義一個文件集和兩個目標.

前面5個元素定義了項目的屬性.(按照訪問方式不同分三種)

1.(環境變量)第一個property元素,有屬性environment屬性,其值為env,這樣就可以通過env.VARIABLE_NAME的方式來訪問環境變量.例如,我可以調用echo任務吧env.PATH變量打印在控制臺輸出上:

<echo messages=”${env.PATH}”/>

這樣就會輸出PATH環境變量的字符串.

2.(文件)第二個propery元素僅包含file屬性,這里file屬性的值是一個相對的或絕對的指向屬性文件的路徑(屬性文件:后綴名為 .properties,其中包含的鍵值對(key/value)的集合,格式見附錄E).

3.(直接在構建文件中定義屬性變量)通過如下方式定義:

<property name=”propertyname” value=”propertyvalue”/>

另外要注意的是構建文件中的<fileset>標簽.它定義一個文件集合,例如一組多個文件組成的集合.你還可以用<fileset>元素的子元素<include>和<exclude>包含和排除<fileset>文件模式指定的文件集合

譯者注:實際上<fileset>最終所包含的文件是<include>和<exclude>的差集)

關于文件集,見附錄C有更詳盡的描述.另外<fileset>標簽有id屬性,通過id屬性可以在其他地方引用.就像直接包含一樣,通過引用實現了代碼的復用.

第一個任務僅僅包含通過<copy>標簽調用的CopyTask任務.其中并沒有用<include>和<exclude>標簽來包含和排除文件,而是用了<fileset>的refid屬性來引用前面定義的fileset,這樣我們就可以在一個定方定義,而在構建文件中的其他地方多次的使用.

在第二個目標中使用了<phingcall>標簽來調用了PhingTask任務(詳盡見附錄B)

設置Phing

本章的目標是過去和正確的設置并且在你的操作系統上執行Phing,你但以安裝完成就不必在回過頭來再看這章,除非你要重新安裝或移植到其他平臺上去.

系統要求

操作系統

要使用Phing你必須安裝PHP5.0.0b1和以上的版本并且加上 –with-libxml2,和—with-xsl選項.

if you want to make use of advanced functionality. At the time of writing PHP5.0.0b2−dev is currently unable to run Phing due to segmentation faults arising somewhere in the XML parsing of the build file.

關于PHP和其要求額模塊請查看PHP網站http://www.php.net 對于一個簡要的軟件依賴性列表如下

項目組件

這一章的目標是使你熟悉構建文件的基本組件.讀完這一章,即使你不知道構建文件中;某些代碼段的含義,你也能夠讀懂,和理解構建文件的基本結構.

對于補充的參考信息,你可以查看附錄A,附錄B,附錄C,附錄D.

Project

在項目文件結構中,必須定義<project>元素,它是Phing構建文件的根元素,是必須的,意味著所有的項目相關的信息都是包含這<project>元素以內的.

<?xml version=”1.0”?>

<project name=”test” description=”this is a simple test for buildfile” default=”main”>

<!—Everything else here-->

</project>

project的三個屬性,name—項目名稱,這是必須的,description—項目的簡單描述,default—如果在執行時沒有指定目標,那么將使用項目的默認目標.

Project Components In General

項目組件是你能夠在項目文件中找到的所有描述項目信息的標記,目標是項目組件,還有任務,類型,等等.項目組件可能有屬性和嵌套的標簽.屬性僅僅包含簡單的值,例如字符串,整數,等等.嵌套的元素可以是復雜的Phing類型(如Filesets)或簡單的值的封裝類(wrapper classes)

編寫映射器

創建一個Mapper

在PHP5中編寫一個文件Mapper由PHP5支持的接口簡化了.本質上,你的自定義文件名mapper必須實現phing.mappers.FileNameMappers接口.這里有一個創建DOS文件名風格的文件名Mapper

附錄情況說明書

hing內建屬性

屬性 內容

application.startdir

host.arch 主機名稱.在Windows上不可用

host.doman DNS域名.例如php.net.在Windows不可用

host.fstype 文件系統類型,可能的取值為UNIX,WINNT,WIN32.

host.machine 系統架構.例如,i586.在Windows不可用

host.name 由posix_name()返回的名稱,在Windows上不可用

host.os.release 操作系統正是發行版本,例如2.2.10,在Windows上不可用

host.os.version 操作系統版本, #4 Tue Jul 20 17:01:36 MEST 1999.在Windows上不可用

lince.separator 行分隔符,Unix為”\n”,Windows為”\r\n”,Macintosh為”\r”

php.classpath PHP_CLASSPATH環境變量的值.

php.version PHP解釋器的版本.

phing.buildfile 當前構建文件的完整路徑

phing.id

phing.version 當前的Phing版本

project.name 當前項目名稱

project.basedir 當前項目的根路徑

project.description 當前項目描述

user.home 環境變量HOME的值

附錄核心任務

AdhocTaskdefTask

AdhocTypedefTask

AppendTask

AvailableTask

CallTargetTask

CopyTask

DeleteTask

EchoTask

ExecTask

ForeachTask

InputTask

MkdirTask

MoveTask

PhingTask

PearPackageTask

PhpEvalTask

PropertyTask

ReflexievTask

ResolvePathTask

arTask

askdefTask

TouchTask

TypedefTask

UpToDateTask

XsltTask

附錄核心類型

這是一個Phing系統數據類型的參考

FileList文件列表

FileList數據類型,正如它的名字一樣描述文件,不像FileSets,FileList可以包含還沒有創建的文件,就是說它不在文件系統中。同樣FileLists可以用指定的順序來描述文件,然而從文件系統返回的FileSet確實無序的。

使用例子

<filelist dir="/etc" files="httpd/conf/httpd.conf,php.ini"/>

或者使用一個列表文件(listfile屬性),每行包含一個文件名

<filelist dir="conf/" listfile="ini_files.txt"/>

這將截取ini_files.txt文件中的每一行作為一個文件返回到FileList中

屬性

Name Type Description Default Required

dir String files和listfile指出的文件所在的目錄 N/A Yes

files String 逗號或空格分隔的文件列表 N/A Yes(或listfile)

listfile String 一個表示一個文件列表的文本文件,

每行表示一個文件 N/A Yes(或files)

PATH/CLASSPATH

Core Filters

Phing Filter Reader

Expand Properties

HeadFilter

LineContains

LineContains RegExp

Prefix Lines

Replace Tokens

ReplaceRegexp

StripLineBreaks

StripLineComments

StripPHPComments

TabToSpace

TailFilter

XsltFilter

Core Mappers

FlattenMapper

GlobMapper

IdentityMapper

ergeMapper

RegexpMapper

附錄項目組件

Phing項目

Projects在構建文件中是項目最外面的容器元素,同時<project>也是項目構建文件中的根元素,它包含有名稱,目錄,一個簡短的描述和默認目標等屬性.

項目可包含任務調用和目標.(如下)

例子:

<project name=”TestProject” basedir=”.” default=”main”

Description=”This is a test project to show how to use projects”>

<!—Everthing else goes here -->

</project>

屬性

名稱 類型 描述 默認 要求否

basedir 字符串 項目的根目錄 n/a Yes

default 字符串 如果沒有在命令行指定目標,

將使用這里定義的默認目標 all No

description 字符串 項目簡單描述 n/a No

name 字符串 項目的名稱 n/a Yes

目標

例子:

<target if=”lang” unless=”lang.en” depends=”foo1,foo2” name=”main”

Description=”This is a example target”>

<!—everything else gose here -->

</target>

定義在上面例子中的這個目標僅在屬性lang設置并且屬性lang.en沒有設置時執行,另外它依賴foo1和foo2兩個目標,意思是在main目標執行前必須執行foo1和foo2兩個目標,這個目標的名稱是mian并且有一個簡單的描述.

名稱 類型 描述 默認 要求否

depends String 當前目標所以來的目標,

如果有多個依賴目標,以逗號分隔 n/a No

description String 關于目標的簡短的描述信息 n/a No

if String 必須設置的屬性 n/a No

unless String n/a No

name String 目標名稱 n/a Yes

附錄文件格式

構建文件格式

下面的XML文件顯示的了構建文件的一個骨架,它僅包含了一個project和一個target元素.關于如何使用他們,可查看有關Phing Types和Tasks的信息.

<?xml version=’1.0’ ?>

<!--

The root tag of each build file must be a "project" tag.

-->

<project name="(projectname)" [basedir="(projectbasedir)"]

[default="(targetname)"] [description="(projectdescription)"]>

<!−−

Type and task calls here, i.e. filesets, patternsets,CopyTask calls etc.

−−>

<target name="(targetname)" [depends="targetname1,targetname2"]

[if="(ifproperty)"] [unless="(unlessproperty)"]>

<!−−

Type and task calls here, i.e. filesets, patternsets,CopyTask calls, etc.

−−>

</target>

<!−−

More targets here

−−>

</project>

屬性文件格式

屬性文件定義屬性.屬性以鍵/值對的形式保存,并且只包含純文本,屬性文件的后綴名稱一般是.properties,構建文件的默認屬性文件是build.properties

# Property files contain key/value pairs

key=value

# Property keys may contain alphanumeric chars and colons, but

# not special chars. This way you can create pseudo−namespaces

myapp.window.hsize=300

myapp.window.vsize=200

myapp.window.xpos=10

myapp.window.ypos=100

# You can refer to values of other properties by enclosing their

# keys in "${}".

text.width=${myapp.window.hsize}

Everything behind the equal sign is the value, you do

# not have to enclose strings:

text=This is some text, Your OS is ${php.os}

# I guess that is all there is to property files

參考資料

國際標準

[osi−model]

OSI (Open System Interconnect) 模型

http://www.iso.org

http://www.instantweb.com/foldoc/foldoc.cgi?OSI

[xml10−spec]

W3C XML 1.0 規范

http://www.w3.org/XML/

[unicode]

Unicode

http://www.unicode.org

許可

[gnu−lgpl]

The GPL (Gnu Lesser Public License)

http://www.gnu.org/licenses/lgpl.html

[gnu−fdl]

The Gnu FDL (Free Documentation License), the license used for this documentation

http://www.gnu.org/licenses/fdl.html

開源項目

[bc]

Binarycloud

http://www.binarycloud.com

http://binarycloud.tigris.org

[w3c−tidy]

HTMLTidy, a W3C (x)HTML and XML syntax checker and code beautifier

http://www.w3c.org/People/Ragget/tidy/

[phpdoc]

PHPDoc 項目

http://www.phpdoc.de

[phpclasses]

Manuel Lemos的 PHPClasses 資源庫

http://www.phpclasses.org

[pear]

PEAR (Php Extension Archive Repository) PHP擴展庫

http://pear.php.net

[ant]

Ant, a Java Build Tool, the main inspiration for Phing

http://ant.apache.org

[gnumake]

GNU make, an inspiration for Phing

http://www.gnu.org/software/make/make.html

[pollo]

Pollo, a visual editor for XML files. A schema to edit phing build files is shipped with Phing.

http://pollo.sourceforge.net

[gingerall]

GingerAlliance − Home Of Sablotorn

http://www.gingerall.com

[php]

PHP 官方主頁 PHP Hypertext Preprocessor

http://www.php.net

[gnu]

GNU (GNU's Not Unix)組織

http://www.gnu.org

[phing]

Phing (PHing Is Not Gnumake) 主頁

http://phing.info

[cvs−howto]

Short manuals for CVS

http://www.ucolick.org/~de/CVSbeginner.html

[cvs−tigris]

CVS and tigris.org

http://binarycloud.tigris.org/project/www/docs/ddUsingCVS_command−line.html

其他資源

[javadoc]

Sun Javadoc

http://java.sun.com/j2se/javadoc/

[zend]

Zend Technologies, Ltd.

http://www.zend.com

手冊

M

T

T

P

posted on 2010-04-08 15:08 暗夜教父 閱讀(4683) 評論(0)  編輯 收藏 引用 所屬分類: Visual Studio

<2009年9月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用鏈接

留言簿(2)

隨筆分類

隨筆檔案

文章分類

文章檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久夜精品| 国产精品videossex久久发布| 亚洲精品一区二区在线观看| 91久久精品美女高潮| 久久久久国色av免费观看性色| 欧美三级视频在线播放| 欧美激情免费在线| 欧美日韩精品一区| 国产日产亚洲精品系列| 激情文学综合丁香| 亚洲精品久久久久| 亚洲欧美第一页| 久久天天躁夜夜躁狠狠躁2022| 嫩草伊人久久精品少妇av杨幂| 亚洲人成人一区二区在线观看| 亚洲一级在线观看| 久久夜精品va视频免费观看| 欧美日韩国产高清| 国产欧美亚洲精品| 亚洲国产视频一区| 午夜精品久久久久久久久| 久久综合网络一区二区| aa亚洲婷婷| 久热精品视频在线| 国产精品亚洲综合一区在线观看| 亚洲国产福利在线| 午夜精品一区二区三区电影天堂| 欧美高清免费| 久久精品成人| 国产精品网站在线观看| 日韩系列欧美系列| 欧美1区2区3区| 午夜一区不卡| 国产精品家庭影院| 一本色道久久精品| 欧美承认网站| 久久国产一区二区三区| 国产精品视频xxxx| 亚洲一二三区精品| 亚洲国产精品www| 久久欧美肥婆一二区| 国产日韩欧美综合| 亚洲欧美乱综合| 亚洲国产精品一区二区久| 欧美在线999| 国产乱子伦一区二区三区国色天香| 99热这里只有精品8| 亚洲第一精品福利| 麻豆国产va免费精品高清在线| 国产麻豆综合| 午夜精品亚洲一区二区三区嫩草| 一区二区三区成人| 欧美日韩不卡在线| 亚洲最快最全在线视频| 亚洲黄色一区二区三区| 模特精品裸拍一区| 亚洲三级电影全部在线观看高清| 奶水喷射视频一区| 久久一区国产| 亚洲日本激情| 日韩午夜在线播放| 国产精品久久久久久福利一牛影视 | 在线视频一区观看| 亚洲欧洲精品一区二区三区波多野1战4 | 久久免费少妇高潮久久精品99| 亚洲少妇诱惑| 国产精品一区二区三区成人| 欧美在线视频在线播放完整版免费观看| av成人手机在线| 国产精品久久久久久久久久尿| 午夜精品成人在线视频| 午夜精品久久久久| 伊人男人综合视频网| 欧美福利在线| 国产精品xxxxx| 久久久91精品| 男人的天堂成人在线| 一区二区三区|亚洲午夜| 一区二区免费在线视频| 国产美女在线精品免费观看| 久久久噜噜噜久久人人看| 美女91精品| 亚洲免费影视| 久久免费黄色| 亚洲午夜视频在线观看| 欧美专区在线播放| 99国产精品99久久久久久| 亚洲欧美综合精品久久成人| 亚洲国产日韩欧美| 亚洲一区欧美| 亚洲国产精品欧美一二99| 99在线热播精品免费99热| 国产日韩欧美一二三区| 欧美激情在线狂野欧美精品| 国产精品毛片大码女人| 亚洲第一偷拍| 国产欧美日韩亚州综合| 亚洲激情偷拍| 国内精品视频久久| 99国产精品视频免费观看| 加勒比av一区二区| 亚洲性图久久| 99精品视频免费观看| 久久青草欧美一区二区三区| 亚洲欧美日韩国产中文| 美女国产精品| 久久久久国产精品厨房| 欧美日韩在线播放| 欧美成年网站| 国内外成人免费激情在线视频| 在线一区二区三区做爰视频网站 | 国产麻豆午夜三级精品| 99视频一区二区| 亚洲人体大胆视频| 久久精品一区| 久久精品免费看| 国产精品中文字幕欧美| 亚洲精品美女在线观看| 亚洲国产精品综合| 国产综合久久久久久鬼色| 亚洲精品国产精品国自产在线 | 欧美精品一区视频| 久久综合中文色婷婷| 国产精品丝袜91| 一本一道久久综合狠狠老精东影业| 亚洲黄色av一区| 久久天堂av综合合色| 久久人人97超碰国产公开结果| 国产精品一区二区久久| 亚洲宅男天堂在线观看无病毒| 亚洲四色影视在线观看| 欧美另类一区二区三区| 亚洲人成网站在线观看播放| 亚洲国产精品久久久久秋霞影院 | 亚洲精品免费观看| 麻豆av福利av久久av| 欧美成人一区二免费视频软件| 在线免费观看成人网| 久久综合99re88久久爱| 欧美高清hd18日本| 亚洲精品日韩激情在线电影| 欧美成人午夜激情视频| 亚洲日本va午夜在线电影| 日韩午夜三级在线| 欧美性猛交xxxx乱大交蜜桃| 亚洲专区在线| 免费成人av| 99热精品在线观看| 欧美视频一区二区三区四区| 亚洲一区二区伦理| 久久精品国产v日韩v亚洲 | 亚洲午夜精品久久久久久app| 亚洲欧美激情精品一区二区| 国产精品视频免费一区| 久久aⅴ国产紧身牛仔裤| 欧美成人小视频| 亚洲影音一区| 黄色精品免费| 欧美人在线观看| 午夜精品婷婷| 亚洲国产一区二区在线| 亚洲综合成人在线| 国产日韩三区| 欧美成人综合在线| 亚洲在线视频观看| 欧美国产一区二区三区激情无套| 99日韩精品| 红桃视频国产精品| 欧美成人一区二区三区在线观看| 亚洲老司机av| 久久午夜羞羞影院免费观看| 99国产精品99久久久久久粉嫩| 国产一区二区黄| 欧美日韩国内自拍| 欧美在线观看视频在线| 亚洲三级观看| 久久免费视频一区| 亚洲一区久久久| 亚洲第一在线视频| 国产精品一区二区a| 欧美黄网免费在线观看| 亚洲欧美成人精品| 91久久黄色| 欧美电影免费观看| 亚洲在线中文字幕| 亚洲国产高清aⅴ视频| 久久国产主播| 亚洲一区国产| 亚洲国产精品久久人人爱蜜臀| 久久欧美肥婆一二区| 国产日韩欧美另类| 久久综合电影| 香蕉免费一区二区三区在线观看 | 精品成人一区| 国产欧美日韩不卡免费| 欧美精品入口| 蜜桃精品一区二区三区| 久久er99精品| 午夜精品在线| 一区二区毛片|