Make sure to lazily initialize $TSPEC for structs even with no members
Reviewed By: dweatherford
Test Plan: Generate code with no E_ALL for method-less args
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665346 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/generate/t_php_generator.cc
index c16cfa4..c0fdd25 100644
--- a/compiler/cpp/src/generate/t_php_generator.cc
+++ b/compiler/cpp/src/generate/t_php_generator.cc
@@ -398,28 +398,27 @@
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) {
- out <<
- indent() << "public function __construct($vals=null) {" << endl;
- indent_up();
-
- generate_php_struct_spec(out, tstruct);
-
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 <<