Make REST PHP deserializer generated PHP code support map/list/set
authorMark Slee <mcslee@apache.org>
Thu, 4 Oct 2007 01:19:20 +0000 (01:19 +0000)
committerMark Slee <mcslee@apache.org>
Thu, 4 Oct 2007 01:19:20 +0000 (01:19 +0000)
Summary: list/set are comma-separated and explode, map is JSON decoded

Reviewed By: hzhao

Test Plan: Invoke API methods via JSON

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665290 13f79535-47bb-0310-9956-ffa450edef68

compiler/cpp/src/generate/t_php_generator.cc

index b913185..70dbb51 100644 (file)
@@ -912,7 +912,16 @@ void t_php_generator::generate_service_rest(t_service* tservice) {
           ((t_base_type*)atype)->is_string_list()) {
         f_service_ << 
           indent() << "$" << (*a_iter)->get_name() << " = explode(',', $" << (*a_iter)->get_name() << ");" << endl;
-      }      
+      } else if (atype->is_map()) {
+        f_service_ << 
+          indent() << "$" << (*a_iter)->get_name() << " = json_decode($" << (*a_iter)->get_name() << ", true);" << endl;
+      } else if (atype->is_list()) {
+        f_service_ << 
+          indent() << "$" << (*a_iter)->get_name() << " = explode(',', $" << (*a_iter)->get_name() << ");" << endl;
+      } else if (atype->is_set()) {
+        f_service_ << 
+          indent() << "$" << (*a_iter)->get_name() << " = array_fill_keys(explode(',', $" << (*a_iter)->get_name() << "), 1);" << endl;
+      }
     }
     f_service_ <<
       indent() << "return $this->impl_->" << (*f_iter)->get_name() << "(" << argument_list((*f_iter)->get_arglist()) << ");" << endl;