2009-12-22 4 views
2

Я прихожу из Java/Objective-C в PHP и нахожу его horrible. Я имею в виду, PHP хороший, действительно. Но когда вы смотрите на кучу переменных, вы не знаете: это номер? Это строка? Или это даже причудливый объект, который может выполнять действия при вызове методов на нем?Есть ли полезные соглашения об именах PHP?

Так что я задаюсь вопросом, есть ли полезные переменные соглашения об именах для переменных, чтобы помочь выяснить, что-то является объектом или что-то просто скучная переменная. Я бы сказал, что если что-то есть объект, т. Е. Экземпляр класса, первый символ должен быть БОЛЬШИМ. Но это всего лишь предположение. Надеюсь прочитать несколько советов от PHP-профессионалов :-)

+0

Номер или строка? Ну, это может быть и то, и другое, в зависимости от того, где вы находитесь в своем скрипте (переменные не так сильно набраны, как в JAVA). –

+5

Реальная проблема именования с PHP - это полностью противоречивые схемы именования и порядки параметров во встроенной библиотеке. – phoebus

+3

В Objective-C нет никаких принудительных соглашений об именах, так что это в основном в вашей голове. –

ответ

10

Как и на других языках, в PHP нет единого стандарта кодирования. Вы можете, среди прочих (см. Комментарии), проверить Zend coding standards, они весьма высоко оценены, так как они очень близки (и частично идентичны) основной группе разработчиков PHP.

+0

добавьте PEAR, пожалуйста: http://pear.php.net/manual/en/standards.php – Gordon

+1

Я также придерживаюсь принципов кодирования Zend: camelCasedVariables, This_Class_Naming_Scheme, BIG_CONSTANTS и идентификаторов, которые на самом деле говорят вам, что они представляют как $ databaseConnection вместо $ dbc. – selfawaresoup

3

Что нужно для предотвращения использования конвенций, с которыми вы уже знакомы? Вероятно, нет ничего уникального для PHP, о котором вы еще не видели.

0

Я обычно придерживаться этого простого правила

Внушительные ГорбатыйРегистр имена переменных (с префиксом типа раньше) например: intNbDaysLeft было бы хорошо для целого

+0

Yuck! Как вы префиксную переменную, содержащую «Zend_Gdata_MimeBodyString», затем? :) – Gordon

+0

Когда dataType длинный и сложный, я обычно беру первую букву каждого слова. Итак, вы получите что-то вроде zgmbsVariable. Некоторые люди сводят его только к первой 3-й букве, или то, что мы делаем, добавляет o для Object + значащее имя. Опять же, я настаиваю на ЗНАЧЕНИИ. Если вы понимаете, что пишете, а другие люди, то все в порядке. Все дело в том, как вы привыкли работать. –

+0

Значимые + системы венгерские? Я почти уверен, что это оксюморон. – Johrn

0

Я использую Zend Eclipse, так что я описать свои переменные как это, чтобы убедиться, что они были intellisensed. Тогда я меньше беспокоюсь о том, «что это?»

/** 
* @var Zend_Form_Element 
*/ 
protected $_member; 

или

/** 
* @param Zend_Form_Element $input 
*/ 
function do_it($input) 

или

$my_var = some_function(); /* @var $my_var Zend_Form_Element */ 
+2

Это PHPDoc, а не «Zend Eclipse convention». – chelmertz

0

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

Использование PHPDoc с Eclipse или NetBeans помогает, но вы не можете полагаться на это, если хотите убедиться, что ваша переменная имеет определенный тип, вы должны ее проверить (is_array(), instanceof, ect.).

Кроме того, PHP делает много для вас, он будет преобразовывать типы Betwen от вашего имени, он будет действовать по-разному в зависимости от типа.

PHP в основном работает со строками, поэтому большинство переменных этого типа. Приложения могут иметь множество типов, но один метод не должен использовать слишком много. Если вы найдете , используя так много объектов, которые вы не можете легко отслеживать имена своих экземпляров, тогда это проблема дизайна, а не проблема с именованием.

Если вы хотите быть уверены, что не используете какую-либо переменную неправильно, обязательно выполните единичный тест. Стандартом в PHP является phpunit

+0

«PHP в основном работает со строками, поэтому большинство переменных этого типа» ... [Требуется код] – nickf

-3

Мое любимое соглашение об именовании имен в PHP - это то, где «PHP» всегда называется «огромной кучей cr-, с которой мы не будем касаться bargepole».

+0

всегда есть один, нет – nickf

+1

Ух, крутая толпа. –

+0

Да, жестко, но если мы допустим эти ответы, все это станет одной большой плохой шуткой, поскольку для каждого вопроса программирования есть такие мнения. – Sam