diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/generate/t_php_generator.cc
index 9cf98ae..b1182d1 100644
--- a/compiler/cpp/src/generate/t_php_generator.cc
+++ b/compiler/cpp/src/generate/t_php_generator.cc
@@ -402,14 +402,16 @@
     "class " << php_namespace(tstruct->get_program()) << tstruct->get_name();
   if (is_exception) {
     out << " extends TException";
-  } else {
+  } else if (oop_) {
     out << " extends TBase";
   }
   out <<
     " {" << endl;
   indent_up();
 
-  indent(out) << "static $_TSPEC;" << endl << endl;
+  if (oop_) {
+    indent(out) << "static $_TSPEC;" << endl << endl;
+  }
 
   for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
     string dval = "null";
@@ -424,27 +426,31 @@
   out << endl;
 
   // Generate constructor from array
-  string param = (members.size() > 0) ? "$vals=null" : "";
-  out <<
-    indent() << "public function __construct(" << param << ") {" << endl;
-  indent_up();
-
-  generate_php_struct_spec(out, tstruct);
-
-  if (members.size() > 0) {
-    for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
-      t_type* t = get_true_type((*m_iter)->get_type());
-      if ((*m_iter)->get_value() != NULL && (t->is_struct() || t->is_xception())) {
-        indent(out) << "$this->" << (*m_iter)->get_name() << " = " << render_const_value(t, (*m_iter)->get_value()) << ";" << endl;
-      }
-    }
+  if (oop_ || members.size() > 0) {
+    string param = (members.size() > 0) ? "$vals=null" : "";
     out <<
-      indent() << "if (is_array($vals)) {" << endl <<
-      indent() << "  parent::__construct(self::$_TSPEC, $vals);" << endl <<
-      indent() << "}" << endl;
+      indent() << "public function __construct(" << param << ") {" << endl;
+    indent_up();
+
+    if (oop_) {
+      generate_php_struct_spec(out, tstruct);
+    }
+
+    if (members.size() > 0) {
+      for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
+        t_type* t = get_true_type((*m_iter)->get_type());
+        if ((*m_iter)->get_value() != NULL && (t->is_struct() || t->is_xception())) {
+          indent(out) << "$this->" << (*m_iter)->get_name() << " = " << render_const_value(t, (*m_iter)->get_value()) << ";" << endl;
+        }
+      }
+      out <<
+        indent() << "if (is_array($vals)) {" << endl <<
+        indent() << "  parent::__construct(self::$_TSPEC, $vals);" << endl <<
+        indent() << "}" << endl;
+    }
+    scope_down(out);
+    out << endl;
   }
-  scope_down(out);
-  out << endl;
 
   out <<
     indent() << "public function getName() {" << endl <<
@@ -473,10 +479,11 @@
     "public function read($input)" << endl;
   scope_up(out);
 
-  // TODO(mcslee): Testing this new jonx!
-  indent(out) << "return $this->_read('" << tstruct->get_name() << "', self::$_TSPEC, $input);" << endl;
-  scope_down(out);
-  return;
+  if (oop_) {
+    indent(out) << "return $this->_read('" << tstruct->get_name() << "', self::$_TSPEC, $input);" << endl;
+    scope_down(out);
+    return;
+  }
 
   out <<
     indent() << "$xfer = 0;" << endl <<
@@ -599,10 +606,11 @@
   }
   indent_up();
 
-  // TODO(mcslee): Testing this new j0nx
-  indent(out) << "return $this->_write('" << tstruct->get_name() << "', self::$_TSPEC, $output);" << endl;
-  scope_down(out);
-  return;
+  if (oop_) {
+    indent(out) << "return $this->_write('" << tstruct->get_name() << "', self::$_TSPEC, $output);" << endl;
+    scope_down(out);
+    return;
+  }
 
   indent(out) <<
     "$xfer = 0;" << endl;
diff --git a/compiler/cpp/src/generate/t_php_generator.h b/compiler/cpp/src/generate/t_php_generator.h
index 3f85fea..be2ca60 100644
--- a/compiler/cpp/src/generate/t_php_generator.h
+++ b/compiler/cpp/src/generate/t_php_generator.h
@@ -25,12 +25,14 @@
                   bool binary_inline=false,
                   bool rest=false,
                   bool phps=false,
-                  bool autoload=false) :
+                  bool autoload=false,
+                  bool oop=false) :
     t_oop_generator(program),
     binary_inline_(binary_inline),
     rest_(rest),
     phps_(phps),
-    autoload_(autoload) {
+    autoload_(autoload),
+    oop_(oop) {
     out_dir_base_ = (binary_inline_ ? "gen-phpi" : "gen-php");
   }
 
@@ -180,6 +182,11 @@
    */
   bool autoload_;
 
+  /**
+   * Whether to use OOP base class TBase
+   */
+  bool oop_;
+
 };
 
 #endif
diff --git a/compiler/cpp/src/main.cc b/compiler/cpp/src/main.cc
index da4ce16..0a47e53 100644
--- a/compiler/cpp/src/main.cc
+++ b/compiler/cpp/src/main.cc
@@ -142,6 +142,7 @@
 bool gen_phpi = false;
 bool gen_phps = true;
 bool gen_phpa = false;
+bool gen_phpo = false;
 bool gen_rest = false;
 bool gen_perl = false;
 bool gen_erl = false;
@@ -566,6 +567,7 @@
   fprintf(stderr, "  -phps       Generate PHP server stubs (with -php)\n");
   fprintf(stderr, "  -phpl       Generate PHP-lite (with -php)\n");
   fprintf(stderr, "  -phpa       Generate PHP with autoload (with -php)\n");
+  fprintf(stderr, "  -phpo       Generate PHP with object oriented subclasses (with -php)\n");
   fprintf(stderr, "  -py         Generate Python output files\n");
   fprintf(stderr, "  -rb         Generate Ruby output files\n");
   fprintf(stderr, "  -xsd        Generate XSD output files\n");
@@ -818,7 +820,7 @@
 
     if (gen_php) {
       pverbose("Generating PHP\n");
-      t_php_generator* php = new t_php_generator(program, false, gen_rest, gen_phps, gen_phpa);
+      t_php_generator* php = new t_php_generator(program, false, gen_rest, gen_phps, gen_phpa, gen_phpo);
       php->generate_program();
       delete php;
     }
@@ -971,6 +973,11 @@
           gen_phps = false;
         }
         gen_phpa = true;
+      } else if (strcmp(arg, "-phpo") == 0) {
+        if (!gen_php) {
+          gen_php = true;
+        }
+        gen_phpo = true;
       } else if (strcmp(arg, "-rest") == 0) {
         gen_rest = true;
       } else if (strcmp(arg, "-py") == 0) {
