@@ -158,17 +158,20 @@ static zend_function *zend_test_class_method_get(zend_object **object, zend_stri
158
158
/* }}} */
159
159
160
160
static zend_function * zend_test_class_static_method_get (zend_class_entry * ce , zend_string * name ) /* {{{ */ {
161
- zend_internal_function * fptr = emalloc (sizeof (zend_internal_function ));
162
- fptr -> type = ZEND_OVERLOADED_FUNCTION ;
163
- fptr -> num_args = 1 ;
164
- fptr -> arg_info = NULL ;
165
- fptr -> scope = ce ;
166
- fptr -> fn_flags = ZEND_ACC_CALL_VIA_HANDLER |ZEND_ACC_STATIC ;
167
- fptr -> function_name = name ;
168
- fptr -> handler = ZEND_FN (zend_test_func );
169
- zend_set_function_arg_flags ((zend_function * )fptr );
170
-
171
- return (zend_function * )fptr ;
161
+ if (zend_string_equals_literal_ci (name , "test" )) {
162
+ zend_internal_function * fptr = emalloc (sizeof (zend_internal_function ));
163
+ fptr -> type = ZEND_OVERLOADED_FUNCTION ;
164
+ fptr -> num_args = 1 ;
165
+ fptr -> arg_info = NULL ;
166
+ fptr -> scope = ce ;
167
+ fptr -> fn_flags = ZEND_ACC_CALL_VIA_HANDLER |ZEND_ACC_STATIC ;
168
+ fptr -> function_name = name ;
169
+ fptr -> handler = ZEND_FN (zend_test_func );
170
+ zend_set_function_arg_flags ((zend_function * )fptr );
171
+
172
+ return (zend_function * )fptr ;
173
+ }
174
+ return zend_std_get_static_method (ce , name , NULL );
172
175
}
173
176
/* }}} */
174
177
@@ -178,11 +181,22 @@ static int zend_test_class_call_method(zend_string *method, zend_object *object,
178
181
}
179
182
/* }}} */
180
183
184
+ /* Internal function returns bool, we return int. */
185
+ static ZEND_METHOD (_ZendTestClass , is_object ) /* {{{ */ {
186
+ RETURN_LONG (42 );
187
+ }
188
+ /* }}} */
189
+
181
190
static ZEND_METHOD (_ZendTestTrait , testMethod ) /* {{{ */ {
182
191
RETURN_TRUE ;
183
192
}
184
193
/* }}} */
185
194
195
+ static const zend_function_entry zend_test_class_methods [] = {
196
+ ZEND_ME (_ZendTestClass , is_object , NULL , ZEND_ACC_PUBLIC |ZEND_ACC_STATIC )
197
+ ZEND_FE_END
198
+ };
199
+
186
200
static const zend_function_entry zend_test_trait_methods [] = {
187
201
ZEND_ME (_ZendTestTrait , testMethod , NULL , ZEND_ACC_PUBLIC )
188
202
ZEND_FE_END
@@ -195,7 +209,7 @@ PHP_MINIT_FUNCTION(zend_test)
195
209
INIT_CLASS_ENTRY (class_entry , "_ZendTestInterface" , NULL );
196
210
zend_test_interface = zend_register_internal_interface (& class_entry );
197
211
zend_declare_class_constant_long (zend_test_interface , ZEND_STRL ("DUMMY" ), 0 );
198
- INIT_CLASS_ENTRY (class_entry , "_ZendTestClass" , NULL );
212
+ INIT_CLASS_ENTRY (class_entry , "_ZendTestClass" , zend_test_class_methods );
199
213
zend_test_class = zend_register_internal_class_ex (& class_entry , NULL );
200
214
zend_class_implements (zend_test_class , 1 , zend_test_interface );
201
215
zend_test_class -> create_object = zend_test_class_new ;
0 commit comments