Когда мне следует объявлять переменные в классе PHP?

private static Dictionary<string, string> GetAuthors()
{
    return typeof(Book).GetProperties()
        .SelectMany(prop => prop.GetCustomAttributes())
        .OfType<AuthorAttribute>()
        .ToDictionary(attribute => attribute.Name, attribute => attribute.Name);
}
43
задан j08691 25 June 2013 в 16:40
поделиться

5 ответов

Эта переменная не инициализирована, она просто необъявлена.

Объявление переменных в определении класса - это стиль для удобства чтения. Кроме того, вы можете установить доступность (частную или общедоступную).

В любом случае явное объявление переменных не имеет ничего общего с ООП, это зависит от языка программирования. В Java вы не можете этого сделать, потому что переменные должны быть объявлены явно.

42
ответ дан 26 November 2019 в 20:33
поделиться

Если вы объявляете член внутри класса, вы можете установить его доступность, например,

private $varname;
15
ответ дан 26 November 2019 в 20:33
поделиться

Вы всегда должны объявлять свои переменные-члены и указывать их доступность в ваших классах. Мне нравится помещать эту информацию в конце класса после моих функций.

Вы должны определить их, как только у вас будет достаточно информации для этого. Возможно, в конструкторе или через функции установки.

Это важно, потому что это значительно облегчает жизнь людям, работающим с вашим кодом. Им не нужно гадать, откуда берутся разные свойства или почему они там. Кроме того, большинство (если не все) IDE не будут обрабатывать переменные класса, если вы не объявили их где-то. Автозавершение кода / подсказки - одно из многих преимуществ IDE, и без объявления переменных вы сделаете эту функцию бесполезной.

11
ответ дан 26 November 2019 в 20:33
поделиться

Обычно переменные должны быть инициализированы, как только у вас будет достаточно информации, чтобы сделать это должным образом.

Если переменная класса требует правильной инициализации определенной информации, то эту информацию следует передать в конструктор.

Использование синтаксиса PHP для неявного объявления переменных в точке определения - это, IMHO, верный способ внести ошибки - если вашему классу нужна переменная, объявите ее и используйте всю скрытую информацию, которую предоставляет вам ООП.

0
ответ дан 26 November 2019 в 20:33
поделиться

Общая парадигма инкапсуляции ООП гласит, что вы не должны открывать свои внутренние переменные состояния извне, что означает, что они должны быть частными, что позволяет вам изменять реализацию вашего класса без необходимости изменения кода, где вы пользуетесь им. Лучше всего инициализировать переменные через конструкторы и методы получения и установки класса.

1
ответ дан 26 November 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: