我想禁止类中的任何其他方法,除了通过接口实现的方法。
样本:
interface Helper_Interface_AdminSinglePage {
public function action_index();
/**
* AJAX save
* @return mixed
*/
public function action_save();
/**
* AJAX delete
* @return mixed
*/
public function action_delete();
}
您有任何想法,甚至可能解决方案吗? 我可以自己解决,只需要一些建议。
答案 0 :(得分:1)
你不想要一个界面。您需要一个带有该api的final
类,客户端将该行为作为您的类可以调用的回调传递。类似的东西:
final class AdminSinglePage
{
private $index;
private $save;
private $delete;
public function __construct(Closure $index, Closure $save, Closure $delete)
{
$this->index = $index;
$this->save = $save;
$this->delete = $delete;
}
public function action_index()
{
call_user_func_array($this->save, []);
}
public function action_save()
{
call_user_func_array($this->save, []);
}
public function action_delete()
{
call_user_func_array($this->delete, []);
}
}
可以像这样实例化:
$page = new AdminSinglePage(function() {
echo 'index page';
}, function() {
echo 'save page';
}, function() {
echo 'delete page';
});
// use it
$page->action_save();