【问题标题】:How to replace global in php 4 function如何在php 4函数中替换全局
【发布时间】:2011-11-05 15:03:00
【问题描述】:

我有一堆脚本必须移植到 php 5。它们在函数中定义了 global $name, $something...;。这些函数不在类中。 如何将这些变量保留在函数中?

一个示例函数

function myTest($str)  
{   
  global $name, $something; 

  if($name['male'] =='Joe') return 5;

} 

感谢您的帮助。谢谢。

【问题讨论】:

  • 以上在 php 5 中仍然有效
  • 对我没用。 register_globals 在服务器上已关闭并将保留。
  • 这很好听,但不相关。 “全局”变量是一种内置的语言结构,不会因此受到影响。你可能改编了别的东西。您在此处使用的 var 名称过于通用(函数名称也是如此),很容易引发冲突和覆盖值。
  • 为我工作。你用的是什么php版本?

标签: php global-variables php4


【解决方案1】:

因为您使用register_globals = On 并且知道您没有,您还需要添加初始化全局变量的代码:

// Variables must be setted
$foo = validateFoo($_GET['foo']); // or $_REQUEST
$bar = validateBar($_GET['bar']); // or $_REQUEST

function test ()
{
  global $foo;
  global $bar;

  return $foo . ' ' . $bar;
}

// Call function using global vars after global vars have been setted
echo test();

【讨论】:

  • 虽然不是一个理想的解决方案,但这可能是最简单的解决方法。
  • 理想的解决方案是重构所有代码,但有时这样做并不值得。想想看。这是一些依赖 register_globals 的旧 PHP4 项目。啊啊啊!!!我想在与那些野兽一起工作时花费尽可能少的时间......
猜你喜欢
  • 2011-05-26
  • 2011-12-30
  • 2020-05-11
  • 1970-01-01
  • 2013-07-15
  • 2019-07-20
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
相关资源
最近更新 更多