[prev in list] [next in list] [prev in thread] [next in thread]
List: php-cvs
Subject: [PHP-CVS] cvs: php4 /ext/standard basic_functions.c
From: "Jani Taskinen" <sniper () iki ! fi>
Date: 2001-08-29 23:53:22
[Download RAW message or body]
sniper Wed Aug 29 19:53:22 2001 EDT
Modified files:
/php4/ext/standard basic_functions.c
Log:
According to Zeev this code is just for showing how to create overloaded classes.
["sniper-20010829195322.txt" (text/plain)]
Index: php4/ext/standard/basic_functions.c
diff -u php4/ext/standard/basic_functions.c:1.390 \
php4/ext/standard/basic_functions.c:1.391
--- php4/ext/standard/basic_functions.c:1.390 Wed Aug 29 12:00:30 2001
+++ php4/ext/standard/basic_functions.c Wed Aug 29 19:53:22 2001
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.c,v 1.390 2001/08/29 16:00:30 sniper Exp $ */
+/* $Id: basic_functions.c,v 1.391 2001/08/29 23:53:22 sniper Exp $ */
#include "php.h"
#include "php_main.h"
@@ -100,11 +100,151 @@
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 @@
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);
@@ -2027,144 +2170,6 @@
RETURN_TRUE;
}
/* }}} */
-
-
-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 CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net
For additional commands, e-mail: php-cvs-help@lists.php.net
To contact the list administrators, e-mail: php-list-admin@lists.php.net
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic