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