Я пытаюсь создать атрибуты класса в конструкторе, а затем получить к ним доступ в расширенном классе, но у меня возникают проблемы с их получением.
Вот мои настройки, извинения, много кода.
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()
в моем конструкторе?Или стоит перевести автозагрузку, так как это расширяет родительский элемент?