PHP 5将类包含到另一个类中

时间:2009-07-26 10:36:48

标签: php

我希望在所有其他类中包含以下类,但是当我使用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 = "...";
}
?>

3 个答案:

答案 0 :(得分:2)

您无法将final用于属性。它只允许使用类和方法。

确保您在开发过程中正确设置error_reportingdisplay_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实例,无论您打算在何处使用它。这可以通过使用类似注册表模式或依赖注入容器之类的东西来处理(但这可能会稍微提高一点)。