首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >禁止PHP子类中的方法和关键字

禁止PHP子类中的方法和关键字
EN

Stack Overflow用户
提问于 2018-09-28 07:07:19
回答 1查看 0关注 0票数 0

我正在建立一个ADR框架,我希望能够执行某些规则以确保遵守ADR原则。

  1. 子操作类不应包含任何与CRUD相关的方法名称。应将这些职责委托给域。
  2. 儿童应该只有3种可用的公共方法:__construct__invokerespond构造器是可选的。
  3. 儿童可以有其他私人方法,但应该是最小的。

关于如何实现这一目标的任何想法?

EN

回答 1

Stack Overflow用户

发布于 2018-09-28 17:04:39

这段代码并不能完全满足要求, 但我认为它可以让您了解如何完成。

class Aroot

代码语言:javascript
复制
{
  // Parent constructor
  public function __construct ()
  {
     if (strtolower(get_class($this)) != 'aroot') {
        $allowed_publics = ['__construct', '__invoke', 'respond'];
        $exst_methods = get_class_methods($this);

        if (!in_array('__invoke', $exst_methods)) {
            echo "__invoke method is missing.\n";
        }
        if (!in_array('respond', $exst_methods)) {
            echo "respond method is missing.\n";
        }
        foreach ($exst_methods as $method_name) {
            if (!in_array($method_name, $allowed_publics)) {
                echo "Not allowed public method $method_name \n";
            }
        }
    }

    //  check private method names
    if (method_exists($this, 'prohib_prv')) {
        echo "Method prohib_prv should not exist.\n";
    }
  }
}


class Bbranch extends Aroot 
{

  public function prohib() 
  {
  }

  private function prohib_prv() 
  {
  }

  protected function prohib_prt() 
  {
  }
}

$bbranch_obj = new Bbranch;  
$aroot = new Aroot;  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档