original_string: protected function generate_simple_struct_class(external_single_structure $structdesc) {
          global $USER;
  
          $propeties = array();
          $fields = array();
          foreach ($structdesc->keys as $name => $fieldsdesc) {
              $type = $this->get_phpdoc_type($fieldsdesc);
              $propertytype = array('type' => $type);
              if (empty($fieldsdesc->allownull) || $fieldsdesc->allownull == NULL_ALLOWED) {
                  $propertytype['nillable'] = true;
              }
              $propeties[$name] = $propertytype;
              $fields[] = '    /** @var ' . $type . ' $' . $name . '*/';
              $fields[] = '    public $' . $name .';';
          }
          $fieldsstr = implode("\n", $fields);
  
          // We do this after the call to get_phpdoc_type() to avoid duplicate class creation.
          $classname = 'webservices_struct_class_000000';
          while (class_exists($classname)) {
              $classname++;
          }
          $code = <<<EOD
  /**
   * Virtual struct class for web services for user id $USER->id in context {$this->restricted_context->id}.
   */
  class $classname {
  $fieldsstr
  }
  EOD;
          // Load into memory.
          eval($code);
  
          // Prepare struct info.
          $structinfo = new stdClass();
          $structinfo->classname = $classname;
          $structinfo->properties = $propeties;
          // Add the struct info the the list of service struct classes.
          $this->servicestructs[] = $structinfo;
  
          return $classname;
      }
code: protected function generate_simple_struct_class(external_single_structure $structdesc) {
          global $USER;
  
          $propeties = array();
          $fields = array();
          foreach ($structdesc->keys as $name => $fieldsdesc) {
              $type = $this->get_phpdoc_type($fieldsdesc);
              $propertytype = array('type' => $type);
              if (empty($fieldsdesc->allownull) || $fieldsdesc->allownull == NULL_ALLOWED) {
                  $propertytype['nillable'] = true;
              }
              $propeties[$name] = $propertytype;
              $fields[] = '    /** @var ' . $type . ' $' . $name . '*/';
              $fields[] = '    public $' . $name .';';
          }
          $fieldsstr = implode("\n", $fields);
  
          // We do this after the call to get_phpdoc_type() to avoid duplicate class creation.
          $classname = 'webservices_struct_class_000000';
          while (class_exists($classname)) {
              $classname++;
          }
          $code = <<<EOD
  /**
   * Virtual struct class for web services for user id $USER->id in context {$this->restricted_context->id}.
   */
  class $classname {
  $fieldsstr
  }
  EOD;
          // Load into memory.
          eval($code);
  
          // Prepare struct info.
          $structinfo = new stdClass();
          $structinfo->classname = $classname;
          $structinfo->properties = $propeties;
          // Add the struct info the the list of service struct classes.
          $this->servicestructs[] = $structinfo;
  
          return $classname;
      }
code_tokens: protected function generate_simple_struct_class ( external_single_structure $ structdesc ) { global $ USER ; $ propeties = array ( ) ; $ fields = array ( ) ; foreach ( $ structdesc -> keys as $ name => $ fieldsdesc ) { $ type = $ this -> get_phpdoc_type ( $ fieldsdesc ) ; $ propertytype = array ( 'type' => $ type ) ; if ( empty ( $ fieldsdesc -> allownull ) || $ fieldsdesc -> allownull == NULL_ALLOWED ) { $ propertytype [ 'nillable' ] = true ; } $ propeties [ $ name ] = $ propertytype ; $ fields [ ] = '    /** @var ' . $ type . ' $' . $ name . '*/' ; $ fields [ ] = '    public $' . $ name . ';' ; } $ fieldsstr = implode ( "\n" , $ fields ) ; // We do this after the call to get_phpdoc_type() to avoid duplicate class creation. $ classname = 'webservices_struct_class_000000' ; while ( class_exists ( $ classname ) ) { $ classname ++ ; } $ code =  <<<EOD
  /**
   * Virtual struct class for web services for user id $USER->id in context {$this->restricted_context->id}.
   */
  class $classname {
  $fieldsstr
  }
  EOD ; // Load into memory. eval ( $ code ) ; // Prepare struct info. $ structinfo = new stdClass ( ) ; $ structinfo -> classname = $ classname ; $ structinfo -> properties = $ propeties ; // Add the struct info the the list of service struct classes. $ this -> servicestructs [ ] = $ structinfo ; return $ classname ; }
docstring: Generates a struct class.
  
  @param external_single_structure $structdesc The basis of the struct class to be generated.
  @return string The class name of the generated struct class.
docstring_tokens: Generates a struct class .