我有一个抽象类,它扩展类以提供基本的 orm 函数。它提供的所有功能都受类保护,因此它可以决定哪些字段对外部对象公开可用。但最近,我开始使用一些不需要如此复杂性的较小数据类,并且将受益于公开可用的 orm 编辑功能并且没有特殊功能。
由于函数的命名约定足够紧凑,有没有办法将现有函数更改为公共(不需要相同的类或临时扩展),或者我必须使用traits
php 的新功能来添加一个现有类,其中包含作为内部受保护函数的抽象层的函数的公共版本?
编辑:
对于特征方法,我认为它会有所帮助:
abstract class ORMClass {
public function __construct($pk) {}
protected function __get($k) {}
protected function __set($k,$v) {}
protected function save() {}
}
trait publicORM {
public function __get($k) { return parent::__get($k); }
public function __set($k,$v) { return parent::__set($k,$v); }
public function save() { return parent::save(); }
}
class myOrm extends ORMClass {
use publicORM;
protected static $table = 'myTable';
}
所以我可以myOrm
像这样使用:
$myOrm = new myOrm(1);
$myOrm->foo = 'alice'
echo $myOrm->bar;
$myOrm->save();
不需要:
public function __get($k) { return parent::__get($k); }
public function __set($k,$v) { return parent::__set($k,$v); }
public function save() { return parent::save(); }
列在 myOrm 类中