[PHP] Типобезопасность констант
От: MaxSem  
Дата: 19.10.09 08:02
Оценка:
Дано: функция с переменным числом аргументов, при этом некоторые аргументы могут быть строками, а некоторые — константами, требующими особой обработки.

function foo() {
    $params = func_get_args();

    foreach( $params as $value) {
        if( $value === CONST_1 ) {
            ...
        } elseif( $value === CONST_2 ) {
            ...
        } else {
            ...
        }
    }
}


Проблема в том, что из-за утиной типизации PHP вместо строкового аргумента может быть передано что угодно, так что определения констант вроде define( 'CONST_1', 42 ) могут привести к непредсказуемым последствиям. define( 'CONST_1', 43490543235232.923724023553 ) более надёжно, но выглядит жутким хаком. Что-то вроде define( 'CONST_1', new stdClass() ) могло бы помочь, если бы язык такое позволял.

Можно тут ещё что-то придумать, или придётся прибегать к гораздо более корявым вещам вроде MyClass::const_1()?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.