And*_*ift 7 php function global-variables clarity
我有一个程序,我在几个网站上使用.它使用require('config.php'); 设置任何站点相关变量,如mysql连接信息,路径等.
假设我在一个函数中使用这些依赖于站点的变量之一,比如$ backup_path.
此变量最初在config.php中声明,并且不出现在主程序文件中.
我需要在函数makebackup($ table_name)中访问这个变量; (也在单独的functions.php文件中).
是不是说更好
makebackup('my_table');
然后在函数内部使用"global $ backup_path" ,或者更好地使用函数调用函数
makebackup('my_table',$backup_path);
第一个问题的论点是,它使主程序流程简单易懂,不会混乱.
第二个问题的论点是,经过一段时间后变量$ backup_path可能并不明显,调试或返工可能很困难.
这些技术中的一种或另一种在专业程序员中是"标准的"吗?或者我应该使用$ _SESSION来声明这些全局变量?
第二种选择,
makebackup('my_table', $backup_path);
Run Code Online (Sandbox Code Playgroud)
是可重复使用的功能,因此通常是优选的.额外的论点对于可重用性来说并不是一个很大的代价.
如果您完全确定您将仅在该特定应用程序中使用该功能,并且仅针对$ backup_path,那么可以考虑全局替代方案.即便如此,检查全局变量实际存在也是一件好事.请注意,一旦开始使用全局变量,就很难摆脱全局变量.
请记住,您可以为函数设置默认值:
function makebackup($table, $dir = CONFIG_BACKUP_PATH)
Run Code Online (Sandbox Code Playgroud)
这样,您就不必在默认情况下提供变量,您可以简单地假设配置的备份路径是默认路径。
这假设您使用的是常量,而不是全局变量。