*/
void t_php_generator::generate_php_struct_spec(ofstream& out,
t_struct* tstruct) {
- indent(out) << "static $_TSPEC = array(" << endl;
+ indent(out) << "if (!isset(self::$_TSPEC)) {" << endl;
+ indent_up();
+
+ indent(out) << "self::$_TSPEC = array(" << endl;
indent_up();
const vector<t_field*>& members = tstruct->get_members();
indent_down();
indent(out) << " );" << endl;
+ indent_down();
+ indent(out) << "}" << endl;
}
" {" << endl;
indent_up();
- generate_php_struct_spec(out, tstruct);
+ indent(out) << "static $_TSPEC;" << endl << endl;
for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
string dval = "null";
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())) {