假设我有以下行为和标准类:
abstract class MyBehavior {
function testFunction(){
return 'test';
}
}
class TestClass {
var $use = array('MyBehavior');
function __construct(){
// do something to give me access to function testFunction through
// $this->testFunction();
}
}
$test = new TestClass();
Run Code Online (Sandbox Code Playgroud)
正如我评论的那样,我希望MyBehavior方法在TestClass($ test-> testFunction();)中可用,而不需要"扩展"类......
这可能吗?
编辑:感谢所有的回复,我有我的答案,或者至少我需要知道我的选择,所以谢谢!我只能给出一个正确的答案,所以我要回答第一个问题.
<?php
trait MyBehavior {
public function testFunction()
{
return 'test';
}
}
class TestClass {
use MyBehavior;
function __construct()
{
echo $this->testFunction();
}
}
$test = new TestClass();
Run Code Online (Sandbox Code Playgroud)
您可以使用特征将所需行为添加到类中.自PHP> = 5.4.0以来存在特征,并且是在不实际使用继承的情况下扩展类的简洁方法.不过要小心:
如果误用,特质会比他们帮助你更多.安东尼费雷拉写了一篇关于特质缺点的非常好的博文.所以你一定要读一读.
归档时间: |
|
查看次数: |
77 次 |
最近记录: |