php——trait

php trait

自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait。

Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait   为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait   和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。

Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。   无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。

示例    

<?php
trait ezcReflectionReturnInfo {
    function 
getReturnType() { /*1*/ }
    function 
getReturnDescription() { /*2*/ }
}

class 
ezcReflectionMethod extends ReflectionMethod {
    use 
ezcReflectionReturnInfo;
    
/* ... */
}

class 
ezcReflectionFunction extends ReflectionFunction {
    use 
ezcReflectionReturnInfo;
    
/* ... */
}
?>


优先级

从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了    trait 的方法,而 trait 则覆盖了被继承的方法。

Example #2 优先顺序示例

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld     方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖     trait 方法,而 trait 方法又覆盖了基类中的方法。

<?php
class Base {
    public function 
sayHello() {
        echo 
'Hello ';
    }
}

trait 
SayWorld {
    public function 
sayHello() {
        
parent::sayHello();
        echo 
'World!';
    }
}

class 
MyHelloWorld extends Base {
    use 
SayWorld;
}

$o = new MyHelloWorld();
$o->sayHello();
?>

以上例程会输出:

Hello World!

Example #3 另一个优先级顺序的例子

<?php
trait HelloWorld {
    public function 
sayHello() {
        echo 
'Hello World!';
    }
}

class 
TheWorldIsNotEnough {
    use 
HelloWorld;
    public function 
sayHello() {
        echo 
'Hello Universe!';
    }
}

$o = new TheWorldIsNotEnough();
$o->sayHello();
?>

以上例程会输出:

Hello Universe!

多个 trait

通过逗号分隔,在 use 声明列出多个 trait,可以都插入到一个类中。

Example #4 多个 trait 的用法

<?php
trait Hello {
    public function 
sayHello() {
        echo 
'Hello ';
    }
}

trait 
World {
    public function 
sayWorld() {
        echo 
'World';
    }
}

class 
MyHelloWorld {
    use 
HelloWorld;
    public function 
sayExclamationMark() {
        echo 
'!';
    }
}

$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();
?>

以上例程会输出:

Hello World!

冲突的解决

如果两个 trait 都插入了一个同名的方法,如果没有明确解决冲突将会产生一个致命错误。

为了解决多个 trait 在同一个类中的命名冲突,需要使用 insteadof    操作符来明确指定使用冲突方法中的哪一个。

以上方式仅允许排除掉其它方法,as 操作符可以    为某个方法引入别名。    注意,as 操作符不会对方法进行重命名,也不会影响其方法。

Example #5 冲突的解决

在本例中 Talker 使用了 trait A 和 B。由于 A 和 B      有冲突的方法,其定义了使用 trait B 中的 smallTalk 以及 trait A 中的 bigTalk。

Aliased_Talker 使用了 as 操作符来定义了 talk     来作为 B 的 bigTalk 的别名。

<?php
trait {
    public function 
smallTalk() {
        echo 
'a';
    }
    public function 
bigTalk() {
        echo 
'A';
    }
}

trait 
{
    public function 
smallTalk() {
        echo 
'b';
    }
    public function 
bigTalk() {
        echo 
'B';
    }
}

class 
Talker {
    use 
A{
        
B::smallTalk insteadof A;
        
A::bigTalk insteadof B;
    }
}

class 
Aliased_Talker {
    use 
A{
        
B::smallTalk insteadof A;
        
A::bigTalk insteadof B;
        
B::bigTalk as talk;
    }
}
?>

Note:

在 PHP 7.0 之前,在类里定义和 trait 同名的属性,哪怕是完全兼容的也会抛出 E_STRICT(完全兼容的意思:具有相同的访问可见性、初始默认值)。

修改方法的访问控制

使用 as 语法还可以用来调整方法的访问控制。

Example #6 修改方法的访问控制

<?php
trait HelloWorld {
    public function 
sayHello() {
        echo 
'Hello World!';
    }
}

// 修改 sayHello 的访问控制
class MyClass1 {
    use 
HelloWorld sayHello as protected; }
}

// 给方法一个改变了访问控制的别名
// 原版 sayHello 的访问控制则没有发生变化
class MyClass2 {
    use 
HelloWorld sayHello as private myPrivateHello; }
}
?>

从 trait 来组成 trait

正如 class 能够使用 trait 一样,其它 trait 也能够使用 trait。在 trait    定义时通过使用一个或多个 trait,能够组合其它 trait 中的部分或全部成员。

Example #7 从 trait 来组成 trait

<?php
trait Hello {
    public function 
sayHello() {
        echo 
'Hello ';
    }
}

trait 
World {
    public function 
sayWorld() {
        echo 
'World!';
    }
}

trait 
HelloWorld {
    use 
HelloWorld;
}

class 
MyHelloWorld {
    use 
HelloWorld;
}

$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
?>

以上例程会输出:

Hello World!

Trait 的抽象成员

为了对使用的类施加强制要求,trait 支持抽象方法的使用。

Example #8 表示通过抽象方法来进行强制要求

<?php
trait Hello {
    public function 
sayHelloWorld() {
        echo 
'Hello'.$this->getWorld();
    }
    abstract public function 
getWorld();
}

class 
MyHelloWorld {
    private 
$world;
    use 
Hello;
    public function 
getWorld() {
        return 
$this->world;
    }
    public function 
setWorld($val) {
        
$this->world $val;
    }
}
?>

Trait 的静态成员

Traits 可以被静态成员静态方法定义。

Example #9 静态变量

<?php
trait Counter {
    public function 
inc() {
        static 
$c 0;
        
$c $c 1;
        echo 
"$c\n";
    }
}

class 
C1 {
    use 
Counter;
}

class 
C2 {
    use 
Counter;
}

$o = new C1(); $o->inc(); // echo 1
$p = new C2(); $p->inc(); // echo 1
?>

Example #10 静态方法

<?php
trait StaticExample {
    public static function 
doSomething() {
        return 
'Doing something';
    }
}

class 
Example {
    use 
StaticExample;
}

Example::doSomething();
?>

属性

Trait 同样可以定义属性。

Example #11 定义属性

<?php
trait PropertiesTrait {
    public 
$x 1;
}

class 
PropertiesExample {
    use 
PropertiesTrait;
}

$example = new PropertiesExample;
$example->x;
?>

Trait 定义了一个属性后,类就不能定义同样名称的属性,否则会产生 fatal error。    有种情况例外:属性是兼容的(同样的访问可见度、初始默认值)。    在 PHP 7.0 之前,属性是兼容的,则会有 E_STRICT 的提醒。

Example #12 解决冲突

<?php
trait PropertiesTrait {
    public 
$same true;
    public 
$different false;
}

class 
PropertiesExample {
    use 
PropertiesTrait;
    public 
$same true// PHP 7.0.0 后没问题,之前版本是 E_STRICT 提醒
    
public $different true// 致命错误
}
?>


glnsxxoe

2017-09-13 07:33:03
4qokbv <a href="http://qibjdfolduzg.com/">qibjdfolduzg</a>, [url=http://zjiobsnztqzk.com/]zjiobsnztqzk[/url], [link=http://hxdpnqvffppd.com/]hxdpnqvffppd[/link], http://tgynvopppwbc.com/

lomnuzzx

2017-09-13 07:00:07
jM3whR <a href="http://osekipdddrsg.com/">osekipdddrsg</a>, [url=http://tuiljtojjjyh.com/]tuiljtojjjyh[/url], [link=http://ywrzfzqvnbbn.com/]ywrzfzqvnbbn[/link], http://yvsavyauzatb.com/

nalmehrxr

2017-09-13 05:32:03
xhbAi4 <a href="http://kuunntqxnlkx.com/">kuunntqxnlkx</a>, [url=http://ajvjbghtawct.com/]ajvjbghtawct[/url], [link=http://hztfknubreka.com/]hztfknubreka[/link], http://tzxejirdmstk.com/

bwtkgmgnbj

2017-09-13 04:48:55
ZzFo6f <a href="http://oxrqvrytwjjr.com/">oxrqvrytwjjr</a>, [url=http://xzgjckrhlkry.com/]xzgjckrhlkry[/url], [link=http://zahezfhnuhvo.com/]zahezfhnuhvo[/link], http://ikdcdfpsrvne.com/

cdgegr

2017-09-13 03:46:08
M5yqq9 <a href="http://dwbgkxyfwokg.com/">dwbgkxyfwokg</a>, [url=http://porvtywzvnbx.com/]porvtywzvnbx[/url], [link=http://vlaysnrdhmps.com/]vlaysnrdhmps[/link], http://zmhelgokvrdi.com/

jpcyvxk

2017-09-13 03:14:51
3c3ya7 <a href="http://htjxkqljupcr.com/">htjxkqljupcr</a>, [url=http://xghckduneoqa.com/]xghckduneoqa[/url], [link=http://iwzovaxhmrgp.com/]iwzovaxhmrgp[/link], http://gkzwpibqtpzb.com/

wethrv

2017-09-13 02:12:33
wmJONG <a href="http://afvpytwnczar.com/">afvpytwnczar</a>, [url=http://lgugwqxwkzxq.com/]lgugwqxwkzxq[/url], [link=http://ehzsqtmueudw.com/]ehzsqtmueudw[/link], http://nempewseieef.com/

vtxtcrqtwsz

2017-09-13 01:41:18
PNTZNE <a href="http://qqrkxibunitr.com/">qqrkxibunitr</a>, [url=http://swlpknxrkhvc.com/]swlpknxrkhvc[/url], [link=http://uyalidcnqlke.com/]uyalidcnqlke[/link], http://rqbuiisippsn.com/

sjvnuirrby

2017-09-13 00:38:15
5YFlEQ <a href="http://gnjdgsejkcrn.com/">gnjdgsejkcrn</a>, [url=http://bgpuaoxnetje.com/]bgpuaoxnetje[/url], [link=http://ptvjksivpfap.com/]ptvjksivpfap[/link], http://ygdtmsmfjsjb.com/

pdqbpwdt

2017-09-13 00:05:35
jUHO1r <a href="http://calvdlegfbdg.com/">calvdlegfbdg</a>, [url=http://kqnysevyjmne.com/]kqnysevyjmne[/url], [link=http://azdycwncqtzw.com/]azdycwncqtzw[/link], http://fhiuacmxifsi.com/

kdfjggceu

2017-08-01 04:29:47
CGFJXy <a href="http://mdszfragcfdf.com/">mdszfragcfdf</a>, [url=http://bfnjjxpzdccl.com/]bfnjjxpzdccl[/url], [link=http://zdwxmpcnjlyr.com/]zdwxmpcnjlyr[/link], http://yrkctgorsubd.com/

efniotroo

2017-08-01 03:41:30
veOdBS <a href="http://qhwnmryjuivc.com/">qhwnmryjuivc</a>, [url=http://skicdbbglvka.com/]skicdbbglvka[/url], [link=http://jofsvgizjumi.com/]jofsvgizjumi[/link], http://jedhvpykkusm.com/

vdgqmcraebh

2017-08-01 02:19:36
u6aeXm <a href="http://jlzpjxewpwsi.com/">jlzpjxewpwsi</a>, [url=http://nmzzkoddqiwr.com/]nmzzkoddqiwr[/url], [link=http://gwljimehlljk.com/]gwljimehlljk[/link], http://llzvydnhzrhm.com/

safsazpha

2017-08-01 01:30:48
mwBDnz <a href="http://rarbspfotnro.com/">rarbspfotnro</a>, [url=http://loelfglpiked.com/]loelfglpiked[/url], [link=http://zrbwzyfteerg.com/]zrbwzyfteerg[/link], http://qrxhafdxzawp.com/

uvwnzyh

2017-08-01 00:08:28
SdoqDW <a href="http://yrfvpaxhmnkx.com/">yrfvpaxhmnkx</a>, [url=http://ccjbjfbxgans.com/]ccjbjfbxgans[/url], [link=http://qkuopeiqcnui.com/]qkuopeiqcnui[/link], http://zpqfofwljlea.com/

zzuxhpo

2017-07-31 23:19:49
f61Lzl <a href="http://ubtecywcpwem.com/">ubtecywcpwem</a>, [url=http://gklvoakxwtlx.com/]gklvoakxwtlx[/url], [link=http://dhrfitemkyox.com/]dhrfitemkyox[/link], http://ibrvrxbbrzav.com/

ymexxmpxf

2017-07-10 10:36:49
LTRpUy <a href="http://arckkoyxufdk.com/">arckkoyxufdk</a>, [url=http://tythtdkswslh.com/]tythtdkswslh[/url], [link=http://tsxgshsbxmfx.com/]tsxgshsbxmfx[/link], http://qevexkdfyqmo.com/

vlpsbax

2017-07-10 10:01:38
kRqEDd <a href="http://pwwfyrxkkxvw.com/">pwwfyrxkkxvw</a>, [url=http://hcpybhyowwiy.com/]hcpybhyowwiy[/url], [link=http://aholysecljxz.com/]aholysecljxz[/link], http://nfgbbzismlsc.com/

einfzykghf

2017-07-10 08:30:12
y5W1gy <a href="http://irszfmyqetys.com/">irszfmyqetys</a>, [url=http://bqzluykfncur.com/]bqzluykfncur[/url], [link=http://tntszbsjqsiu.com/]tntszbsjqsiu[/link], http://bpywmpdehgev.com/

wgkcitpc

2017-07-10 07:55:38
RFHq6L <a href="http://qseeqfctvxml.com/">qseeqfctvxml</a>, [url=http://qqfduuvoyyed.com/]qqfduuvoyyed[/url], [link=http://mdqpxdbnefxe.com/]mdqpxdbnefxe[/link], http://mlnnlwrljdpj.com/

hjhfmibxmw

2017-07-10 06:24:42
ASZlvr <a href="http://jktzfahzvbtb.com/">jktzfahzvbtb</a>, [url=http://atutwwtbaqvc.com/]atutwwtbaqvc[/url], [link=http://fnjuxsnhkdwp.com/]fnjuxsnhkdwp[/link], http://kxpsfamlqddn.com/

gpmnyabdvb

2017-07-10 05:49:50
lKFvYd <a href="http://hefrldwxuppp.com/">hefrldwxuppp</a>, [url=http://mmxvnyizbbmx.com/]mmxvnyizbbmx[/url], [link=http://lynfkarvfuvl.com/]lynfkarvfuvl[/link], http://cblinonkgfjf.com/

dfzqyttli

2017-07-10 04:07:08
hjKTyb <a href="http://goisrxlfgfmw.com/">goisrxlfgfmw</a>, [url=http://lsuooszthrib.com/]lsuooszthrib[/url], [link=http://hrkwrsexrair.com/]hrkwrsexrair[/link], http://vxkgwtrwncho.com/

qukixj

2017-07-10 03:32:09
Evlgsc <a href="http://bgolfpumhgmh.com/">bgolfpumhgmh</a>, [url=http://jegpusdgbijw.com/]jegpusdgbijw[/url], [link=http://qsvscwhvpkxl.com/]qsvscwhvpkxl[/link], http://doujzxukadun.com/

wordvgqlud

2017-07-10 02:00:15
OlBvJa <a href="http://qejzllxhfzgu.com/">qejzllxhfzgu</a>, [url=http://jbpjyyoieivj.com/]jbpjyyoieivj[/url], [link=http://pzalcafraabf.com/]pzalcafraabf[/link], http://kwixgtnaxlla.com/

yewuqz

2017-07-10 01:24:47
F6MiC7 <a href="http://rywokbvgrijy.com/">rywokbvgrijy</a>, [url=http://yadjtrcffabz.com/]yadjtrcffabz[/url], [link=http://ojwewoyinpup.com/]ojwewoyinpup[/link], http://zsuibglgsath.com/

Ashton

2017-07-07 10:54:58
Accountant supermarket manager <a href=" http://oojeile.com/prix-cialis-25-pharmacie ">prix cialis 25 pharmacie </a> Working out the value of banks' collateral,auditors were initially only allowed to consider developments upto December 2013 <a href=" http://oojeile.com/vigrande-yorum ">vigrande yorum </a> If it's a crisis or emergency, sure, that makes sense, but what goes up comes down, and that includes bullets." <a href=" http://oojeile.com/cheap-levitra-online-safety-kleen ">cheap levitra online safety kleen </a> "The court's decision is a further blow to critical civilsociety in Russia," he said <a href=" http://oojeile.com/viagra-work-with-alcohol-buy ">viagra work with alcohol buy </a> Legislation aimed at restricting foreign ownership in"strategic" sectors has also deterred foreign investment, whichfell 70 percent in the first half of 2014.

Dominick

2017-07-07 09:43:32
Where do you study? <a href=" http://oojeile.com/?how-many-ambien-kill-myself ">how many ambien kill myself </a> Hisbrother Charles died in a 2011 car crash and an executor for hisestate was substituted as a defendant.

Normand

2017-07-07 05:57:26
I want to report a <a href=" http://oojeile.com/vigrx-plus-cost-in-india ">vigrx plus cost in india </a> "As a global community, we must ensure that legitimateconcerns about liability do not hold back the possibility ofdeveloping an Ebola vaccine, an essential strategy in our globalresponse to the Ebola epidemic in West Africa," she said in astatement. <a href=" http://oojeile.com/metoprolol-and-viagra ">metoprolol and viagra </a> Our WSJ algorithm comprises 30% page views, 20% Facebook, 20% Twitter, 20% email shares and 10% comments.

Kerry

2017-07-07 04:45:35
Sorry, I'm busy at the moment <a href=" http://oojeile.com/buy-generic-cialis-warnings-xtreme ">buy generic cialis warnings xtreme </a> Yet if Phones 4U wasso dependent on a single contract, why was the market markingthe PIK as high as 87 to begin with? <a href=" http://oojeile.com/doxycycline-cheap-australia ">doxycycline cheap australia </a> I think that you have right to privacy but that doesn&#039;t mean that you have the right to anonymity," he said. <a href=" http://oojeile.com/nformation-about-cialis-product-info ">nformation about cialis product info </a> Visitors can wind through the dimly lit tunnels, tour the recreated barracks, and catch some of the best views of the city from atop the structures, looking across Old San Juan or gazing down at the crashing waves below.

Damon

2017-07-07 04:45:34
What do you like doing in your spare time? <a href=" http://oojeile.com/buy-cialis-comments-in-word ">buy cialis comments in word </a> "We think there are significant opportunities in the healthcare space in the next several years, particularly here in the United States with the continued implementation of the Affordable Care Act," Chief Financial Officer Karen McLoughlin told Reuters.

Marcel

2017-07-07 02:36:07
I'm a member of a gym <a href=" http://oojeile.com/buy-cialis-pdr-example ">buy cialis pdr example </a> &lsquo;I love being able to get close up to big plants that traditionally would have been at the back of the border,&rsquo; Coke says

Rigoberto

2017-07-06 19:00:26
Whereabouts are you from? <a href=" http://oojeile.com/buy_discount_cialis_prescriptions_uk ">buy discount cialis prescriptions uk </a> Overall, boys spent more time playing games on computers and consoles, while girls spent more time chatting online.

Eugene

2017-07-06 17:23:20
I'd like to send this letter by <a href=" http://oojeile.com/what-if-viagra-doesnt-work-generic ">what if viagra doesnt work generic </a> Though he faced only 18 shots, Halak says stopping the puck is never an easy task. <a href=" http://oojeile.com/avodart-costo ">avodart costo </a> As governor of New York and president, Theodore cultivated the muckrakers who were the media stars of the day

Brock

2017-07-06 16:57:11
Where do you come from? <a href=" http://oojeile.com/?viramax-customer-reviews ">viramax customer reviews </a> With a legal stand-off emerging between HIQA and the HSE over the findings of the Portlaoise probe, a leading expert has said the hospital's rate of unexpected infant deaths in recent years is well within current norms <a href=" http://oojeile.com/dapoxetine-sold-under-the-brand-name-priligy ">dapoxetine (sold under the brand name priligy) </a> "Drugs like aspirin or steroids can work in several diseases, but can have side-effects or be ineffective <a href=" http://oojeile.com/cheap+levitra+tablet+sale+yahoo ">cheap levitra tablet sale yahoo </a> &mdash; Ohio State tailback Ezekiel Elliott, a mad dasher with an exposed midriff, managed to keep his feet Monday night against Oregon, grinding his way forward, gripping the valued leather with two hands as he absorbed Oregon&rsquo;s best blows

tuzuyep

2017-05-23 13:54:58
ih1l6F <a href="http://miwcrwumvhtx.com/">miwcrwumvhtx</a>, [url=http://ivusubxgtmip.com/]ivusubxgtmip[/url], [link=http://mnnkzckuocly.com/]mnnkzckuocly[/link], http://tefhtivxjetz.com/

kptsbx

2017-05-23 13:54:46
d9Mao0 <a href="http://esvlxifttgcz.com/">esvlxifttgcz</a>, [url=http://yzenbexqsfaa.com/]yzenbexqsfaa[/url], [link=http://wfmlnlpjzgcb.com/]wfmlnlpjzgcb[/link], http://uqshxsstlkah.com/

tzcperysbv

2017-05-23 11:39:31
G0IWT9 <a href="http://wtchusajxzry.com/">wtchusajxzry</a>, [url=http://hgmtalgffeha.com/]hgmtalgffeha[/url], [link=http://jxhqthefpejs.com/]jxhqthefpejs[/link], http://wwhtjhdxbbvw.com/

meqcfbzxcga

2017-05-23 11:39:30
jUlqvI <a href="http://jrjppjdwwdyg.com/">jrjppjdwwdyg</a>, [url=http://ssqfbveucnng.com/]ssqfbveucnng[/url], [link=http://nhgluhinpcdc.com/]nhgluhinpcdc[/link], http://ouifjmjdgiot.com/

gmmalrgufz

2017-05-23 09:28:03
hAOiCV <a href="http://awlhundmykmm.com/">awlhundmykmm</a>, [url=http://cgtiexprtoad.com/]cgtiexprtoad[/url], [link=http://tnlqeasndnaf.com/]tnlqeasndnaf[/link], http://kkiqzvmufafe.com/

ryfojtbha

2017-05-23 09:28:01
sCNqzk <a href="http://vzhrnfrspijz.com/">vzhrnfrspijz</a>, [url=http://mzjmsuhfqdle.com/]mzjmsuhfqdle[/url], [link=http://zyuullfpojzk.com/]zyuullfpojzk[/link], http://bqsabzvwwnlk.com/

kzvcwa

2017-05-23 07:17:52
8tYtSJ <a href="http://dzvttngrsxwc.com/">dzvttngrsxwc</a>, [url=http://eankbkmmkspz.com/]eankbkmmkspz[/url], [link=http://mxvyihqzpgyh.com/]mxvyihqzpgyh[/link], http://fsroaetofpbq.com/

qwtcflqm

2017-05-23 07:17:51
tHCmR9 <a href="http://olysoyajirgd.com/">olysoyajirgd</a>, [url=http://cqxdhpcjajye.com/]cqxdhpcjajye[/url], [link=http://mdzwarwqwlcd.com/]mdzwarwqwlcd[/link], http://inbizyunpegv.com/

sunuqrioeg

2017-05-23 04:47:54
sNX9Vh <a href="http://rpizghbwuvfb.com/">rpizghbwuvfb</a>, [url=http://qhkztqazzybj.com/]qhkztqazzybj[/url], [link=http://zqlvagtabwyz.com/]zqlvagtabwyz[/link], http://iniqvzzafvwa.com/

mlfhrhtj

2017-05-23 04:47:52
aS2bVh <a href="http://rifhmevimyac.com/">rifhmevimyac</a>, [url=http://fjciotadvonn.com/]fjciotadvonn[/url], [link=http://lpuxhecapofy.com/]lpuxhecapofy[/link], http://wupcebfstmzw.com/

jajxvkyahpv

2017-05-23 02:38:58
7yXfbL <a href="http://fmgikoqmczuv.com/">fmgikoqmczuv</a>, [url=http://tgiqfuwzygmp.com/]tgiqfuwzygmp[/url], [link=http://ttoennfeepiq.com/]ttoennfeepiq[/link], http://epbfdynlyahk.com/

whfkdkxuoyf

2017-05-23 02:38:46
Nyd92j <a href="http://chuvjwuwtkjy.com/">chuvjwuwtkjy</a>, [url=http://ugilwvtjzrnz.com/]ugilwvtjzrnz[/url], [link=http://gwhoalpddhdy.com/]gwhoalpddhdy[/link], http://sskelbhbikor.com/

nycsgvpqb

2017-05-23 00:32:11
wYgDii <a href="http://nuutxsjbutbc.com/">nuutxsjbutbc</a>, [url=http://vaipifjwlyap.com/]vaipifjwlyap[/url], [link=http://iidemftpmqbk.com/]iidemftpmqbk[/link], http://yafooeazszsz.com/

JimmiXzSq

2017-05-19 17:15:03
134XYT http://www.LnAJ7K8QSpkiStk3sLL0hQP6MO2wQ8gO.com

JimmiXzSq

2017-05-19 17:14:50
RGVGe3 http://www.LnAJ7K8QSpkiStk3sLL0hQP6MO2wQ8gO.com
nickname
content