Merge pull request #7527 from jskeet/nulllogger

Change the default logger to the NullLogger.
diff --git a/build.yaml b/build.yaml
index 9732f43..37c95cc 100644
--- a/build.yaml
+++ b/build.yaml
@@ -3370,6 +3370,7 @@
   - src/php/ext/grpc/channel.h
   - src/php/ext/grpc/channel_credentials.h
   - src/php/ext/grpc/completion_queue.h
+  - src/php/ext/grpc/php7_wrapper.h
   - src/php/ext/grpc/php_grpc.h
   - src/php/ext/grpc/server.h
   - src/php/ext/grpc/server_credentials.h
diff --git a/package.xml b/package.xml
index bcb8d1e..66bd688 100644
--- a/package.xml
+++ b/package.xml
@@ -46,6 +46,7 @@
     <file baseinstalldir="/" name="src/php/ext/grpc/channel.h" role="src" />
     <file baseinstalldir="/" name="src/php/ext/grpc/channel_credentials.h" role="src" />
     <file baseinstalldir="/" name="src/php/ext/grpc/completion_queue.h" role="src" />
+    <file baseinstalldir="/" name="src/php/ext/grpc/php7_wrapper.h" role="src" />
     <file baseinstalldir="/" name="src/php/ext/grpc/php_grpc.h" role="src" />
     <file baseinstalldir="/" name="src/php/ext/grpc/server.h" role="src" />
     <file baseinstalldir="/" name="src/php/ext/grpc/server_credentials.h" role="src" />
diff --git a/src/core/lib/security/transport/handshake.c b/src/core/lib/security/transport/handshake.c
index b374ca7..540a172 100644
--- a/src/core/lib/security/transport/handshake.c
+++ b/src/core/lib/security/transport/handshake.c
@@ -357,8 +357,9 @@
     gpr_mu_unlock(&server_connector->mu);
   }
   send_handshake_bytes_to_peer(exec_ctx, h);
-  grpc_timer_init(exec_ctx, &h->timer, deadline, on_timeout, h,
-                  gpr_now(deadline.clock_type));
+  grpc_timer_init(exec_ctx, &h->timer,
+                  gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC),
+                  on_timeout, h, gpr_now(GPR_CLOCK_MONOTONIC));
 }
 
 void grpc_security_handshake_shutdown(grpc_exec_ctx *exec_ctx,
diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c
index bd1eccb..d455002 100644
--- a/src/php/ext/grpc/call.c
+++ b/src/php/ext/grpc/call.c
@@ -341,18 +341,11 @@
 PHP_METHOD(Call, __construct) {
   zval *channel_obj;
   char *method;
+  php_grpc_int method_len;
   zval *deadline_obj;
   char *host_override = NULL;
-#if PHP_MAJOR_VERSION < 7
-  int method_len;
-  int host_override_len = 0;
-  wrapped_grpc_call *call =
-      (wrapped_grpc_call *)zend_object_store_get_object(getThis() TSRMLS_CC);
-#else
-  size_t method_len;
-  size_t host_override_len = 0;
+  php_grpc_int host_override_len = 0;
   wrapped_grpc_call *call = Z_WRAPPED_GRPC_CALL_P(getThis());
-#endif
 
   /* "OsO|s" == 1 Object, 1 string, 1 Object, 1 optional string */
   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "OsO|s", &channel_obj,
@@ -364,13 +357,7 @@
                          "an optional String", 1 TSRMLS_CC);
     return;
   }
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_channel *channel =
-      (wrapped_grpc_channel *)zend_object_store_get_object(
-          channel_obj TSRMLS_CC);
-#else
   wrapped_grpc_channel *channel = Z_WRAPPED_GRPC_CHANNEL_P(channel_obj);
-#endif
   if (channel->wrapped == NULL) {
     zend_throw_exception(spl_ce_InvalidArgumentException,
                          "Call cannot be constructed from a closed Channel",
@@ -378,13 +365,7 @@
     return;
   }
   add_property_zval(getThis(), "channel", channel_obj);
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_timeval *deadline =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(
-          deadline_obj TSRMLS_CC);
-#else
   wrapped_grpc_timeval *deadline = Z_WRAPPED_GRPC_TIMEVAL_P(deadline_obj);
-#endif
   call->wrapped =
     grpc_channel_create_call(channel->wrapped, NULL, GRPC_PROPAGATE_DEFAULTS,
                              completion_queue, method, host_override,
@@ -399,8 +380,6 @@
  */
 PHP_METHOD(Call, startBatch) {
 #if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_call *call =
-      (wrapped_grpc_call *)zend_object_store_get_object(getThis() TSRMLS_CC);
   zval **value;
   zval **inner_value;
   HashPosition array_pointer;
@@ -414,7 +393,6 @@
   MAKE_STD_ZVAL(result);
   object_init(result);
 #else
-  wrapped_grpc_call *call = Z_WRAPPED_GRPC_CALL_P(getThis());
   zval *value;
   zval *inner_value;
   zval *message_value;
@@ -424,6 +402,7 @@
   zval recv_status;
   object_init(return_value);
 #endif
+  wrapped_grpc_call *call = Z_WRAPPED_GRPC_CALL_P(getThis());
   
   grpc_op ops[8];
   size_t op_num = 0;
@@ -848,14 +827,8 @@
  * @return string The URI of the endpoint
  */
 PHP_METHOD(Call, getPeer) {
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_call *call =
-      (wrapped_grpc_call *)zend_object_store_get_object(getThis() TSRMLS_CC);
-  RETURN_STRING(grpc_call_get_peer(call->wrapped), 1);
-#else
   wrapped_grpc_call *call = Z_WRAPPED_GRPC_CALL_P(getThis());
-  RETURN_STRING(grpc_call_get_peer(call->wrapped));
-#endif
+  PHP_GRPC_RETURN_STRING(grpc_call_get_peer(call->wrapped), 1);
 }
 
 /**
@@ -863,12 +836,7 @@
  * has not already ended with another status.
  */
 PHP_METHOD(Call, cancel) {
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_call *call =
-      (wrapped_grpc_call *)zend_object_store_get_object(getThis() TSRMLS_CC);
-#else
   wrapped_grpc_call *call = Z_WRAPPED_GRPC_CALL_P(getThis());
-#endif
   grpc_call_cancel(call->wrapped, NULL);
 }
 
@@ -889,17 +857,9 @@
     return;
   }
 
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_call_credentials *creds =
-      (wrapped_grpc_call_credentials *)zend_object_store_get_object(
-          creds_obj TSRMLS_CC);
-  wrapped_grpc_call *call =
-      (wrapped_grpc_call *)zend_object_store_get_object(getThis() TSRMLS_CC);
-#else
   wrapped_grpc_call_credentials *creds =
     Z_WRAPPED_GRPC_CALL_CREDS_P(creds_obj);
   wrapped_grpc_call *call = Z_WRAPPED_GRPC_CALL_P(getThis());
-#endif
 
   grpc_call_error error = GRPC_CALL_ERROR;
   error = grpc_call_set_credentials(call->wrapped, creds->wrapped);
diff --git a/src/php/ext/grpc/call.h b/src/php/ext/grpc/call.h
index 9fc52d7..4931bf3 100644
--- a/src/php/ext/grpc/call.h
+++ b/src/php/ext/grpc/call.h
@@ -64,6 +64,9 @@
  * call metadata */
 zval *grpc_parse_metadata_array(grpc_metadata_array *metadata_array TSRMLS_DC);
 
+#define Z_WRAPPED_GRPC_CALL_P(zv) \
+  (wrapped_grpc_call *)zend_object_store_get_object(zv TSRMLS_CC)
+
 #else
 
 /* Wrapper struct for grpc_call that can be associated with a PHP object */
diff --git a/src/php/ext/grpc/call_credentials.c b/src/php/ext/grpc/call_credentials.c
index 70aaffb..24ee0a4 100644
--- a/src/php/ext/grpc/call_credentials.c
+++ b/src/php/ext/grpc/call_credentials.c
@@ -153,26 +153,17 @@
                          1 TSRMLS_CC);
     return;
   }
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_call_credentials *cred1 =
-      (wrapped_grpc_call_credentials *)zend_object_store_get_object(
-          cred1_obj TSRMLS_CC);
-  wrapped_grpc_call_credentials *cred2 =
-      (wrapped_grpc_call_credentials *)zend_object_store_get_object(
-          cred2_obj TSRMLS_CC);
-  grpc_call_credentials *creds =
-      grpc_composite_call_credentials_create(cred1->wrapped, cred2->wrapped,
-                                             NULL);
-  zval *creds_object = grpc_php_wrap_call_credentials(creds TSRMLS_CC);
-  RETURN_DESTROY_ZVAL(creds_object);
-#else
   wrapped_grpc_call_credentials *cred1 =
     Z_WRAPPED_GRPC_CALL_CREDS_P(cred1_obj);
   wrapped_grpc_call_credentials *cred2 =
     Z_WRAPPED_GRPC_CALL_CREDS_P(cred2_obj);
   grpc_call_credentials *creds =
-    grpc_composite_call_credentials_create(cred1->wrapped,
-                                           cred2->wrapped, NULL);
+      grpc_composite_call_credentials_create(cred1->wrapped, cred2->wrapped,
+                                             NULL);
+#if PHP_MAJOR_VERSION < 7
+  zval *creds_object = grpc_php_wrap_call_credentials(creds TSRMLS_CC);
+  RETURN_DESTROY_ZVAL(creds_object);
+#else
   grpc_php_wrap_call_credentials(creds, return_value);
   RETURN_DESTROY_ZVAL(return_value);
 #endif
diff --git a/src/php/ext/grpc/call_credentials.h b/src/php/ext/grpc/call_credentials.h
index e05e146..e968828 100755
--- a/src/php/ext/grpc/call_credentials.h
+++ b/src/php/ext/grpc/call_credentials.h
@@ -58,6 +58,8 @@
   grpc_call_credentials *wrapped;
 } wrapped_grpc_call_credentials;
 
+#define Z_WRAPPED_GRPC_CALL_CREDS_P(zv) \
+  (wrapped_grpc_call_credentials *)zend_object_store_get_object(zv TSRMLS_CC)
 #else
 
 /* Wrapper struct for grpc_call_credentials that can be associated
diff --git a/src/php/ext/grpc/channel.c b/src/php/ext/grpc/channel.c
index 6737e34..085a51b 100644
--- a/src/php/ext/grpc/channel.c
+++ b/src/php/ext/grpc/channel.c
@@ -201,18 +201,14 @@
  * @param array $args The arguments to pass to the Channel (optional)
  */
 PHP_METHOD(Channel, __construct) {
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_channel *channel =
-      (wrapped_grpc_channel *)zend_object_store_get_object(
-          getThis() TSRMLS_CC);
-  zval **creds_obj = NULL;
-  int target_length;
-#else
   wrapped_grpc_channel *channel = Z_WRAPPED_GRPC_CHANNEL_P(getThis());
+#if PHP_MAJOR_VERSION < 7
+  zval **creds_obj = NULL;
+#else
   zval *creds_obj = NULL;
-  size_t target_length;
 #endif
   char *target;
+  php_grpc_int target_length;
   zval *args_array = NULL;
   grpc_channel_args args;
   HashTable *array_hash;
@@ -277,14 +273,8 @@
  * @return string The URI of the endpoint
  */
 PHP_METHOD(Channel, getTarget) {
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_channel *channel =
-    (wrapped_grpc_channel *)zend_object_store_get_object(getThis() TSRMLS_CC);
-  RETURN_STRING(grpc_channel_get_target(channel->wrapped), 1);
-#else
   wrapped_grpc_channel *channel = Z_WRAPPED_GRPC_CHANNEL_P(getThis());
-  RETURN_STRING(grpc_channel_get_target(channel->wrapped));
-#endif
+  PHP_GRPC_RETURN_STRING(grpc_channel_get_target(channel->wrapped), 1);
 }
 
 /**
@@ -293,12 +283,7 @@
  * @return long The grpc connectivity state
  */
 PHP_METHOD(Channel, getConnectivityState) {
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_channel *channel =
-      (wrapped_grpc_channel *)zend_object_store_get_object(getThis() TSRMLS_CC);
-#else
   wrapped_grpc_channel *channel = Z_WRAPPED_GRPC_CHANNEL_P(getThis());
-#endif
   bool try_to_connect = false;
 
   /* "|b" == 1 optional bool */
@@ -320,14 +305,8 @@
  *              before deadline
  */
 PHP_METHOD(Channel, watchConnectivityState) {
-#if PHP_MAJOR_VERSION < 7
-  long last_state;
-  wrapped_grpc_channel *channel =
-      (wrapped_grpc_channel *)zend_object_store_get_object(getThis() TSRMLS_CC);
-#else
-  zend_long last_state;
   wrapped_grpc_channel *channel = Z_WRAPPED_GRPC_CHANNEL_P(getThis());
-#endif
+  php_grpc_long last_state;
   zval *deadline_obj;
 
   /* "lO" == 1 long 1 object */
@@ -339,13 +318,7 @@
     return;
   }
 
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_timeval *deadline =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(
-          deadline_obj TSRMLS_CC);
-#else
   wrapped_grpc_timeval *deadline = Z_WRAPPED_GRPC_TIMEVAL_P(deadline_obj);
-#endif
   grpc_channel_watch_connectivity_state(channel->wrapped,
                                         (grpc_connectivity_state)last_state,
                                         deadline->wrapped, completion_queue,
@@ -360,12 +333,7 @@
  * Close the channel
  */
 PHP_METHOD(Channel, close) {
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_channel *channel =
-    (wrapped_grpc_channel *)zend_object_store_get_object(getThis() TSRMLS_CC);
-#else
   wrapped_grpc_channel *channel = Z_WRAPPED_GRPC_CHANNEL_P(getThis());
-#endif
   if (channel->wrapped != NULL) {
     grpc_channel_destroy(channel->wrapped);
     channel->wrapped = NULL;
diff --git a/src/php/ext/grpc/channel.h b/src/php/ext/grpc/channel.h
index ea5efea..94c6334 100755
--- a/src/php/ext/grpc/channel.h
+++ b/src/php/ext/grpc/channel.h
@@ -56,6 +56,9 @@
   grpc_channel *wrapped;
 } wrapped_grpc_channel;
 
+#define Z_WRAPPED_GRPC_CHANNEL_P(zv) \
+  (wrapped_grpc_channel *)zend_object_store_get_object(zv TSRMLS_CC)
+
 #else
 
 /* Wrapper struct for grpc_channel that can be associated with a PHP object */
diff --git a/src/php/ext/grpc/channel_credentials.c b/src/php/ext/grpc/channel_credentials.c
index 16ba036..e255b30 100644
--- a/src/php/ext/grpc/channel_credentials.c
+++ b/src/php/ext/grpc/channel_credentials.c
@@ -152,11 +152,7 @@
  */
 PHP_METHOD(ChannelCredentials, setDefaultRootsPem) {
   char *pem_roots;
-#if PHP_MAJOR_VERSION < 7
-  int pem_roots_length;
-#else
-  size_t pem_roots_length;
-#endif
+  php_grpc_int pem_roots_length;
 
   /* "s" == 1 string */
   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &pem_roots,
@@ -197,11 +193,9 @@
   char *pem_root_certs = NULL;
   grpc_ssl_pem_key_cert_pair pem_key_cert_pair;
 
-#if PHP_MAJOR_VERSION < 7
-  int root_certs_length = 0, private_key_length = 0, cert_chain_length = 0;
-#else
-  size_t root_certs_length = 0, private_key_length = 0, cert_chain_length = 0;
-#endif
+  php_grpc_int root_certs_length = 0;
+  php_grpc_int private_key_length = 0;
+  php_grpc_int cert_chain_length = 0;
 
   pem_key_cert_pair.private_key = pem_key_cert_pair.cert_chain = NULL;
 
@@ -246,23 +240,17 @@
                          "createComposite expects 2 Credentials", 1 TSRMLS_CC);
     return;
   }
-#if PHP_MAJOR_VERSION < 7
   wrapped_grpc_channel_credentials *cred1 =
-      (wrapped_grpc_channel_credentials *)zend_object_store_get_object(
-          cred1_obj TSRMLS_CC);
+    Z_WRAPPED_GRPC_CHANNEL_CREDS_P(cred1_obj);
   wrapped_grpc_call_credentials *cred2 =
-      (wrapped_grpc_call_credentials *)zend_object_store_get_object(
-          cred2_obj TSRMLS_CC);
+    Z_WRAPPED_GRPC_CALL_CREDS_P(cred2_obj);
+#if PHP_MAJOR_VERSION < 7
   grpc_channel_credentials *creds =
       grpc_composite_channel_credentials_create(cred1->wrapped, cred2->wrapped,
                                                 NULL);
   zval *creds_object = grpc_php_wrap_channel_credentials(creds TSRMLS_CC);
   RETURN_DESTROY_ZVAL(creds_object);
 #else
-  wrapped_grpc_channel_credentials *cred1 =
-    Z_WRAPPED_GRPC_CHANNEL_CREDS_P(cred1_obj);
-  wrapped_grpc_call_credentials *cred2 =
-    Z_WRAPPED_GRPC_CALL_CREDS_P(cred2_obj);
   grpc_channel_credentials *creds =
     grpc_composite_channel_credentials_create(cred1->wrapped,
                                               cred2->wrapped, NULL);
diff --git a/src/php/ext/grpc/channel_credentials.h b/src/php/ext/grpc/channel_credentials.h
index 44071b1..0f7759d 100755
--- a/src/php/ext/grpc/channel_credentials.h
+++ b/src/php/ext/grpc/channel_credentials.h
@@ -58,6 +58,9 @@
   grpc_channel_credentials *wrapped;
 } wrapped_grpc_channel_credentials;
 
+#define Z_WRAPPED_GRPC_CHANNEL_CREDS_P(zv) \
+  (wrapped_grpc_channel_credentials *)zend_object_store_get_object(zv TSRMLS_CC)
+
 #else
 
 /* Wrapper struct for grpc_channel_credentials that can be associated
diff --git a/src/php/ext/grpc/php7_wrapper.h b/src/php/ext/grpc/php7_wrapper.h
new file mode 100644
index 0000000..e4d0d4c
--- /dev/null
+++ b/src/php/ext/grpc/php7_wrapper.h
@@ -0,0 +1,52 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+
+#ifndef PHP7_WRAPPER_GRPC_H
+#define PHP7_WRAPPER_GRPC_H
+
+#if PHP_MAJOR_VERSION < 7
+
+#define php_grpc_int int
+#define php_grpc_long long
+#define PHP_GRPC_RETURN_STRING(val, dup) RETURN_STRING(val, dup)
+
+#else
+
+#define php_grpc_int size_t
+#define php_grpc_long zend_long
+#define PHP_GRPC_RETURN_STRING(val, dup) RETURN_STRING(val)
+
+#endif /* PHP_MAJOR_VERSION */
+
+#endif /* PHP7_WRAPPER_GRPC_H */
diff --git a/src/php/ext/grpc/php_grpc.h b/src/php/ext/grpc/php_grpc.h
index bd7ee75..e57a065 100644
--- a/src/php/ext/grpc/php_grpc.h
+++ b/src/php/ext/grpc/php_grpc.h
@@ -57,6 +57,8 @@
 
 #include "php.h"
 
+#include "php7_wrapper.h"
+
 #include "grpc/grpc.h"
 
 #define RETURN_DESTROY_ZVAL(val)                               \
diff --git a/src/php/ext/grpc/server.c b/src/php/ext/grpc/server.c
index 50fb2d0..e67e62c 100644
--- a/src/php/ext/grpc/server.c
+++ b/src/php/ext/grpc/server.c
@@ -129,12 +129,7 @@
  * @param array $args The arguments to pass to the server (optional)
  */
 PHP_METHOD(Server, __construct) {
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_server *server =
-      (wrapped_grpc_server *)zend_object_store_get_object(getThis() TSRMLS_CC);
-#else
   wrapped_grpc_server *server = Z_WRAPPED_GRPC_SERVER_P(getThis());
-#endif
   zval *args_array = NULL;
   grpc_channel_args args;
 
@@ -172,14 +167,12 @@
   grpc_metadata_array metadata;
   grpc_event event;
 
+  wrapped_grpc_server *server = Z_WRAPPED_GRPC_SERVER_P(getThis());
 #if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_server *server =
-      (wrapped_grpc_server *)zend_object_store_get_object(getThis() TSRMLS_CC);
   zval *result;
   MAKE_STD_ZVAL(result);
   object_init(result);
 #else
-  wrapped_grpc_server *server = Z_WRAPPED_GRPC_SERVER_P(getThis());
   object_init(return_value);
 #endif
 
@@ -245,14 +238,8 @@
  */
 PHP_METHOD(Server, addHttp2Port) {
   const char *addr;
-#if PHP_MAJOR_VERSION < 7
-  int addr_len;
-  wrapped_grpc_server *server =
-      (wrapped_grpc_server *)zend_object_store_get_object(getThis() TSRMLS_CC);
-#else
-  size_t addr_len;
+  php_grpc_int addr_len;
   wrapped_grpc_server *server = Z_WRAPPED_GRPC_SERVER_P(getThis());
-#endif
 
   /* "s" == 1 string */
   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &addr, &addr_len)
@@ -266,15 +253,9 @@
 
 PHP_METHOD(Server, addSecureHttp2Port) {
   const char *addr;
+  php_grpc_int addr_len;
   zval *creds_obj;
-#if PHP_MAJOR_VERSION < 7
-  int addr_len;
-  wrapped_grpc_server *server =
-      (wrapped_grpc_server *)zend_object_store_get_object(getThis() TSRMLS_CC);
-#else
-  size_t addr_len;
   wrapped_grpc_server *server = Z_WRAPPED_GRPC_SERVER_P(getThis());
-#endif
 
   /* "sO" == 1 string, 1 object */
   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sO", &addr, &addr_len,
@@ -285,14 +266,8 @@
         "add_http2_port expects a string and a ServerCredentials", 1 TSRMLS_CC);
     return;
   }
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_server_credentials *creds =
-      (wrapped_grpc_server_credentials *)zend_object_store_get_object(
-          creds_obj TSRMLS_CC);
-#else
   wrapped_grpc_server_credentials *creds =
     Z_WRAPPED_GRPC_SERVER_CREDS_P(creds_obj);
-#endif
   RETURN_LONG(grpc_server_add_secure_http2_port(server->wrapped, addr,
                                                 creds->wrapped));
 }
@@ -302,12 +277,7 @@
  * @return Void
  */
 PHP_METHOD(Server, start) {
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_server *server =
-      (wrapped_grpc_server *)zend_object_store_get_object(getThis() TSRMLS_CC);
-#else
   wrapped_grpc_server *server = Z_WRAPPED_GRPC_SERVER_P(getThis());
-#endif
   grpc_server_start(server->wrapped);
 }
 
diff --git a/src/php/ext/grpc/server.h b/src/php/ext/grpc/server.h
index a7df456..603b9a7 100755
--- a/src/php/ext/grpc/server.h
+++ b/src/php/ext/grpc/server.h
@@ -56,6 +56,9 @@
   grpc_server *wrapped;
 } wrapped_grpc_server;
 
+#define Z_WRAPPED_GRPC_SERVER_P(zv) \
+  (wrapped_grpc_server *)zend_object_store_get_object(zv TSRMLS_CC)
+
 #else
 
 /* Wrapper struct for grpc_server that can be associated with a PHP object */
diff --git a/src/php/ext/grpc/server_credentials.c b/src/php/ext/grpc/server_credentials.c
index 296632d..e61fc5b 100644
--- a/src/php/ext/grpc/server_credentials.c
+++ b/src/php/ext/grpc/server_credentials.c
@@ -144,11 +144,9 @@
   char *pem_root_certs = 0;
   grpc_ssl_pem_key_cert_pair pem_key_cert_pair;
 
-#if PHP_MAJOR_VERSION < 7
-  int root_certs_length = 0, private_key_length, cert_chain_length;
-#else
-  size_t root_certs_length = 0, private_key_length, cert_chain_length;
-#endif
+  php_grpc_int root_certs_length = 0;
+  php_grpc_int private_key_length;
+  php_grpc_int cert_chain_length;
 
   /* "s!ss" == 1 nullable string, 2 strings */
   /* TODO: support multiple key cert pairs. */
diff --git a/src/php/ext/grpc/server_credentials.h b/src/php/ext/grpc/server_credentials.h
index d37fafc..9df5950 100755
--- a/src/php/ext/grpc/server_credentials.h
+++ b/src/php/ext/grpc/server_credentials.h
@@ -58,6 +58,9 @@
   grpc_server_credentials *wrapped;
 } wrapped_grpc_server_credentials;
 
+#define Z_WRAPPED_GRPC_SERVER_CREDS_P(zv) \
+  (wrapped_grpc_server_credentials *)zend_object_store_get_object(zv TSRMLS_CC)
+
 #else
 
 typedef struct wrapped_grpc_server_credentials {
diff --git a/src/php/ext/grpc/timeval.c b/src/php/ext/grpc/timeval.c
index 8dc997c..a3ec62f 100644
--- a/src/php/ext/grpc/timeval.c
+++ b/src/php/ext/grpc/timeval.c
@@ -124,14 +124,8 @@
  * @param long $usec The number of microseconds in the interval
  */
 PHP_METHOD(Timeval, __construct) {
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_timeval *timeval =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(getThis() TSRMLS_CC);
-  long microseconds;
-#else
   wrapped_grpc_timeval *timeval = Z_WRAPPED_GRPC_TIMEVAL_P(getThis());
-  zend_long microseconds;
-#endif
+  php_grpc_long microseconds;
 
   /* "l" == 1 long */
   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &microseconds) ==
@@ -160,19 +154,14 @@
                          "add expects a Timeval", 1 TSRMLS_CC);
     return;
   }
+  wrapped_grpc_timeval *self = Z_WRAPPED_GRPC_TIMEVAL_P(getThis());
+  wrapped_grpc_timeval *other = Z_WRAPPED_GRPC_TIMEVAL_P(other_obj);
 #if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_timeval *self =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(getThis() TSRMLS_CC);
-  wrapped_grpc_timeval *other =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(other_obj TSRMLS_CC);
   zval *sum =
       grpc_php_wrap_timeval(gpr_time_add(self->wrapped, other->wrapped)
                             TSRMLS_CC);
   RETURN_DESTROY_ZVAL(sum);
 #else
-  wrapped_grpc_timeval *self = Z_WRAPPED_GRPC_TIMEVAL_P(getThis());
-  wrapped_grpc_timeval *other = Z_WRAPPED_GRPC_TIMEVAL_P(other_obj);
-
   grpc_php_wrap_timeval(gpr_time_add(self->wrapped, other->wrapped),
                         return_value);
   RETURN_DESTROY_ZVAL(return_value);
@@ -195,18 +184,14 @@
                          "subtract expects a Timeval", 1 TSRMLS_CC);
     return;
   }
+  wrapped_grpc_timeval *self = Z_WRAPPED_GRPC_TIMEVAL_P(getThis());
+  wrapped_grpc_timeval *other = Z_WRAPPED_GRPC_TIMEVAL_P(other_obj);
 #if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_timeval *self =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(getThis() TSRMLS_CC);
-  wrapped_grpc_timeval *other =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(other_obj TSRMLS_CC);
   zval *diff =
       grpc_php_wrap_timeval(gpr_time_sub(self->wrapped, other->wrapped)
                             TSRMLS_CC);
   RETURN_DESTROY_ZVAL(diff);
 #else
-  wrapped_grpc_timeval *self = Z_WRAPPED_GRPC_TIMEVAL_P(getThis());
-  wrapped_grpc_timeval *other = Z_WRAPPED_GRPC_TIMEVAL_P(other_obj);
   grpc_php_wrap_timeval(gpr_time_sub(self->wrapped, other->wrapped),
                         return_value);
   RETURN_DESTROY_ZVAL(return_value);
@@ -232,15 +217,8 @@
                          "compare expects two Timevals", 1 TSRMLS_CC);
     return;
   }
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_timeval *a =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(a_obj TSRMLS_CC);
-  wrapped_grpc_timeval *b =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(b_obj TSRMLS_CC);
-#else
   wrapped_grpc_timeval *a = Z_WRAPPED_GRPC_TIMEVAL_P(a_obj);
   wrapped_grpc_timeval *b = Z_WRAPPED_GRPC_TIMEVAL_P(b_obj);
-#endif
   long result = gpr_time_cmp(a->wrapped, b->wrapped);
   RETURN_LONG(result);
 }
@@ -265,19 +243,9 @@
                          "compare expects three Timevals", 1 TSRMLS_CC);
     return;
   }
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_timeval *a =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(a_obj TSRMLS_CC);
-  wrapped_grpc_timeval *b =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(b_obj TSRMLS_CC);
-  wrapped_grpc_timeval *thresh =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(
-          thresh_obj TSRMLS_CC);
-#else
   wrapped_grpc_timeval *a = Z_WRAPPED_GRPC_TIMEVAL_P(a_obj);
   wrapped_grpc_timeval *b = Z_WRAPPED_GRPC_TIMEVAL_P(b_obj);
   wrapped_grpc_timeval *thresh = Z_WRAPPED_GRPC_TIMEVAL_P(thresh_obj);
-#endif
   int result = gpr_time_similar(a->wrapped, b->wrapped, thresh->wrapped);
   RETURN_BOOL(result);
 }
@@ -350,12 +318,7 @@
  * @return void
  */
 PHP_METHOD(Timeval, sleepUntil) {
-#if PHP_MAJOR_VERSION < 7
-  wrapped_grpc_timeval *this =
-      (wrapped_grpc_timeval *)zend_object_store_get_object(getThis() TSRMLS_CC);
-#else
   wrapped_grpc_timeval *this = Z_WRAPPED_GRPC_TIMEVAL_P(getThis());
-#endif
   gpr_sleep_until(this->wrapped);
 }
 
diff --git a/src/php/ext/grpc/timeval.h b/src/php/ext/grpc/timeval.h
index d4eb2fa..d362460 100755
--- a/src/php/ext/grpc/timeval.h
+++ b/src/php/ext/grpc/timeval.h
@@ -57,6 +57,9 @@
   gpr_timespec wrapped;
 } wrapped_grpc_timeval;
 
+#define Z_WRAPPED_GRPC_TIMEVAL_P(zv) \
+  (wrapped_grpc_timeval *)zend_object_store_get_object(zv TSRMLS_CC)
+
 #else
 
 typedef struct wrapped_grpc_timeval {