如果我理解正确,特征是最接近的Java接口和类构造函数自动设置variables。 但是如果我有一个扩展特性的类,并且有一个构造函数从特性中设置一个variables,那么如果是这样的话: trait Foo { var foo: String } class Bar (foo: String) extends Foo { /* … */ } 当我制作一个Bar对象的时候,我想让这个特质的foostring被设置。 编译器似乎给了我这个错误。 什么是实现这一目标的正确方法?
在PHP 5中,我可以重载构造函数(和其他方法)。 但是,如果我得到这样的代码: class Base { public function __construct($a, $b) { echo $a+$b; } public function sayHello() { echo 'Hello '; } } trait SayWorld { public function __construct($a, $b, $c = 0) { echo (int)$c * ($a+$b); } public function sayHello($a = null) { parent::sayHello(); echo 'World!'.$a; } } class MyHelloWorld extends Base { […]
性状已经成为PHP 5.4中最大的补充之一。 我知道语法和理解特质背后的想法,比如像日志logging,安全性,caching等常见的东西的横向代码重用。 然而,我仍然不知道如何在我的项目中利用特质。 有没有使用特质的开源项目? 任何有关如何使用特质来构build架构的好文章/阅读材料?
场景: trait A { function calc($v) { return $v+1; } } class MyClass { use A; function calc($v) { $v++; return A::calc($v); } } print (new MyClass())->calc(2); // should print 4 此代码不起作用,我找不到像inheritance的方式调用trait函数的方法。 我试着调用self::calc($v) , static::calc($v) , parent::calc($v) , A::calc($v)和下面的代码: trait A { function calc($v) { return $v+1; } } class MyClass { use A { […]