Thank you very much!

Am Mittwoch, den 25.06.2008, 12:33 +0000 schrieb Dmitry Stogov:
> dmitry                Wed Jun 25 12:33:46 2008 UTC
> 
>   Added files:                 (Branch: PHP_5_3)
>     /php-src/ext/reflection/tests     
>                                       
> ReflectionFunction_getNamespaceName.phpt 
>                                       reflectionClass_getNamespaceName.phpt 
> 
>   Modified files:              
>     /php-src/ext/reflection   php_reflection.c 
>   Log:
>   Added support for namespaces
>   
>   
> http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.164.2.33.2.45.2.16&r2=1.164.2.33.2.45.2.17&diff_format=u
> Index: php-src/ext/reflection/php_reflection.c
> diff -u php-src/ext/reflection/php_reflection.c:1.164.2.33.2.45.2.16 
> php-src/ext/reflection/php_reflection.c:1.164.2.33.2.45.2.17
> --- php-src/ext/reflection/php_reflection.c:1.164.2.33.2.45.2.16      Sat Jun 
> 21 02:41:27 2008
> +++ php-src/ext/reflection/php_reflection.c   Wed Jun 25 12:33:46 2008
> @@ -20,7 +20,7 @@
>     +----------------------------------------------------------------------+
>  */
>  
> -/* $Id: php_reflection.c,v 1.164.2.33.2.45.2.16 2008/06/21 02:41:27 felipe 
> Exp $ */
> +/* $Id: php_reflection.c,v 1.164.2.33.2.45.2.17 2008/06/25 12:33:46 dmitry 
> Exp $ */
>  
>  #ifdef HAVE_CONFIG_H
>  #include "config.h"
> @@ -2550,6 +2550,66 @@
>  }
>  /* }}} */
>  
> +/* {{{ proto public bool ReflectionFunction::inNamespace()
> +   Returns whether this function is defined in namespace */
> +ZEND_METHOD(reflection_function, inNamespace)
> +{
> +     zval **name;
> +     char *colon;
> +
> +     METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
> +     if (zend_hash_find(Z_OBJPROP_P(getThis()), "name", sizeof("name"), 
> (void **) &name) == FAILURE) {
> +             RETURN_FALSE;
> +     }
> +     if (Z_TYPE_PP(name) == IS_STRING &&
> +         (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name))) &&
> +         colon > Z_STRVAL_PP(name) && *(colon-1) == ':') {
> +             RETURN_TRUE;
> +    }
> +     RETURN_FALSE;
> +}
> +/* }}} */
> +
> +/* {{{ proto public string ReflectionFunction::getNamespaceName()
> +   Returns the name of namespace where this function is defined */
> +ZEND_METHOD(reflection_function, getNamespaceName)
> +{
> +     zval **name;
> +     char *colon;
> +
> +     METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
> +     if (zend_hash_find(Z_OBJPROP_P(getThis()), "name", sizeof("name"), 
> (void **) &name) == FAILURE) {
> +             RETURN_FALSE;
> +     }
> +     if (Z_TYPE_PP(name) == IS_STRING &&
> +         (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name))) &&
> +         colon > Z_STRVAL_PP(name) && *(colon-1) == ':') {
> +             RETURN_STRINGL(Z_STRVAL_PP(name), colon - Z_STRVAL_PP(name) - 
> 1, 1);
> +    }
> +     RETURN_EMPTY_STRING();
> +}
> +/* }}} */
> +
> +/* {{{ proto public string ReflectionFunction::getShortName()
> +   Returns the short name of the function (without namespace part) */
> +ZEND_METHOD(reflection_function, getShortName)
> +{
> +     zval **name;
> +     char *colon;
> +
> +     METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
> +     if (zend_hash_find(Z_OBJPROP_P(getThis()), "name", sizeof("name"), 
> (void **) &name) == FAILURE) {
> +             RETURN_FALSE;
> +     }
> +     if (Z_TYPE_PP(name) == IS_STRING &&
> +         (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name))) &&
> +         colon > Z_STRVAL_PP(name) && *(colon-1) == ':') {
> +             RETURN_STRINGL(colon + 1, Z_STRLEN_PP(name) - (colon - 
> Z_STRVAL_PP(name) + 1), 1);
> +    }
> +    RETURN_ZVAL(*name, 1, 0);
> +}
> +/* }}} */
> +
>  /* {{{ proto public bool ReflectionMethod::isConstructor()
>     Returns whether this method is the constructor */
>  ZEND_METHOD(reflection_method, isConstructor)
> @@ -3760,6 +3820,66 @@
>  }
>  /* }}} */
>  
> +/* {{{ proto public bool ReflectionClass::inNamespace()
> +   Returns whether this class is defined in namespace */
> +ZEND_METHOD(reflection_class, inNamespace)
> +{
> +     zval **name;
> +     char *colon;
> +
> +     METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
> +     if (zend_hash_find(Z_OBJPROP_P(getThis()), "name", sizeof("name"), 
> (void **) &name) == FAILURE) {
> +             RETURN_FALSE;
> +     }
> +     if (Z_TYPE_PP(name) == IS_STRING &&
> +         (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name))) &&
> +         colon > Z_STRVAL_PP(name) && *(colon-1) == ':') {
> +             RETURN_TRUE;
> +    }
> +     RETURN_FALSE;
> +}
> +/* }}} */
> +
> +/* {{{ proto public string ReflectionClass::getNamespaceName()
> +   Returns the name of namespace where this class is defined */
> +ZEND_METHOD(reflection_class, getNamespaceName)
> +{
> +     zval **name;
> +     char *colon;
> +
> +     METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
> +     if (zend_hash_find(Z_OBJPROP_P(getThis()), "name", sizeof("name"), 
> (void **) &name) == FAILURE) {
> +             RETURN_FALSE;
> +     }
> +     if (Z_TYPE_PP(name) == IS_STRING &&
> +         (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name))) &&
> +         colon > Z_STRVAL_PP(name) && *(colon-1) == ':') {
> +             RETURN_STRINGL(Z_STRVAL_PP(name), colon - Z_STRVAL_PP(name) - 
> 1, 1);
> +    }
> +     RETURN_EMPTY_STRING();
> +}
> +/* }}} */
> +
> +/* {{{ proto public string ReflectionClass::getShortName()
> +   Returns the short name of the class (without namespace part) */
> +ZEND_METHOD(reflection_class, getShortName)
> +{
> +     zval **name;
> +     char *colon;
> +
> +     METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
> +     if (zend_hash_find(Z_OBJPROP_P(getThis()), "name", sizeof("name"), 
> (void **) &name) == FAILURE) {
> +             RETURN_FALSE;
> +     }
> +     if (Z_TYPE_PP(name) == IS_STRING &&
> +         (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name))) &&
> +         colon > Z_STRVAL_PP(name) && *(colon-1) == ':') {
> +             RETURN_STRINGL(colon + 1, Z_STRLEN_PP(name) - (colon - 
> Z_STRVAL_PP(name) + 1), 1);
> +    }
> +    RETURN_ZVAL(*name, 1, 0);
> +}
> +/* }}} */
> +
>  /* {{{ proto public static mixed ReflectionObject::export(mixed argument [, 
> bool return]) throws ReflectionException
>     Exports a reflection object. Returns the output if TRUE is specified for 
> return, printing it otherwise. */
>  ZEND_METHOD(reflection_object, export)
> @@ -4510,6 +4630,9 @@
>       ZEND_ME(reflection_function, getExtension, NULL, 0)
>       ZEND_ME(reflection_function, getExtensionName, NULL, 0)
>       ZEND_ME(reflection_function, isDeprecated, NULL, 0)
> +     ZEND_ME(reflection_function, inNamespace, NULL, 0)
> +     ZEND_ME(reflection_function, getNamespaceName, NULL, 0)
> +     ZEND_ME(reflection_function, getShortName, NULL, 0)
>       {NULL, NULL, NULL}
>  };
>  
> @@ -4699,6 +4822,9 @@
>       ZEND_ME(reflection_class, implementsInterface, 
> arginfo_reflection_class_implementsInterface, 0)
>       ZEND_ME(reflection_class, getExtension, NULL, 0)
>       ZEND_ME(reflection_class, getExtensionName, NULL, 0)
> +     ZEND_ME(reflection_class, inNamespace, NULL, 0)
> +     ZEND_ME(reflection_class, getNamespaceName, NULL, 0)
> +     ZEND_ME(reflection_class, getShortName, NULL, 0)
>       {NULL, NULL, NULL}
>  };
>  
> @@ -4943,7 +5069,7 @@
>       php_info_print_table_start();
>       php_info_print_table_header(2, "Reflection", "enabled");
>  
> -     php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 
> 1.164.2.33.2.45.2.16 2008/06/21 02:41:27 felipe Exp $");
> +     php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 
> 1.164.2.33.2.45.2.17 2008/06/25 12:33:46 dmitry Exp $");
>  
>       php_info_print_table_end();
>  } /* }}} */
> 
> http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/ReflectionFunction_getNamespaceName.phpt?view=markup&rev=1.1
> Index: php-src/ext/reflection/tests/ReflectionFunction_getNamespaceName.phpt
> +++ php-src/ext/reflection/tests/ReflectionFunction_getNamespaceName.phpt
> 
> http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/reflectionClass_getNamespaceName.phpt?view=markup&rev=1.1
> Index: php-src/ext/reflection/tests/reflectionClass_getNamespaceName.phpt
> +++ php-src/ext/reflection/tests/reflectionClass_getNamespaceName.phpt
> 
> 
> 

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil



Reply via email to