class Page {
public $title = '';
public $keywords = array();
public $content = '';
// etc.
}
$page = new Page();
echo '<title>' . $page->title . '</title>';
echo $page->content;
Или вы можете использовать accessors / get-set и т.п., чтобы защитить ваши данные, разрешить их постоянное изменение или что-то еще. Это учитывает ленивую инициализацию и ленивое письмо (не уверенный, есть ли подходящий термин для последнего). Пример:
class Page {
private $data = array('title' => '', 'keywords' => array(), 'content' => '');
public __get($name) {
if(isset($this->data[$name]))
return $this->data[$name];
/* You probably want to throw some sort of PHP error here. */
return 'ERROR!';
}
}
$page = new Page();
echo '<title>' . $page->title . '</title>';
echo $page->content;
(Подробнее см. в руководстве по PHP5 .)
Обратите внимание, что вы можете скрыть элементы $ data или даже изменить их или добавить новые (например, $ page-> contentHTML может преобразовать уценку в HTML).
Использование имени _pageData
является избыточным для класса Page. Вы уже знаете, что это страница, поэтому вы повторяете информацию ($ currentPage -> _ pageData против $ currentPage-> data).
Я также нахожу ассоциативные массивы немного более запутанными для такого рода вещей, но они могут быть необходимы, если вы хотите действительно динамичную систему. В любом случае, вы можете реализовать свою систему шаблонов для доступа к членам класса по имени ($member = 'title'; echo $page->$member; // echoes $page->title
), предполагая, что это то, для чего вы хотели получить массив (кроме простого запроса к базе данных, для которого вы можете использовать list ()).