@@ -149,17 +149,20 @@ static zend_function *zend_test_class_method_get(zend_object **object, zend_stri
149
149
/* }}} */
150
150
151
151
static 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 );
163
166
}
164
167
/* }}} */
165
168
@@ -169,11 +172,22 @@ static int zend_test_class_call_method(zend_string *method, zend_object *object,
169
172
}
170
173
/* }}} */
171
174
175
+ /* Internal function returns bool, we return int. */
176
+ static ZEND_METHOD (_ZendTestClass , is_object ) /* {{{ */ {
177
+ RETURN_LONG (42 );
178
+ }
179
+ /* }}} */
180
+
172
181
static ZEND_METHOD (_ZendTestTrait , testMethod ) /* {{{ */ {
173
182
RETURN_TRUE ;
174
183
}
175
184
/* }}} */
176
185
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
+
177
191
static zend_function_entry zend_test_trait_methods [] = {
178
192
ZEND_ME (_ZendTestTrait , testMethod , NULL , ZEND_ACC_PUBLIC )
179
193
ZEND_FE_END
@@ -186,7 +200,7 @@ PHP_MINIT_FUNCTION(zend_test)
186
200
INIT_CLASS_ENTRY (class_entry , "_ZendTestInterface" , NULL );
187
201
zend_test_interface = zend_register_internal_interface (& class_entry );
188
202
zend_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 );
190
204
zend_test_class = zend_register_internal_class_ex (& class_entry , NULL );
191
205
zend_class_implements (zend_test_class , 1 , zend_test_interface );
192
206
zend_test_class -> create_object = zend_test_class_new ;
0 commit comments