}
/* }}} */
-#define XMLW_NAME_CHK(__err) \
+#define XMLW_NAME_CHK(__arg_no, __subject) \
if (xmlValidateName((xmlChar *) name, 0) != 0) { \
- php_error_docref(NULL, E_WARNING, "%s", __err); \
- RETURN_FALSE; \
+ zend_argument_value_error(__arg_no, "must be a valid %s, \"%s\" given", __subject, name); \
+ RETURN_THROWS(); \
} \
/* {{{ function prototypes */
}
}}} */
-static void php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAMETERS, xmlwriter_read_one_char_t internal_function, char *err_string)
+static void php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAMETERS, xmlwriter_read_one_char_t internal_function, char *subject_name)
{
xmlTextWriterPtr ptr;
char *name;
}
XMLWRITER_FROM_OBJECT(ptr, self);
- if (err_string != NULL) {
- XMLW_NAME_CHK(err_string);
+ if (subject_name != NULL) {
+ XMLW_NAME_CHK(2, subject_name);
}
if (ptr) {
/* {{{ Create start attribute - returns FALSE on error */
PHP_FUNCTION(xmlwriter_start_attribute)
{
- php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, xmlTextWriterStartAttribute, "Invalid Attribute Name");
+ php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, xmlTextWriterStartAttribute, "attribute name");
}
/* }}} */
}
XMLWRITER_FROM_OBJECT(ptr, self);
- XMLW_NAME_CHK("Invalid Attribute Name");
+ XMLW_NAME_CHK(3, "attribute name");
if (ptr) {
retval = xmlTextWriterStartAttributeNS(ptr, (xmlChar *)prefix, (xmlChar *)name, (xmlChar *)uri);
}
XMLWRITER_FROM_OBJECT(ptr, self);
- XMLW_NAME_CHK("Invalid Attribute Name");
+ XMLW_NAME_CHK(2, "attribute name");
if (ptr) {
retval = xmlTextWriterWriteAttribute(ptr, (xmlChar *)name, (xmlChar *)content);
}
XMLWRITER_FROM_OBJECT(ptr, self);
- XMLW_NAME_CHK("Invalid Attribute Name");
+ XMLW_NAME_CHK(3, "attribute name");
if (ptr) {
retval = xmlTextWriterWriteAttributeNS(ptr, (xmlChar *)prefix, (xmlChar *)name, (xmlChar *)uri, (xmlChar *)content);
/* {{{ Create start element tag - returns FALSE on error */
PHP_FUNCTION(xmlwriter_start_element)
{
- php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, xmlTextWriterStartElement, "Invalid Element Name");
+ php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, xmlTextWriterStartElement, "element name");
}
/* }}} */
}
XMLWRITER_FROM_OBJECT(ptr, self);
- XMLW_NAME_CHK("Invalid Element Name");
+ XMLW_NAME_CHK(3, "element name");
if (ptr) {
retval = xmlTextWriterStartElementNS(ptr, (xmlChar *)prefix, (xmlChar *)name, (xmlChar *)uri);
}
XMLWRITER_FROM_OBJECT(ptr, self);
- XMLW_NAME_CHK("Invalid Element Name");
+ XMLW_NAME_CHK(2, "element name");
if (ptr) {
if (!content) {
}
XMLWRITER_FROM_OBJECT(ptr, self);
- XMLW_NAME_CHK("Invalid Element Name");
+ XMLW_NAME_CHK(3, "element name");
if (ptr) {
if (!content) {
/* {{{ Create start PI tag - returns FALSE on error */
PHP_FUNCTION(xmlwriter_start_pi)
{
- php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, xmlTextWriterStartPI, "Invalid PI Target");
+ php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, xmlTextWriterStartPI, "PI target");
}
/* }}} */
}
XMLWRITER_FROM_OBJECT(ptr, self);
- XMLW_NAME_CHK("Invalid PI Target");
+ XMLW_NAME_CHK(2, "PI target");
if (ptr) {
retval = xmlTextWriterWritePI(ptr, (xmlChar *)name, (xmlChar *)content);
/* {{{ Create start DTD element - returns FALSE on error */
PHP_FUNCTION(xmlwriter_start_dtd_element)
{
- php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, xmlTextWriterStartDTDElement, "Invalid Element Name");
+ php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, xmlTextWriterStartDTDElement, "element name");
}
/* }}} */
}
XMLWRITER_FROM_OBJECT(ptr, self);
- XMLW_NAME_CHK("Invalid Element Name");
+ XMLW_NAME_CHK(2, "element name");
if (ptr) {
retval = xmlTextWriterWriteDTDElement(ptr, (xmlChar *)name, (xmlChar *)content);
/* {{{ Create start DTD AttList - returns FALSE on error */
PHP_FUNCTION(xmlwriter_start_dtd_attlist)
{
- php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, xmlTextWriterStartDTDAttlist, "Invalid Element Name");
+ php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, xmlTextWriterStartDTDAttlist, "element name");
}
/* }}} */
}
XMLWRITER_FROM_OBJECT(ptr, self);
- XMLW_NAME_CHK("Invalid Element Name");
+ XMLW_NAME_CHK(2, "element name");
if (ptr) {
retval = xmlTextWriterWriteDTDAttlist(ptr, (xmlChar *)name, (xmlChar *)content);
}
XMLWRITER_FROM_OBJECT(ptr, self);
- XMLW_NAME_CHK("Invalid Attribute Name");
+ XMLW_NAME_CHK(2, "attribute name");
if (ptr) {
retval = xmlTextWriterStartDTDEntity(ptr, isparm, (xmlChar *)name);
}
XMLWRITER_FROM_OBJECT(ptr, self);
- XMLW_NAME_CHK("Invalid Element Name");
+ XMLW_NAME_CHK(2, "element name");
if (ptr) {
retval = xmlTextWriterWriteDTDEntity(ptr, pe, (xmlChar *)name, (xmlChar *)pubid, (xmlChar *)sysid, (xmlChar *)ndataid, (xmlChar *)content);
var_dump(xmlwriter_start_element($xw, "tag"));
var_dump(xmlwriter_start_attribute($xw, "attr"));
var_dump(xmlwriter_end_attribute($xw));
-var_dump(xmlwriter_start_attribute($xw, "-1"));
+
+try {
+ xmlwriter_start_attribute($xw, "-1");
+} catch (ValueError $e) {
+ echo $e->getMessage(), "\n";
+}
+
var_dump(xmlwriter_end_attribute($xw));
-var_dump(xmlwriter_start_attribute($xw, "\""));
+
+try {
+ xmlwriter_start_attribute($xw, "\"");
+} catch (ValueError $e) {
+ echo $e->getMessage(), "\n";
+}
+
var_dump(xmlwriter_end_attribute($xw));
var_dump(xmlwriter_end_element($xw));
+// Force to write and empty the buffer
+xmlwriter_flush($xw, empty: true);
+
unset($xw);
var_dump(file_get_contents($file));
bool(true)
bool(true)
bool(true)
-
-Warning: xmlwriter_start_attribute(): Invalid Attribute Name in %s on line %d
-bool(false)
-bool(false)
-
-Warning: xmlwriter_start_attribute(): Invalid Attribute Name in %s on line %d
+xmlwriter_start_attribute(): Argument #2 ($name) must be a valid attribute name, "-1" given
bool(false)
+xmlwriter_start_attribute(): Argument #2 ($name) must be a valid attribute name, """ given
bool(false)
bool(true)
string(14) "<tag attr=""/>"