PHP - Как мне назвать информацию, хранящуюся в моем классе Page? - PullRequest
1 голос
/ 18 декабря 2008

У меня есть класс с именем Page с частным свойством, которое в настоящее время называется _pageData, в котором хранится вся информация (например, заголовок, контент, ключевые слова и т. Д.).

Однако, для меня это выглядит не очень хорошо, когда я говорю об этом $this->_pageData. Я хочу придумать более подходящее имя и предположить, что для такого рода вещей, вероятно, будет стандартное имя или префикс / суффикс «наилучшей практики». Я думал о «_assets».

Могу ли я спросить, что вы использовали в прошлом, однозначное имя, которое не заставило вас идти по пути, добавить к нему некоторые данные и сказать: «О, нет, теперь в моем массиве есть данные, которые выходят за рамки имя переменной ". Это случалось со мной несколько раз, поэтому я хотел бы увидеть, что доказало свою эффективность.

Ответы [ 2 ]

2 голосов
/ 18 декабря 2008
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 ()).

0 голосов
/ 18 декабря 2008

Это очень специфично, и я не думаю, что есть "стандарт" или "лучшая практика". Просто назовите это так, как вам кажется. Я бы просто назвал это «данными», так как Page это класс, $ this = Page, поэтому Page-> Data. Это будет достаточно для меня.

Я не могу придумать лучшего имени ... Может, это звучит странно, потому что вы используете префикс _? Я не люблю использовать такие префиксы, особенно в PHP, это не имеет особого смысла, но это только я.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...