PHP : 有没有办法禁止在某些 class 中使用 global/system 函数?

PHP : is there a way to forbid use of global/system function in certain class?

我正在使用 Laravel 并且有一个辅助函数 app()(app() 函数本身作为全局函数内置在框架中,我无意修改它)其中我的应用程序我想让它只在某些 classes 而不是其他人中可用。

我想做的是下面这样的事情

class Bar {
    public function __construct() {
        forbid_use_of_function('app');
    }

    public function bar() {
        app('SomeService');
    }
}

$foo = new Bar();

// The following line will give error or throw exception 
$foo->bar();

这有可能实现吗?

提前致谢。

编辑:为了提供更多上下文,我的代码有一些内部 class 函数,这些函数使用应用程序根据各种可访问性限制创建各种实例。该代码将由各种其他人而不是我自己管理。当其他人来管理我的代码时,我想避免他不使用我的内部函数而只使用 app() 的情况,因为这是最方便的方法(并且无意中绕过可访问性限制检查)。

您想限制第三方服务提供的功能的可见性或可访问性,以便某些 类 可以访问而其他人无法访问。 PHP.

没有提供这样的结构

据我所知,在 PHP 中您无法停止全局函数。这已经说过了。所以我写作有两个原因

  1. 你不应该那样做。
  2. 还是可以实现的

TLDR;

#1 好的系统设计离不开好的程序员。理想的方法是向新成员提供适当的文档并告诉他们遵守。但是了解团队的工作方式并且他们有时会避免文档。第二步适合你。

#2 设置代码质量。在您的 Repo/git/svn 中尝试放置一些代码质量规则,拒绝任何包含这些函数调用的代码提交。我不确定它是否可以轻松实现。我从来没有这样做。我始终相信让开发人员按照他们想要的方式做,并训练他们使用正确的方式。如果他们做不到,他们就不是好的开发人员,而且我们团队中也不需要他们。

但是对于偶然的用例,我们可以使用代码质量自动化,我知道 Visual Studio 有代码分析,PHP 也有一些工具,也许在提交时进行单词搜索 alter moderator 等来检查和拒绝代码.