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;
    }
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;
    }
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 ; }
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.
Generates a struct class .