Подавление ошибок аргумента функции php, эмуляция empty () isset () - PullRequest
9 голосов
/ 10 сентября 2008

Я почти уверен, что ответ на этот вопрос - нет, но в случае, если есть какой-то гуру PHP

возможно ли написать функцию таким образом, чтобы в нее можно было передавать недопустимые аргументы или несуществующие переменные, и php не будет выдавать ошибку без использования '@'

Очень похоже на пустое и isset do. Вы можете передать только что созданную переменную, и она не выдаст ошибку.

ex:

empty($someBogusVar); // no error

myHappyFunction($someBogusVar); // Php warning / notice

Ответы [ 14 ]

0 голосов
/ 10 сентября 2008

@ Шон На это уже ответил Брайан

return isset($input) ? $input : $default;
0 голосов
/ 10 сентября 2008

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

0 голосов
/ 10 сентября 2008

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

Вы можете либо инициализировать эти значения в каждом классе соответствующим образом, либо создать определенный класс, содержащий все значения и атрибуты по умолчанию, например:

class Configuration {

    private var $configValues = array( 'cool' => 'Defaultcoolval' ,
                                       'uncool' => 'Defuncoolval'  );

    public setCool($val) {
        $this->configValues['cool'] = $val;
    }

    public getCool() {
        return $this->configValues['cool'];
    }

}

Идея заключается в том, что при использовании функции defaultValue в коде повсюду вверх и вниз она станет кошмаром обслуживания, когда вам нужно будет изменить значение, отыскивая все места, где вы выполняете вызов defaultValue. И это также, вероятно, заставит вас повторить себя, нарушая СУХОЙ.

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

0 голосов
/ 10 сентября 2008

@ Брайан: Я использую тринальную операцию, чтобы выполнить проверку для меня:

return $value ? $value : $default;

возвращает значение $ value ИЛИ $ default. В зависимости от значения $ value. Если это 0, false, пусто или что-то подобное, будет возвращено значение в $ default.

Я собираюсь эмулировать такие функции, как empty () и isset ()

...