PHP中trait行使要领具体先容
说普通点,PHP中行使trait要害字是为了办理一个类既想集成基类的属性和要领,又想拥有此外基类的要领,而trait一样平常环境下是和use搭配行使的。 carName}n"; } } class Person { public function eat() { echo "eatn"; } } class Student extends Person { use Drive; public function study() { echo "studyn"; } } $student = new Student(); $student->study(); $student->eat(); $student->driving();?> 输出功效如下: 上面的例子中,Student类通过担任Person,有了eat要领,通过组合Drive,有了driving要领和属性carName。 假如Trait、基类和本类中都存在某个同名的属性可能要领,最终会保存哪一个呢? hello(); $student->driving(); ?>输出功效如下: 因此得出结论:当要领或属性同名时,当前类中的要了解包围 trait的 要领,而 trait 的要领又包围了基类中的要领。 假如要组合多个Trait,通过逗号脱离 Trait名称: 假如多个Trait中包括同名要领可能属性时,会奈何呢?谜底是当组合的多个Trait包括同名属性可能要领时,必要明晰声明办理斗嘴,不然会发生一个致命错误。 输出功效如下: 代码如下: 行使insteadof和as操纵符来办理斗嘴,insteadof是行使某个要领更换另一个,而as是给要领取一个体名,详细用法请看代码: hello(); $Obj1->hi(); echo "n"; $Obj2 = new Class2(); $Obj2->hello(); $Obj2->hi(); $Obj2->hei(); $Obj2->hehe(); ?>输出功效如下: Trait2::helloTrait1::hi Trait2::hi Trait1::hello as要害词尚有其它一个用途,那就是修改要领的会见节制: Trait 也能组合Trait,Trait中支持抽象要领、静态属性及静态要领,测试代码如下: sayHello(); $Obj->sayWorld(); echo $Obj->getWorld() . "n"; HelloWorld::doSomething(); $Obj->inc(); $Obj->inc(); ?>输出功效如下: 以上就是本文的所有内容,但愿对各人的进修有所辅佐,也但愿各人多多支持编程之家。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |