Accept DatetimeInterface in fromDatetime

pull/4034/head
Bo Yang 7 years ago
parent 1a549d9a90
commit 39159c89f1
  1. 17
      php/ext/google/protobuf/message.c
  2. 9
      php/ext/google/protobuf/protobuf.c

@ -1123,21 +1123,16 @@ PHP_METHOD(Timestamp, fromDateTime) {
zval* datetime; zval* datetime;
zval member; zval member;
if (zend_parse_parameters( PHP_PROTO_CE_DECLARE date_interface_ce;
ZEND_NUM_ARGS() TSRMLS_CC, "z", &datetime) == FAILURE) { if (php_proto_zend_lookup_class("\\DatetimeInterface", 18,
return; &date_interface_ce) == FAILURE) {
}
zend_class_entry* ce = Z_OBJCE_P(datetime);
PHP_PROTO_CE_DECLARE datetime_ce;
if (php_proto_zend_lookup_class("\\Datetime", 9, &datetime_ce) ==
FAILURE) {
zend_error(E_ERROR, "Make sure date extension is enabled."); zend_error(E_ERROR, "Make sure date extension is enabled.");
return; return;
} }
if (!instanceof_function(PHP_PROTO_CE_UNREF(datetime_ce), ce TSRMLS_CC)) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &datetime,
zend_error(E_USER_ERROR, "Expect Datetime."); date_interface_ce) == FAILURE) {
zend_error(E_USER_ERROR, "Expect DatetimeInterface.");
return; return;
} }

@ -182,8 +182,15 @@ zend_function_entry protobuf_functions[] = {
ZEND_FE_END ZEND_FE_END
}; };
static const zend_module_dep protobuf_deps[] = {
ZEND_MOD_OPTIONAL("date")
ZEND_MOD_END
};
zend_module_entry protobuf_module_entry = { zend_module_entry protobuf_module_entry = {
STANDARD_MODULE_HEADER, STANDARD_MODULE_HEADER_EX,
NULL,
protobuf_deps,
PHP_PROTOBUF_EXTNAME, // extension name PHP_PROTOBUF_EXTNAME, // extension name
protobuf_functions, // function list protobuf_functions, // function list
PHP_MINIT(protobuf), // process startup PHP_MINIT(protobuf), // process startup

Loading…
Cancel
Save