我正在用 PHP5 创建一个网络应用程序。到目前为止,我有两个“全局”变量:$input 和 $sql。$input 是来自 $_GET、$_POST 和 $_COOKIE 的经过验证和清理的输入。$sql 是我的 mysql(i) 类的一个实例。
几乎所有其他课程都需要这两个。这可以通过将它们作为参数传递给每个类的 __construct 函数来相对容易地实现。但这似乎……笨拙。除了更多的类特定参数和潜在的未来全局变量外,它还提供了笨拙的函数调用。
据我了解,简单且 noobie 的替代方法是使用 global 关键字。我不想那样做。我得到了全局变量的缺点,尽管在我的场景(小应用程序)中它们并不重要。但是在再次使用它们之前明确地将它们标记为全局也很笨拙。
我想一种更优雅的方式:我有一个 webapp 类,我从中扩展了所有其他类。这个 webapp 类包含我在多个其他类中需要的常用功能,但不保证单独的类。如果我将 $input 和 $sql 作为静态变量存储在这个 webapp 主类中,它们将可以在所有子类中访问。但我知道静态变量与全局变量一样多,如果不是更多的话。
真的吗?我想我是那些想太多所有事情的人之一,但我喜欢优雅的代码,这在我(业余)眼中看起来很优雅。