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

时间:2013-12-07 12:58:11

标签: php

我正在设计的应用程序中遇到可变冲突的问题。

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

我:标签云模块 ii:照片列表模块

两者都有变量 $ listOrder ,例如,当脚本处理模块“标记模糊”时,它将 $ listOrder =“tagid desc”设置为最初没有设定。

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

当脚本再次到达照片列表模块时,它会尝试处理以下行,如上所示。因为变量已经在标签云列表中设置。它将“tagid desc”保留为值。这导致sql错误,因为“tagid”不是照片列表的字段。

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

我们可以做一些事情来限制php中的模块级别的变量范围,以避免这种冲突。

1 个答案:

答案 0 :(得分:0)

是的,你可以。您可以使用类和(从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();

这只是可能性的一个小例子,但我认为关于类/ oop的完整教程在这里会出现故障。 ;)