我正在尝试在构造函数中创建类属性,然后在扩展类中访问它们,但是遇到它们时遇到了麻烦。
这是我的设置,道歉,很多代码。
class Object {
function __autoload($c){
strtolower($c);
include_once('lib/'.$c);
}
function __construct() {
}
}
class Rules extends Object{
function __autoload(){
include_once('lib/rules.php');
}
// Store our set of rules
public static $consonant = '';
public static $vowel = '';
public static $other = '';
function __construct() {
global $_CONF;
// Store a set of rules, as we create them from the config
$this->consonant = '/^[^'.$_CONF['vowels'].$_CONF['additional'].']+/';
$this->vowel = '/['.$_CONF['vowels'].']+/';
$this->other = '/^('.$_CONF['additional'].'+)(.*)/';
}
}
这是我遇到麻烦的地方
class Translate extends Rules{
function __autoload(){
include_once('lib/translate.php');
}
function __construct() {
parent::__construct();
}
// etc, function()
$return .= preg_replace(parent::$vowel, "$1$2'".$_CONF['vowelending'], $word);
}
警告:preg_replace() [function.preg-replace]:清空常规 表达 d:\ XAMPP \ htdocs中\ PigLatin2 \ LIB \ translate.php 第45行
现在对我来说很明显,父类属性没有被正确读取。我已将其从parent::vowel
更改为parent::$vowel
并将其设为static
,但仍未读取正确的值。
我是否需要在构造函数中实例化$rule = new Rules()
的新副本?或者应该翻译自动加载,因为它正在扩展父级?
答案 0 :(得分:0)
在Translate
班级中,parent::$vowel
会引用Rules
班级中的静态属性。
您的属性不是static
,因此请改为使用$this->vowel
。