gpt4 book ai didi

php - PHP Globals 的安全替代品(良好编码实践)

转载 作者:可可西里 更新时间:2023-10-31 22:18:35 24 4
gpt4 key购买 nike

多年来我一直在使用 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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com