限制php中include文件中变量的范围


Restrict scope of variable within include file in php

我在设计应用程序时遇到了变量冲突问题。

例如,在我的一个web应用程序页面中,有两个模块

i: 标记云模块ii:照片列表模块

两者都有变量$listOrder,例如当脚本处理模块"tag cloudes"将$listOrder="tagid desc"设置为初始未设置。

if(!isset($listOrder))
   $listOrder = "tagid desc";   

当脚本再次到达照片列表模块时,它会尝试处理下面的行,如上所示。as变量已在标记云列表中设置。它保持"tagid-desc"作为值。导致sql错误的原因是"tagid"不是照片列表的字段。

这是一个简单的例子,有超过4或5个模块,每个页面中都有很多相似的变量,这会导致冲突。

我们可以做些什么来将php中变量的范围限制在模块级别以避免这种冲突吗。

可以。您可以创建类和(从PHP 5.3开始)名称空间。

如果你有一个这样的类,你可以把变量和函数放在这个类中:

class Module1
{
  public $listOrder = 'tagid desc';
  public function generateSQL()
  {
    return 'select * from YourTable order by ' . $this->listOrder;
  }
}

现在,您可以创建一个模块的实例(甚至可以创建多个实例),并调用其方法:

$module1 = new Module1;
$module1->listOrder = 'name asc'; // Override default sorting
$sql = $module1->generateSQL();

这只是可能性的一个小例子,但我认为关于classes/oop的完整教程在这里是不合适的。)