是否可以在 php 中使用 mixins
我开始了解mixins。所以我的疑问是,在php中使用mixins是可能的吗?如果是,那么如何?
我开始了解mixins。所以我的疑问是,在php中使用mixins是可能的吗?如果是,那么如何?
PHP 5.4 中引入的使用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!
这个答案从 PHP 5.4 开始已经过时了。请参阅Jeanno的答案,了解如何使用特征。
这实际上取决于你想要从PHP的水平。PHP处理单继承和抽象类,这可以让你得到大部分的方式。mixins
当然,mixins最好的部分是它们是可互换的片段,可以添加到任何需要它们的类中。
若要解决多重继承问题,可以使用拉入代码段。在某些情况下,您可能必须转储一些样板代码才能使其正常工作,但这肯定有助于保持程序干燥。include
例:
class Foo
{
public function bar( $baz )
{
include('mixins/bar');
return $result;
}
}
class Fizz
{
public function bar( $baz )
{
include('mixins/bar');
return $result;
}
}
它不像 能够定义类那样直接,但它应该让你大部分时间都在那里。有一些缺点:您需要保持相同的参数名称并返回变量名称,您需要传递依赖于上下文的其他数据,例如或 。class Foo mixin Bar
func_get_args_array
__FILE__