/* domnodelist methods */
PHP_FUNCTION(dom_nodelist_item);
+PHP_FUNCTION(dom_nodelist_count);
/* domnamednodemap methods */
PHP_FUNCTION(dom_namednodemap_get_named_item);
PHP_FUNCTION(dom_namednodemap_get_named_item_ns);
PHP_FUNCTION(dom_namednodemap_set_named_item_ns);
PHP_FUNCTION(dom_namednodemap_remove_named_item_ns);
+PHP_FUNCTION(dom_namednodemap_count);
/* domcharacterdata methods */
PHP_FUNCTION(dom_characterdata_substring_data);
ZEND_ARG_INFO(0, namespaceURI)
ZEND_ARG_INFO(0, localName)
ZEND_END_ARG_INFO();
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_namednodemap_count, 0, 0, 0)
+ZEND_END_ARG_INFO();
/* }}} */
/*
PHP_FALIAS(getNamedItemNS, dom_namednodemap_get_named_item_ns, arginfo_dom_namednodemap_get_named_item_ns)
PHP_FALIAS(setNamedItemNS, dom_namednodemap_set_named_item_ns, arginfo_dom_namednodemap_set_named_item_ns)
PHP_FALIAS(removeNamedItemNS, dom_namednodemap_remove_named_item_ns, arginfo_dom_namednodemap_remove_named_item_ns)
+ PHP_FALIAS(count, dom_namednodemap_count, arginfo_dom_namednodemap_count)
PHP_FE_END
};
/* }}} */
}
/* }}} end dom_namednodemap_remove_named_item_ns */
+/* {{{ proto int|bool dom_namednodemap_count();
+*/
+PHP_FUNCTION(dom_namednodemap_count)
+{
+ zval *id;
+ dom_object *intern;
+
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "O", &id, dom_namednodemap_class_entry) == FAILURE) {
+ return;
+ }
+
+ intern = Z_DOMOBJ_P(id);
+ if(dom_namednodemap_length_read(intern, return_value) == FAILURE) {
+ RETURN_FALSE;
+ }
+}
+/* }}} end dom_namednodemap_count */
+
#endif
/*
ZEND_END_ARG_INFO();
/* }}} */
+/* {{{ arginfo */
+ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_nodelist_count, 0, 0, 0)
+ZEND_END_ARG_INFO();
+/* }}} */
+
/*
* class DOMNodeList
*
const zend_function_entry php_dom_nodelist_class_functions[] = {
PHP_FALIAS(item, dom_nodelist_item, arginfo_dom_nodelist_item)
+ PHP_FALIAS(count, dom_nodelist_count, arginfo_dom_nodelist_count)
PHP_FE_END
};
+
/* {{{ length int
readonly=yes
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-203510337
return SUCCESS;
}
+
+/* {{{ proto int|bool dom_nodelist_count();
+*/
+PHP_FUNCTION(dom_nodelist_count)
+{
+ zval *id;
+ dom_object *intern;
+
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "O", &id, dom_nodelist_class_entry) == FAILURE) {
+ return;
+ }
+
+ intern = Z_DOMOBJ_P(id);
+ if(dom_nodelist_length_read(intern, return_value) == FAILURE) {
+ RETURN_FALSE;
+ }
+}
+/* }}} end dom_nodelist_count */
+
/* }}} */
/* {{{ proto DOMNode dom_nodelist_item(int index);
}
/* }}} end dom_nodelist_item */
+
#endif
/*
ce.create_object = dom_nnodemap_objects_new;
dom_nodelist_class_entry = zend_register_internal_class_ex(&ce, NULL);
dom_nodelist_class_entry->get_iterator = php_dom_get_iterator;
- zend_class_implements(dom_nodelist_class_entry, 1, zend_ce_traversable);
+ zend_class_implements(dom_nodelist_class_entry, 2, zend_ce_traversable, zend_ce_countable);
zend_hash_init(&dom_nodelist_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
dom_register_prop_handler(&dom_nodelist_prop_handlers, "length", sizeof("length")-1, dom_nodelist_length_read, NULL);
ce.create_object = dom_nnodemap_objects_new;
dom_namednodemap_class_entry = zend_register_internal_class_ex(&ce, NULL);
dom_namednodemap_class_entry->get_iterator = php_dom_get_iterator;
- zend_class_implements(dom_namednodemap_class_entry, 1, zend_ce_traversable);
+ zend_class_implements(dom_namednodemap_class_entry, 2, zend_ce_traversable, zend_ce_countable);
zend_hash_init(&dom_namednodemap_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
dom_register_prop_handler(&dom_namednodemap_prop_handlers, "length", sizeof("length")-1, dom_namednodemap_length_read, NULL);
--- /dev/null
+--TEST--
+Test count nodes in DOMNamedNodeMap
+--CREDITS--
+Andreas Treichel <gmblar+github@gmail.com>
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+$document = new DomDocument();
+$root = $document->createElement('root');
+$document->appendChild($root);
+for($i = 0; $i < 5; $i++) {
+ $root->setAttribute('attribute-' . $i, 'value-' . $i);
+}
+for($i = 0; $i < 7; $i++) {
+ $item = $document->createElement('item');
+ $root->appendChild($item);
+}
+var_dump($root->attributes->length);
+var_dump($root->attributes->count());
+var_dump(count($root->attributes));
+
+?>
+--EXPECTF--
+int(5)
+int(5)
+int(5)
--- /dev/null
+--TEST--
+Test count nodes in DOMNodeList
+--CREDITS--
+Andreas Treichel <gmblar+github@gmail.com>
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+$document = new DomDocument();
+$root = $document->createElement('root');
+$document->appendChild($root);
+for($i = 0; $i < 5; $i++) {
+ $root->setAttribute('attribute-' . $i, 'value-' . $i);
+}
+for($i = 0; $i < 7; $i++) {
+ $item = $document->createElement('item');
+ $root->appendChild($item);
+}
+var_dump($root->childNodes->length);
+var_dump($root->childNodes->count());
+var_dump(count($root->childNodes));
+
+?>
+--EXPECTF--
+int(7)
+int(7)
+int(7)