Вы префикс ваших имен классов? - PullRequest
2 голосов
/ 25 февраля 2010

Простой вопрос: ставите ли вы перед вашими классами PHP (например, вашими библиотечными классами) название вашей компании?

Пример: Zend ставит перед префиксом Zend_ все, но это нормально, потому что это фреймворк (поэтому они хотят избежать конфликтов). Должен ли я сделать то же самое для библиотечных классов моей компании? Буду ли я когда-нибудь конфликтовать?

Я думаю, что это проще использовать без префикса (более короткие имена), но является ли хорошей практикой иметь префикс?

Ответы [ 5 ]

12 голосов
/ 25 февраля 2010

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

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

3 голосов
/ 25 февраля 2010

Я всегда добавляю префиксы к своим классам по ряду причин

  • 5.2 будет еще пару лет
  • 5.3 пространства имен абсолютно безобразны, я не могу их использовать, не становясь тошнотворным
  • и эй, яблоко тоже это делает (NSString, CFXMLParser и т. Д.);))

Серьезно, лучше вообще избегать явных имен классов. Избавьтесь от статики и используйте инъекцию зависимостей вместо new - и вам будет гораздо меньше проблем с именами классов.

1 голос
/ 25 февраля 2010

Да, я делаю. Я не могу переключиться на пространства имен, так как большинство моих клиентов еще работают на PHP 5.3. Я не против набрать немного больше, если я гарантированно избегу конфликтов имен. Особенно когда я использую свою собственную библиотеку поверх существующих.

0 голосов
/ 25 февраля 2010

я префикс моих имен классов с именем папки, в которой он живет, находится в

<?php
    // filename would be "ClassName.php" in directory "directory"
    class directory_ClassName{

    }

таким образом это делает использование __autoLoad чрезвычайно простым

function __autoload( $class_name ){
    $file = explode( "_", $class_name );
    $file =  'app/' . implode( '/', $file ) . ".php";
    require_once( $file );
}

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

0 голосов
/ 25 февраля 2010

Нет. Несмотря на то, что я рассматривал префикс каждого класса в моей CMS с MCB, т.е.

class MCB_Admin
{
    // class contents...
}
$admin = new MCB_Admin;

Однако я быстро отказался от этого и теперь просто использую стандартные имена классов.

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