При инициализации системы запускается класс PageParser, который по ходу выполнения сценария подключает другие базовые классы системы, передавая им полномочия на выполнение тех или иных операций. Это части ядра PHP-платформы Wad-er. Их можно расширить или перезаписать используемые в них методы (функции).
В большинстве случаев необходимость поменять функционал базовых классов возникает редко, однако эта возможность делает PHP-платформу Wad-er очень гибкой и легко расширяемой платформой.
Внимание. Прежде чем заменять базовые классы и вводить свой код в основной функционал платформы хорошо подумайте, не повлечет ли это необратимые последствия.
Для расширения функциональности классов ядра можно переопределять методы системных классов путем наследования. Расширение системных классов происходит в соответствии с базовыми методиками ООП программирования:
class subClass extends baseClass
{
//...
}
Если необходимо использовать родительский конструктор, необходимо вызвать его в конструкторе дочернего класса:
class subClass extends baseClass
{
public function __construct()
{
parent::__construct();
}
}
Пример расширения системного класса wAjaxMindCard (отображение карты сайта):
include_once(SYS_BASE_PATH.'main/classes/wajaxmindcard.class.php');
class wsitemap extends wAjaxMindCard
{
public function makeTitle($d, $rs)
{
global $parser;
($rs->fields[2]) ? $d = "fields[0]."'))\" ti-tle=\"\">".$d."" : $d = "makeUrl($rs->fields[0])."\" title=\"\">".$d."";
return $d;
}
}
$w = new wsitemap();
$w->q->select('objid');
$w->q->select('name', '', array('lang' => true));
$w->q->select('isfolder');
$w->q->select('parent');
$w->q->select("'' AS notes");
$w->q->select('flt1');
$w->q->from('sys_objects');
$w->q->where("objid<>'0'");
$w->q->where('bool2=1');
$w->q->where('bool3=1');
//$w->q->where('flt2=1');
$w->q->where("objtype='sys_elements_pages'");
$w->q->where("parent=:parent:");
$w->q->orderby('flt1');
$w->q->orderby('name', true);
$w->title = $parser->config['site_name'];
$w->show();