При проектирование практически каждого веб-приложения приходится иметь дело с «профайлами», или «анкетами» Будь то сайт знакомств или электронный магазин - «профайл» - это совокупность свойств бизнес - объекта. (Прошу не путать со свойствами объекта в программировании).
Например: профайл пользователя содержит свойства пользователя (человека), например имя, фамилию, номер телефона или кредитной карты, email. Наиболее распространенный подход для решения проблемы - добавить соответствующие члены класса User:
class User
{
public $username;
public $email;
public $firstName;
public $icq;
...
}
Однако в этом случае сразу же следует забыть о гибкости - при добавлении\изменении количества или функциональности полей профайла потребуется изменить класс User, что семантический неверно, так как функционал User по сути в этом случае не меняется. Гораздо лучше будет выглядеть:
class User
{
public $username;
protected $profile = array(
'firstName'=>null,
'icq'=>null,
'email'=>null
);
...
}
Уже гораздо лучше! Однако следует затронуть еще один момент...
При выводе на страницу определенного поля, нам, возможно, потребуется особым образом подготовить данные. Например, для email добавить
email: