Методы PHP: getMyVariable () против myVariable () - PullRequest
3 голосов
/ 20 августа 2010

Мне было интересно, что лучше или больше принимается при кодировании на PHP. В Java меня учили, что методы класса для получения и установки переменных должны иметь префикс «get» и «set». Однако я хочу знать, стоит ли использовать эти префиксы в обычных функциях PHP.

Например, для получения имени пользователя из переменной сеанса у меня будет либо
getUsername()
или
username()

Каковы преимущества и лучшие практики. Я знаю, что использование «get» является более мнемоническим, но это довольно избыточно (особенно для личного проекта, который я не ожидаю, что другие люди будут читать), но ради хорошей практики я хотел бы сделать это правильно.

Пока я занимаюсь этим, каково правильное соглашение о присвоении имен переменным? Подчеркнутый или верблюжий чехол? Я посмотрел вокруг и увидел смесь обоих. Wordpress обычно использует подчеркивания в именах своих функций, но многие другие сайты считают, что верблюжий чемодан лучше.

Ответы [ 6 ]

7 голосов
/ 20 августа 2010

Я лично стараюсь держаться подальше от добытчиков / сеттеров. Я предпочитаю использовать магические методы, поэтому я могу делать $foo->myVar без необходимости явного вызова функции (я думаю, что это делает код более читабельным).

С учетом вышесказанного, существуют обстоятельства, когда я использую явные методы получения и установки (в основном в ситуациях, когда результат будет неоднозначным при непосредственном использовании переменных. Например, если я сопоставляю магические методы с внутренним массивом и имею другие переменные-члены, которые нуждаются в доступ). В этих обстоятельствах я использую $foo->getMyVar() в качестве сигнатуры функции.

ИМХО, $foo->myVar() имеет смысл, если вы знаете, что это переменная. Но что произойдет, если вы увидите $foo->show(). Означает ли это, чтобы выполнить действие шоу? Или это значит получить текущую настройку для переменной show?

Я всегда стараюсь назвать все методы чем-то, что идентифицирует их действия. $foo->var() не дает никаких указаний на то, что происходит. Но $foo->showVar() делает (по крайней мере, более того).

Что касается соглашения об именах, все зависит от того, кого вы читаете. Я предпочитаю чехол на верблюде. Но нет ничего плохого в подчеркивании. Выберите один и придерживайтесь его. Последовательность важнее, чем сам выбор ...

4 голосов
/ 20 августа 2010

Как правило, метод должен содержать глагол.

Ознакомьтесь с соглашениями об именах PEAR для PHP: http://pear.php.net/manual/en/standards.naming.php

Они поддерживают префикс get для методов-получателей.,Я бы изменил это, чтобы использовать «is» в качестве префикса для логических свойств класса.

PEAR также поощряет использование верблюжьего футляра (или "колпачков") вместо подчеркивания.

2 голосов
/ 20 августа 2010

Лично я считаю префикс get полезным.Хотя это зависит от вашей IDE и предпочтений.Если ваша IDE предоставляет комментарии и всплывающие подсказки, она может напомнить вам простым наведением мыши, что myFunction делает то или иное.

Существуют другие полезные префиксы, которые я часто использую: get, set, validate (или просто val), parse и show.Я обнаружил, что в море функций очень помогают маленькие дескрипторы.

1 голос
/ 20 августа 2010

Пока я в этом, что является правильным соглашение об именовании переменных? Подчеркнутый или верблюжий кейс?

Все, что вам нравится больше всего, если вы согласны с этим. Стиль подчеркивания больше напоминает стиль старой школы и C, в то время как стиль верблюжьих корней явно вдохновлен Java. Хотя разделение подчеркиванием делает ваши имена длиннее.

1 голос
/ 20 августа 2010

прежде всего $_SESSION - это глобальная переменная, для нее вам действительно не нужен геттер. Лучше использовать getUsername () в соответствии с лучшим соглашением об именах.

Отдых - это личный выбор или мнение. Лучше выбрать соглашение об именах, которое вам подходит, и придерживаться его.

0 голосов
/ 20 августа 2010

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

Другой ключ - последовательность ... выберите что-нибудь и придерживайтесь этого.

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