antonio's blog

antonio's blog


Блог о всяком разном, связанном с разработкой ПО. Пишу редко, когда есть время и желание.

Anton Dobkin
Author

Share


Tags


Разработка расширений для PHP. Информация времени выполнения

Anton DobkinAnton Dobkin

Часто при разработке расширения требуется получить информацию времени выполнения. К такой информации относиться название исполняемого в данный момент файла, название исполняемого класса, название исполняемой функции, номер исполняемой линии в файле.

Для получения этой информации Zend Engine предоставляет несколько функций:

Пример:

static void php_my_debug(void) {  
    char *class_name = NULL;
    char *funct_name = NULL;
    char *file = NULL;
    unsigned int line = 0;

    class_name = get_active_class_name(NULL TSRMLS_CC);
    funct_name = get_active_function_name(TSRMLS_C);
    file = zend_get_executed_filename(TSRMLS_C);
    line = zend_get_executed_lineno(TSRMLS_C);

    zend_printf("File: %s, line: %d", file, line);
       if(sizeof(class_name) > 0) {
          zend_printf(", class: %s", class_name);
       }

    if(funct_name != NULL) {
        if(sizeof(class_name) > 0) {
           zend_printf(", method: %s", funct_name);
        } else {
           zend_printf(", function: %s", funct_name);
        }
    }

    zend_printf("<br />");
}

PHP_FUNCTION(my_function) {  
   ...
   php_my_debug();
   ...
}

Вывод в браузер:

File: /Users/antonio/Sites/test.php, line: 32, function: my_function
Anton Dobkin
Author

Anton Dobkin

Comments