0

我目前正在构建一个 CMS,我现在一直在尝试解决这个问题。所以,我正在构建这个 CMS,以便人们可以制作主题、小部件。等等。

我的问题是,CMS 核心中有一些我不希望开发人员访问的功能,以及我不希望他们能够使用的整个类。

我不希望开发人员访问的函数的一个示例是 createNewUser 函数。

我不希望开发人员访问的类是数据库类。

我曾考虑在我想要保持“CMS 核心私有”的每个函数的顶部使用 db_backtrace,但这似乎非常不明智。

任何涉及向函数传递额外参数的解决方案都是不可取的,因为已经存在并且将会有更多的函数我需要对核心保持私有,并且这种类型的解决方案很可能很容易被欺骗。

任何帮助将不胜感激。:)

-编辑-

我不确定我是否清楚。
我确实会自己托管它,尽管我希望允许开发人员在本地托管它,他们自己允许本地开发。
我不会有任何问题知道开发人员应该可以访问哪些函数/类,我遇到的问题是如何实现它;允许系统的一部分(核心)调用函数,但不允许不同的部分(主题)。说我有课

class DataBase {
    public static function doSomething() {
        //Stuff
    }
}

如何使 doSomething 对核心可见,但对包含的文件不可见,我认为它们不是核心的一部分。

4

1 回答 1

1

您可以使用debug_backtrace()函数来获取来电者信息。就像是:

class DataBase {
  public static function doSomething() {
      $allowed = false;
      foreach(debug_backtrace() as $trace) {
         switch($trace['class']) {
          case 'Core':
          case 'AnotherAllowedClass':
          $allowed = true;
          break 2;
        }
      }
      if(!$allowed)
       throw new Exception('denied');
      /* do stuff */
    }
  }
}
于 2013-11-06T20:57:11.430 回答