- zend_call_method_with_1_params(&getThis(), php_pqdt_class_entry, NULL, "format", &rv,
- zend_read_property(php_pqdt_class_entry, getThis(), ZEND_STRL("format"), 0 TSRMLS_CC));
- if (rv) {
- RETVAL_ZVAL(rv, 1, 1);
+ZEND_BEGIN_ARG_INFO_EX(ai_pqdt_create_from_format, 0, 0, 2)
+ ZEND_ARG_INFO(0, format)
+ ZEND_ARG_INFO(0, datetime)
+ ZEND_ARG_INFO(0, timezone)
+ZEND_END_ARG_INFO();
+static PHP_METHOD(pqdt, createFromFormat)
+{
+ zend_error_handling zeh;
+ char *fmt_str, *dt_str;
+ size_t fmt_len, dt_len;
+ zval *ztz = NULL;
+ ZEND_RESULT_CODE rv;
+
+ zend_replace_error_handling(EH_THROW, exce(EX_INVALID_ARGUMENT), &zeh);
+ rv = zend_parse_parameters(ZEND_NUM_ARGS(), "ss|O", &fmt_str, &fmt_len, &dt_str, &dt_len, &ztz, php_date_get_timezone_ce());
+ zend_restore_error_handling(&zeh);
+
+ if (SUCCESS == rv) {
+ php_pqdt_from_string(return_value, fmt_str, dt_str, dt_len, "Y-m-d H:i:s.uO", ztz);