cvs: /php4/ext/domxml domxml.c /php4/tests testdom
| From: | Uwe Steinmann | Date: | Wed, 01 Mar 2000 21:16:54 +0000 |
| Subject: | cvs: /php4/ext/domxml domxml.c /php4/tests testdom | ||
| Groups: | php.version4 | ||
| Request: | Send a blank email to php-version4+get-11293@lists.php.net to get a copy of this message | ||
steinm Wed Mar 1 13:16:54 2000 EDT
Modified files:
/php4/ext/domxml domxml.c
/php4/tests testdom
Log:
- started to implement overload class for xml node
Index: php4/ext/domxml/domxml.c
diff -u php4/ext/domxml/domxml.c:1.20 php4/ext/domxml/domxml.c:1.21
--- php4/ext/domxml/domxml.c:1.20 Fri Feb 25 00:54:12 2000
+++ php4/ext/domxml/domxml.c Wed Mar 1 13:16:24 2000
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: domxml.c,v 1.20 2000/02/25 08:54:12 eschmid Exp $ */
+/* $Id: domxml.c,v 1.21 2000/03/01 21:16:24 steinm Exp $ */
#include "php.h"
@@ -143,6 +143,132 @@
REGISTER_LONG_CONSTANT("XML_LOCAL_NAMESPACE", XML_LOCAL_NAMESPACE, CONST_CS |
CONST_PERSISTENT);
return SUCCESS;
}
+
+#ifdef 0
+/* {{{ Node Class */
+pval domxmlnode_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 (overloaded_property->type) {
+ case OE_IS_ARRAY:
+ printf("Array offset: ");
+ break;
+ case OE_IS_OBJECT:
+ printf("Object property: ");
+ break;
+ }
+ switch (overloaded_property->element.type) {
+ case IS_LONG:
+ printf("%ld (numeric)\n", overloaded_property->element.value.lval);
+ break;
+ case IS_STRING:
+ printf("'%s'\n", overloaded_property->element.value.str.val);
+ break;
+ }
+ pval_destructor(&overloaded_property->element);
+ }
+
+ result.value.str.val = estrndup("testing", 7);
+ result.value.str.len = 7;
+ result.type = IS_STRING;
+ return result;
+}
+
+
+int domxmlnode_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 (overloaded_property->type) {
+ case OE_IS_ARRAY:
+ printf("Array offset: ");
+ break;
+ case OE_IS_OBJECT:
+ printf("Object property: ");
+ break;
+ }
+ switch (overloaded_property->element.type) {
+ case IS_LONG:
+ printf("%ld (numeric)\n", overloaded_property->element.value.lval);
+ break;
+ case IS_STRING:
+ printf("'%s'\n", overloaded_property->element.value.str.val);
+ break;
+ }
+ pval_destructor(&overloaded_property->element);
+ }
+
+ return 0;
+}
+
+void domxmlnode_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 (overloaded_property->type) {
+ case OE_IS_ARRAY:
+ printf("Array offset: ");
+ break;
+ case OE_IS_OBJECT:
+ printf("Object property: ");
+ break;
+ case OE_IS_METHOD:
+ printf("Overloaded method: ");
+ }
+ switch (overloaded_property->element.type) {
+ case IS_LONG:
+ printf("%ld (numeric)\n", overloaded_property->element.value.lval);
+ break;
+ case IS_STRING:
+ printf("'%s'\n", overloaded_property->element.value.str.val);
+ break;
+ }
+ pval_destructor(&overloaded_property->element);
+ }
+
+ printf("%d arguments\n", ARG_COUNT(ht));
+ return_value->value.str.val = estrndup("testing", 7);
+ return_value->value.str.len = 7;
+ return_value->type = IS_STRING;
+}
+
+
+void domxmlnode_class_startup()
+{
+ zend_class_entry domxmlnode_class_entry;
+
+ INIT_OVERLOADED_CLASS_ENTRY(dcomxmlnode_class_entry, "Dom Node",
+ php_domxmlnode_class_functions,
+ domxmlnode_class_call_function,
+ domxmlnode_class_get_property,
+ domxmlnode_class_set_property);
+
+ register_internal_class(&domxmlnode_class_entry);
+}
+/* }}} */
+#endif
PHP_MINFO_FUNCTION(domxml)
{
Index: php4/tests/testdom
diff -u php4/tests/testdom:1.11 php4/tests/testdom:1.12
--- php4/tests/testdom:1.11 Tue Feb 22 09:03:36 2000
+++ php4/tests/testdom Wed Mar 1 13:16:24 2000
@@ -46,6 +46,7 @@
<!DOCTYPE chapter SYSTEM '/share/sgml/Norman_Walsh/db3xml10/db3xml10.dtd'
[ <!ENTITY sp \"spanish\">
]>
+<!-- lsfj -->
<chapter language='en'><title language='en'>Title</title>
<para language='ge'>
&sp;
@@ -66,7 +67,10 @@
by using the methods of the xmlnode object
*/
echo "Test 1: accessing single nodes from php\n";
-$dom = xmldoc($xmlstr);
+if(!$dom = xmldoc($xmlstr)) {
+ echo "Error while parsing the document\n";
+ exit;
+}
echo "XML Version: ".$dom->version."\n";
$dtd = $dom->dtd();
$rootnode = $dom->root();
@@ -75,6 +79,7 @@
/* This one creates a dom tree made of php objects */
echo "Test 2: creating a tree with php objects\n";
$dom = xmltree($xmlstr);
+$dom->root->name = "section";
var_dump($dom);
echo $dom->root->name;
echo "\n";