При загрузке свойств класса, как ваш $header
выше, php ожидает, что видимость свойства будет объявлена перед именем переменной. PHP5 имеет три варианта видимости: «публичный», «приватный» или «защищенный». Я думаю, именно поэтому вы получаете "неожиданный T_VARIABLE". Разница между ними описана в swik.net как:
Для защиты от загрязнения доступности в PHP v5 введены 3 префикса для объявления методов или переменных класса: открытый, защищенный и закрытый.
Открытые методы и переменные доступны вне класса. Защищенные доступны только изнутри класса и унаследованных или родительских классов. Частные доступны только из самого класса.
попробуйте это: (Я выбрал «публичную» видимость, вы можете определить, что подходит для вашего использования)
public $header = array('header'=>'Welcome to my blog");
Далее, я думаю, вы должны вызывать свой синтаксический анализатор в конструкторе, а не вне метода класса.
function _construct(){
parent::_construct();
$this->parser->parse('header',$this->header);
}
Конструктор будет вызываться каждый раз, когда создается экземпляр класса, загружая вместе с ним ваш метод библиотеки анализатора.
Обновление:
Ваш комментарий предполагает, что парсер работает не так, как вы ожидаете. Я полагаю, вы разместили
$this->parser->parse('header,$this->header);
в функции конструктора, как я и предлагал. Если это не сработает, создайте функцию с тем же именем, что и ваш класс, и поместите туда анализатор, эта функция будет загружаться при каждом вызове класса, аналогично конструктору, но давайте посмотрим, поможет ли это. Я предлагаю вывести библиотеку анализатора из автозагрузки, пока вы не решите свою проблему, просто для упрощения.
function blog(){
$this->load->library('parser');
$this->parser->parse('header',$this->header);
}