diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/generate/t_php_generator.cc
index eeac91e..5b3c979 100644
--- a/compiler/cpp/src/generate/t_php_generator.cc
+++ b/compiler/cpp/src/generate/t_php_generator.cc
@@ -1336,7 +1336,7 @@
       generate_deserialize_container(out, type, name);
     } else if (type->is_base_type() || type->is_enum()) {
 
-      out << indent() << "if (is_a($input,'TBinaryProtocolAccelerated') && function_exists('thrift_protocol_binary_deserialize')) {" << endl;
+      out << indent() << "if (($input instanceof TProtocol::$TBINARYPROTOCOLACCELERATED) && function_exists('thrift_protocol_binary_deserialize')) {" << endl;
       indent_up();
       string ttype_name;
       if (type->is_enum()) {
@@ -1496,7 +1496,7 @@
 void t_php_generator::generate_deserialize_container(ofstream &out,
                                                      t_type* ttype,
                                                      string prefix) {
-  out << indent() << "if (is_a($input, 'TBinaryProtocolAccelerated') && function_exists('thrift_protocol_binary_deserialize'))" << endl;
+  out << indent() << "if (($input instanceof TProtocol::$TBINARYPROTOCOLACCELERATED) && function_exists('thrift_protocol_binary_deserialize'))" << endl;
   scope_up(out);
 
   string ttype_name;
diff --git a/lib/php/src/protocol/TProtocol.php b/lib/php/src/protocol/TProtocol.php
index 658e54c..7e736d5 100644
--- a/lib/php/src/protocol/TProtocol.php
+++ b/lib/php/src/protocol/TProtocol.php
@@ -39,6 +39,12 @@
  * Protocol base class module.
  */
 abstract class TProtocol {
+  // The below may seem silly, but it is to get around the problem that the
+  // "instanceof" operator can only take in a T_VARIABLE and not a T_STRING
+  // or T_CONSTANT_ENCAPSED_STRING. Using "is_a()" instead of "instanceof" is
+  // a workaround but is deprecated in PHP5. This is used in the generated
+  // deserialization code.
+  static $TBINARYPROTOCOLACCELERATED = 'TBinaryProtocolAccelerated';
 
   /**
    * Underlying transport
@@ -63,7 +69,7 @@
     return $this->trans_;
   }
 
-  /** 
+  /**
    * Writes the message header
    *
    * @param string $name Function name
@@ -112,19 +118,19 @@
   public abstract function writeMapBegin($keyType, $valType, $size);
 
   public abstract function writeMapEnd();
-  
+
   public abstract function writeListBegin($elemType, $size);
-  
+
   public abstract function writeListEnd();
 
   public abstract function writeSetBegin($elemType, $size);
 
   public abstract function writeSetEnd();
-  
+
   public abstract function writeBool($bool);
 
   public abstract function writeByte($byte);
-  
+
   public abstract function writeI16($i16);
 
   public abstract function writeI32($i32);
@@ -150,7 +156,7 @@
   public abstract function readMessageEnd();
 
   public abstract function readStructBegin(&$name);
-  
+
   public abstract function readStructEnd();
 
   public abstract function readFieldBegin(&$name, &$fieldType, &$fieldId);
@@ -162,17 +168,17 @@
   public abstract function readMapEnd();
 
   public abstract function readListBegin(&$elemType, &$size);
-  
+
   public abstract function readListEnd();
 
   public abstract function readSetBegin(&$elemType, &$size);
-  
+
   public abstract function readSetEnd();
 
   public abstract function readBool(&$bool);
-  
+
   public abstract function readByte(&$byte);
-  
+
   public abstract function readI16(&$i16);
 
   public abstract function readI32(&$i32);
@@ -343,7 +349,7 @@
       }
     default:
       return 0;
-    }   
+    }
   }
 }
 
@@ -358,6 +364,6 @@
    */
   public function getProtocol($trans);
 }
-    
+
 
 ?>
