Внутренние компоненты PHP - получение логического аргумента

1

При написании и изучении исходного кода PHP-расширения я заметил, что некоторые используют флаг типа LONG для анализа логического параметра:

bool new_map_embed;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &new_map_embed) == FAILURE) {
    RETURN_FALSE;
}

Почему это? Почему бы не использовать флаг b вместо этого?

Теги:
php-internals

2 ответа

1

Скорее всего, программист допустил ошибку (возможно, они не знали, что b существует?), Или параметр на самом деле не логический (может принимать другие значения). Это не обычная практика.

В PHP 5 IS_BOOL сохранил свое значение в том же месте, что и IS_LONG, поэтому вам, возможно, было прощено за то, что вы должны использовать l здесь.

-2

Вы можете использовать что-то вроде:

zend_bool new_map_embed;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", &new_map_embed) == FAILURE) {
    RETURN_FALSE;
}

Посмотрите реальный пример внутри файла zend_builtin_functions.c, а затем найдите zend_bool, вы увидите, как PHP его использует.

  • 1
    Я знаю , что могу использовать b мой вопрос , почему разборе до тех пор , l является обычной практикой
  • 0
    @ShlomiHassid Почему вы думаете, что это обычная практика? Это не так.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню