我正在使用 Laravel 并且有一個輔助函式 app()(app() 函式本身作為全域函式內置在框架中,我無意修改它),在我的應用程式中我只想讓它保持可用在某些類中,而不是在其他類中。
我想做的是如下
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();
這甚至有可能實作嗎?
提前致謝。
編輯:為了提供更多背景關系,我的代碼有一些內部類函式,這些函式使用 app 根據各種可訪問性限制創建各種實體。代碼將由各種其他人而不是我自己管理。當其他人來管理我的代碼時,我想避免他不使用我的內部函式而只使用 app() 的情況,因為這是最方便的方式(并且無意中繞過了可訪問性限制檢查)。
uj5u.com熱心網友回復:
您想限制第三方服務提供的功能的可見性或可訪問性,以便某些類可以訪問它而其他類無法訪問它。PHP 沒有提供這樣的結構。
uj5u.com熱心網友回復:
在 PHP 中,據我所知,您無法停止全域函式。這已經說過了。所以我寫作有兩個原因
- 你不應該那樣做。
- 還是可以實作的。
TLDR;
#1 好的系統設計取決于好的程式員。理想的方法是向新成員提供適當的檔案并告訴他們遵循。但是了解團隊的作業方式,他們會避免及時記錄。第二步是給你的。
#2 設定代碼質量。在您的 Repo/git/svn 中嘗試放置一些代碼質量規則,拒絕包含這些函式呼叫的任何代碼提交。我不確定它是否可以輕松實作。我從來沒有這樣做。我始終相信讓開發人員按照他們想要的方式做,并訓練他們以正確的方式使用。如果他們不能,他們就不是優秀的開發人員,我們也不需要他們在團隊中。
但是對于偶然的用例,我們可以擁有代碼質量自動化我知道 Visual Studio 有代碼分析,PHP 也有一些工具,也許在提交更改版主等上進行單詞搜索來檢查和拒絕代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/365872.html
上一篇:使模型功能停止計數
