Чрезмерное использование строковых констант PHP?

У меня есть два частных случая, когда я не согласен с коллегой, следует ли использовать константы или нет.

Мы используем самодельный фреймворк, работающий примерно как Symfony 1.x.

  1. Исходный код был в конфигурационном файле маршрутизации PHP для маршрутизации, например:

     $ router-> map ('/ some_url',  array ('module' => 'some_module', 'action' => 'some_action'));
     $ router-> map ('/ some_other_url', array ('module' => 'some_module', 'action' => 'some_action'));
     // так далее.
     

    Сотрудник изменил его на:

     $ router-> map ('/ some_url', array (MODULE => 'some_module', ACTION => 'some_action'));
     $ router-> map ('/ some_other_url', array (MODULE => 'some_module', ACTION => 'some_action'));
    
     // + в файле constants.php:
    define ('МОДУЛЬ', 'модуль');
    определить ('ДЕЙСТВИЕ', 'действие');
     

    ИМО, это постоянное злоупотребление: если понятие «модуль» или «действие» когда-либо будет переименовано, его придется переименовать во всем коде,записывается как строка или константа. Кроме того, определенные выше имена констант не имеют особого значения, что способствует конфликтам / путанице имен.

  2. Пример исходного кода:

     if (isset ($ _ SESSION ['unid']) && isset ($ _ SESSION ['login'  ])) {...}
     

    Изменено коллегой:

     if (isset ($ _ SESSION [UNID]) && isset ($ _ SESSION [LOGIN])) {...}
    
     // + в файле constants.php:
    define ('UNID', 'unid');
    define ('ВХОД', 'логин');
     

    В нашем приложении имена переменных сеанса unid и login вряд ли изменятся. Тем не менее, если бы объявление констант было действительно хорошей практикой, я бы предложил хотя бы более точные имена, например FIELDNAME_UNID и FIELDNAME_LOGIN ...

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

Спасибо.

РЕДАКТИРОВАТЬ

Через несколько месяцев вот несколько (невероятных) строк из Файл constants.php . Я определенно считаю это совершенно бесполезным беспорядком, похожим на этот пост DailyWTF . Слишком много констант убивает константы.

define('POST', 'POST');
define('GET', 'GET');

define('PROJECT', 'project');
define('APPLICATION', 'application');
define('MODULE', 'module');
define('ACTION', 'action');
define('ID', 'id');
define('SLUG', 'slug');
define('CONTROLLER', 'controller');
define('CONTENT', 'content');
define('AJAX', 'ajax');
define('EXECUTE', 'execute');
define('FORMAT', 'format');
define('BASE_HREF_CONSTANT', 'basehref');
define('UNID', 'unid');
define('USERNAME', 'username');
define('PASSWORD', 'password');
define('TEMPLATE', 'templates');
define('UNSECURE', 'unsecure');
define('MODE', 'mode');
define('MESSAGE', 'message');
define('TEMPORARY_SESSION', 'temporary_session');
define('ERRORMESSAGE', 'errormessage');
define('START_FROM', 'startfrom');
define('COUNT', 'count');

// and so on.

10
задан Frosty Z 30 September 2011 в 13:33
поделиться