多年来我一直在使用 global $var,$var2,...,$varn
对于我的应用程序中的方法。我已经将它们用于两个主要实现:
获取已设置的类(例如数据库连接),并将信息传递给显示到页面的函数。
示例:
$output['header']['log_out'] = "Log Out";
function showPage(){
global $db, $output;
$db = ( isset( $db ) ) ? $db : new Database();
$output['header']['title'] = $db->getConfig( 'siteTitle' );
require( 'myHTMLPage.html' );
exit();
}
但是,这样做会对性能和安全产生影响。
我可以使用哪些替代实践来保持我的功能但改进设计、性能和/或安全性?
这是我在 SO 上问过的第一个问题,所以如果您需要澄清,请发表评论!
最佳答案
另一种方法称为依赖注入(inject)。简而言之,这意味着您将函数/类/对象所需的数据作为参数传递。
function showPage(Database $db, array &$output) {
...
}
$output['header']['log_out'] = "Log Out";
$db = new Database;
showPage($db, $output);
出于多种原因,这更好:
关于php - PHP Globals 的安全替代品(良好编码实践),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7290993/