@@ -149,17 +149,20 @@ static zend_function *zend_test_class_method_get(zend_object **object, zend_stri
149149/* }}} */
150150
151151static zend_function * zend_test_class_static_method_get (zend_class_entry * ce , zend_string * name ) /* {{{ */ {
152- zend_internal_function * fptr = emalloc (sizeof (zend_internal_function ));
153- fptr -> type = ZEND_OVERLOADED_FUNCTION ;
154- fptr -> num_args = 1 ;
155- fptr -> arg_info = NULL ;
156- fptr -> scope = ce ;
157- fptr -> fn_flags = ZEND_ACC_CALL_VIA_HANDLER |ZEND_ACC_STATIC ;
158- fptr -> function_name = name ;
159- fptr -> handler = ZEND_FN (zend_test_func );
160- zend_set_function_arg_flags ((zend_function * )fptr );
161-
162- return (zend_function * )fptr ;
152+ if (zend_string_equals_literal_ci (name , "test" )) {
153+ zend_internal_function * fptr = emalloc (sizeof (zend_internal_function ));
154+ fptr -> type = ZEND_OVERLOADED_FUNCTION ;
155+ fptr -> num_args = 1 ;
156+ fptr -> arg_info = NULL ;
157+ fptr -> scope = ce ;
158+ fptr -> fn_flags = ZEND_ACC_CALL_VIA_HANDLER |ZEND_ACC_STATIC ;
159+ fptr -> function_name = name ;
160+ fptr -> handler = ZEND_FN (zend_test_func );
161+ zend_set_function_arg_flags ((zend_function * )fptr );
162+
163+ return (zend_function * )fptr ;
164+ }
165+ return zend_std_get_static_method (ce , name , NULL );
163166}
164167/* }}} */
165168
@@ -169,11 +172,22 @@ static int zend_test_class_call_method(zend_string *method, zend_object *object,
169172}
170173/* }}} */
171174
175+ /* Internal function returns bool, we return int. */
176+ static ZEND_METHOD (_ZendTestClass , is_object ) /* {{{ */ {
177+ RETURN_LONG (42 );
178+ }
179+ /* }}} */
180+
172181static ZEND_METHOD (_ZendTestTrait , testMethod ) /* {{{ */ {
173182RETURN_TRUE ;
174183}
175184/* }}} */
176185
186+ static const zend_function_entry zend_test_class_methods [] = {
187+ ZEND_ME (_ZendTestClass , is_object , NULL , ZEND_ACC_PUBLIC |ZEND_ACC_STATIC )
188+ ZEND_FE_END
189+ };
190+
177191static zend_function_entry zend_test_trait_methods [] = {
178192 ZEND_ME (_ZendTestTrait , testMethod , NULL , ZEND_ACC_PUBLIC )
179193 ZEND_FE_END
@@ -186,7 +200,7 @@ PHP_MINIT_FUNCTION(zend_test)
186200INIT_CLASS_ENTRY (class_entry , "_ZendTestInterface" , NULL );
187201zend_test_interface = zend_register_internal_interface (& class_entry );
188202zend_declare_class_constant_long (zend_test_interface , ZEND_STRL ("DUMMY" ), 0 );
189- INIT_CLASS_ENTRY (class_entry , "_ZendTestClass" , NULL );
203+ INIT_CLASS_ENTRY (class_entry , "_ZendTestClass" , zend_test_class_methods );
190204zend_test_class = zend_register_internal_class_ex (& class_entry , NULL );
191205zend_class_implements (zend_test_class , 1 , zend_test_interface );
192206zend_test_class -> create_object = zend_test_class_new ;
0 commit comments