示例#1
0
 /**
  * @param  AbstractVisitor  $visitor
  * @param  Token            $token
  * @param  string           $type
  * @param  Context          $context
  * @return array
  */
 public function serializeToken(AbstractVisitor $visitor, Token $token, $type, Context $context)
 {
     $data = [];
     foreach ($token->getData() as $key => $datum) {
         $datumType = $this->getType($datum);
         $type = ['name' => $datumType, 'params' => []];
         $argsData = '';
         if ($type['name'] === 'array') {
             $argsData = [];
             foreach ($datum as $arrayKey => $arrayData) {
                 $arrayType = ['name' => $this->getType($arrayData), 'params' => []];
                 $argsData[] = ['key' => $arrayKey, 'args' => $context->accept($arrayData, $arrayType), 'type' => $arrayType];
             }
         } else {
             $argsData = $context->accept($datum, $type);
         }
         $args = ['key' => $key, 'args' => $argsData, 'type' => $type];
         $data[] = $args;
     }
     $data = array('data' => $data, 'location' => $token->getLocation());
     $visitor->setRoot($data);
     return $data;
 }