我希望在所有其他类中包含以下类,但是当我使用include或include_once命令时,我的PHP页面会失败。
<?php
/**
* Configuration class
*
* @author LennieDG
* 25 July 2009
*/
class CConfig
{
public static final $DB_HOST = "...";
public static final $DB_NAME = "...";
public static final $DB_USERNAME = "...";
public static final $DB_PASSWORD = "...";
}
?>
答案 0 :(得分:2)
您无法将final
用于属性。它只允许使用类和方法。
确保您在开发过程中正确设置error_reporting
和display_errors
。
答案 1 :(得分:1)
只是旁注:
在PHP中无法将属性声明为final。只有类和方法可以声明为final。要使用PHP实现这一点,您应该使用类常量。
PHP5 - 最终关键字:http://us.php.net/manual/en/language.oop5.final.php
PHP5 - 类常量:http://us.php.net/manual/en/language.oop5.constants.php
答案 2 :(得分:0)
由于您的所有属性都是静态的,因此可以通过
在任何地方访问它们CConfig::$DB_HOST
但不推荐这样做,因为它有很多相同的问题都在使用全局变量。另一个选择是不使值静态并将实例传递给任何需要它的类(这称为依赖注入)。
$config = new CConfig();
// Either via the constructor
$obj = new OtherObject($config);
// or a setter
$obj->setConfig($config);
这使得测试变得更加容易(因为您可以模拟CConfig对象)并使其他对象更具可重用性。它确实意味着您需要访问CConfig实例,无论您打算在何处使用它。这可以通过使用类似注册表模式或依赖注入容器之类的东西来处理(但这可能会稍微提高一点)。