]> granicus.if.org Git - php/commitdiff
According to Zeev this code is just for showing how to create overloaded classes.
authorfoobar <sniper@php.net>
Wed, 29 Aug 2001 23:53:22 +0000 (23:53 +0000)
committerfoobar <sniper@php.net>
Wed, 29 Aug 2001 23:53:22 +0000 (23:53 +0000)
ext/standard/basic_functions.c

index 14bdf244b29526c9fd0bb2922604d54e90dcf1eb..cd7a67c3d278685a1c4e1b8d86785fd4556212eb 100644 (file)
@@ -100,11 +100,151 @@ typedef struct _user_tick_function_entry {
 static void user_shutdown_function_dtor(php_shutdown_function_entry *shutdown_function_entry);
 static void user_tick_function_dtor(user_tick_function_entry *tick_function_entry);
 
+/* Demo code. Enable only if you need this. */
+#define ENABLE_TEST_CLASS 0
+
+#if ENABLE_TEST_CLASS
 void test_class_startup(void);
 pval test_class_get_property(zend_property_reference *property_reference);
 int test_class_set_property(zend_property_reference *property_reference, pval *value);
 void test_class_call_function(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference);
 
+pval test_class_get_property(zend_property_reference *property_reference)
+{
+       pval result;
+       zend_overloaded_element *overloaded_property;
+       zend_llist_element *element;
+
+       printf("Reading a property from a OverloadedTestClass object:\n");
+
+       for (element = property_reference->elements_list->head; element; element = element->next) {
+               overloaded_property = (zend_overloaded_element *) element->data;
+       
+               switch (Z_TYPE_P(overloaded_property)) {
+       
+                       case OE_IS_ARRAY:
+                               printf("Array offset:  ");
+                               break;
+
+                       case OE_IS_OBJECT:
+                               printf("Object property:  ");
+                               break;
+               }
+       
+               switch (Z_TYPE(overloaded_property->element)) {
+       
+                       case IS_LONG:
+                               printf("%ld (numeric)\n", Z_LVAL(overloaded_property->element));
+                               break;
+
+                       case IS_STRING:
+                               printf("'%s'\n", Z_STRVAL(overloaded_property->element));
+                               break;
+               }
+               pval_destructor(&overloaded_property->element);
+       }
+
+       Z_STRVAL(result) = estrndup("testing", 7);
+       Z_STRLEN(result) = 7;
+       Z_TYPE(result) = IS_STRING;
+       return result;
+}
+
+int test_class_set_property(zend_property_reference *property_reference, pval * value)
+{
+       zend_overloaded_element *overloaded_property;
+       zend_llist_element *element;
+
+       printf("Writing to a property from a OverloadedTestClass object:\n");
+       printf("Writing '");
+       zend_print_variable(value);
+       printf("'\n");
+
+       for (element = property_reference->elements_list->head; element; element = element->next) {
+               overloaded_property = (zend_overloaded_element *) element->data;
+               
+               switch (Z_TYPE_P(overloaded_property)) {
+       
+                       case OE_IS_ARRAY:
+                               printf("Array offset:  ");
+                               break;
+       
+                       case OE_IS_OBJECT:
+                               printf("Object property:  ");
+                               break;
+               }
+
+               switch (Z_TYPE(overloaded_property->element)) {
+
+                       case IS_LONG:
+                               printf("%ld (numeric)\n", Z_LVAL(overloaded_property->element));
+                               break;
+       
+                       case IS_STRING:
+                               printf("'%s'\n", Z_STRVAL(overloaded_property->element));
+                               break;
+               }
+               pval_destructor(&overloaded_property->element);
+       }
+       return 0;
+}
+
+void test_class_call_function(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference)
+{
+       zend_overloaded_element *overloaded_property;
+       zend_llist_element *element;
+
+       printf("Invoking a method on OverloadedTestClass object:\n");
+
+       for (element = property_reference->elements_list->head; element; element = element->next) {
+               overloaded_property = (zend_overloaded_element *) element->data;
+
+               switch (Z_TYPE_P(overloaded_property)) {
+       
+                       case OE_IS_ARRAY:
+                               printf("Array offset:  ");
+                               break;
+       
+                       case OE_IS_OBJECT:
+                               printf("Object property:  ");
+                               break;
+       
+                       case OE_IS_METHOD:
+                               printf("Overloaded method:  ");
+               }
+
+               switch (Z_TYPE(overloaded_property->element)) {
+
+                       case IS_LONG:
+                               printf("%ld (numeric)\n", Z_LVAL(overloaded_property->element));
+                               break;
+       
+                       case IS_STRING:
+                               printf("'%s'\n", Z_STRVAL(overloaded_property->element));
+                               break;
+               }
+               pval_destructor(&overloaded_property->element);
+       }
+
+       printf("%d arguments\n", ZEND_NUM_ARGS());
+       RETVAL_STRING("testing", 1);
+}
+
+void test_class_startup(void)
+{
+       zend_class_entry test_class_entry;
+       TSRMLS_FETCH();
+
+       INIT_OVERLOADED_CLASS_ENTRY(test_class_entry,
+                                                               "OverloadedTestClass",
+                                                               NULL, test_class_call_function,
+                                                               test_class_get_property,
+                                                               test_class_set_property);
+
+       zend_register_internal_class(&test_class_entry TSRMLS_CC);
+}
+#endif
+
 
 function_entry basic_functions[] = {
        PHP_FE(constant,                                                                                                                NULL)
@@ -778,7 +918,10 @@ PHP_MINIT_FUNCTION(basic)
        REGISTER_MATH_CONSTANT(M_SQRT2);
        REGISTER_MATH_CONSTANT(M_SQRT1_2);
 
+#if ENABLE_TEST_CLASS
        test_class_startup();
+#endif
+
        REGISTER_INI_ENTRIES();
 
        register_phpinfo_constants(INIT_FUNC_ARGS_PASSTHRU);
@@ -2028,144 +2171,6 @@ PHP_FUNCTION(highlight_string)
 }
 /* }}} */
 
-
-pval test_class_get_property(zend_property_reference *property_reference)
-{
-       pval result;
-       zend_overloaded_element *overloaded_property;
-       zend_llist_element *element;
-
-       printf("Reading a property from a OverloadedTestClass object:\n");
-
-       for (element = property_reference->elements_list->head; element; element = element->next) {
-               overloaded_property = (zend_overloaded_element *) element->data;
-       
-               switch (Z_TYPE_P(overloaded_property)) {
-       
-                       case OE_IS_ARRAY:
-                               printf("Array offset:  ");
-                               break;
-
-                       case OE_IS_OBJECT:
-                               printf("Object property:  ");
-                               break;
-               }
-       
-               switch (Z_TYPE(overloaded_property->element)) {
-       
-                       case IS_LONG:
-                               printf("%ld (numeric)\n", Z_LVAL(overloaded_property->element));
-                               break;
-
-                       case IS_STRING:
-                               printf("'%s'\n", Z_STRVAL(overloaded_property->element));
-                               break;
-               }
-               pval_destructor(&overloaded_property->element);
-       }
-
-       Z_STRVAL(result) = estrndup("testing", 7);
-       Z_STRLEN(result) = 7;
-       Z_TYPE(result) = IS_STRING;
-       return result;
-}
-
-int test_class_set_property(zend_property_reference *property_reference, pval * value)
-{
-       zend_overloaded_element *overloaded_property;
-       zend_llist_element *element;
-
-       printf("Writing to a property from a OverloadedTestClass object:\n");
-       printf("Writing '");
-       zend_print_variable(value);
-       printf("'\n");
-
-       for (element = property_reference->elements_list->head; element; element = element->next) {
-               overloaded_property = (zend_overloaded_element *) element->data;
-               
-               switch (Z_TYPE_P(overloaded_property)) {
-       
-                       case OE_IS_ARRAY:
-                               printf("Array offset:  ");
-                               break;
-       
-                       case OE_IS_OBJECT:
-                               printf("Object property:  ");
-                               break;
-               }
-
-               switch (Z_TYPE(overloaded_property->element)) {
-
-                       case IS_LONG:
-                               printf("%ld (numeric)\n", Z_LVAL(overloaded_property->element));
-                               break;
-       
-                       case IS_STRING:
-                               printf("'%s'\n", Z_STRVAL(overloaded_property->element));
-                               break;
-               }
-               pval_destructor(&overloaded_property->element);
-       }
-
-       return 0;
-}
-
-void test_class_call_function(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference)
-{
-       zend_overloaded_element *overloaded_property;
-       zend_llist_element *element;
-
-       printf("Invoking a method on OverloadedTestClass object:\n");
-
-       for (element = property_reference->elements_list->head; element; element = element->next) {
-               overloaded_property = (zend_overloaded_element *) element->data;
-
-               switch (Z_TYPE_P(overloaded_property)) {
-       
-                       case OE_IS_ARRAY:
-                               printf("Array offset:  ");
-                               break;
-       
-                       case OE_IS_OBJECT:
-                               printf("Object property:  ");
-                               break;
-       
-                       case OE_IS_METHOD:
-                               printf("Overloaded method:  ");
-               }
-
-               switch (Z_TYPE(overloaded_property->element)) {
-
-                       case IS_LONG:
-                               printf("%ld (numeric)\n", Z_LVAL(overloaded_property->element));
-                               break;
-       
-                       case IS_STRING:
-                               printf("'%s'\n", Z_STRVAL(overloaded_property->element));
-                               break;
-               }
-               pval_destructor(&overloaded_property->element);
-       }
-
-       printf("%d arguments\n", ZEND_NUM_ARGS());
-       RETVAL_STRING("testing", 1);
-}
-
-void test_class_startup(void)
-{
-       zend_class_entry test_class_entry;
-       TSRMLS_FETCH();
-
-       INIT_OVERLOADED_CLASS_ENTRY(test_class_entry,
-                                                               "OverloadedTestClass",
-                                                               NULL, test_class_call_function,
-                                                               test_class_get_property,
-                                                               test_class_set_property);
-
-       zend_register_internal_class(&test_class_entry TSRMLS_CC);
-}
-
-
 /* {{{ proto string ini_get(string varname)
    Get a configuration option */
 PHP_FUNCTION(ini_get)