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 中您无法停止全局函数。这已经说过了。所以我写作有两个原因
- 你不应该那样做。
- 还是可以实现的
TLDR;
#1 好的系统设计离不开好的程序员。理想的方法是向新成员提供适当的文档并告诉他们遵守。但是了解团队的工作方式并且他们有时会避免文档。第二步适合你。
#2 设置代码质量。在您的 Repo/git/svn 中尝试放置一些代码质量规则,拒绝任何包含这些函数调用的代码提交。我不确定它是否可以轻松实现。我从来没有这样做。我始终相信让开发人员按照他们想要的方式做,并训练他们使用正确的方式。如果他们做不到,他们就不是好的开发人员,而且我们团队中也不需要他们。
但是对于偶然的用例,我们可以使用代码质量自动化,我知道 Visual Studio 有代码分析,PHP 也有一些工具,也许在提交时进行单词搜索 alter moderator 等来检查和拒绝代码.
我正在使用 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 中您无法停止全局函数。这已经说过了。所以我写作有两个原因
- 你不应该那样做。
- 还是可以实现的
TLDR;
#1 好的系统设计离不开好的程序员。理想的方法是向新成员提供适当的文档并告诉他们遵守。但是了解团队的工作方式并且他们有时会避免文档。第二步适合你。
#2 设置代码质量。在您的 Repo/git/svn 中尝试放置一些代码质量规则,拒绝任何包含这些函数调用的代码提交。我不确定它是否可以轻松实现。我从来没有这样做。我始终相信让开发人员按照他们想要的方式做,并训练他们使用正确的方式。如果他们做不到,他们就不是好的开发人员,而且我们团队中也不需要他们。
但是对于偶然的用例,我们可以使用代码质量自动化,我知道 Visual Studio 有代码分析,PHP 也有一些工具,也许在提交时进行单词搜索 alter moderator 等来检查和拒绝代码.