zfcampus / zf-apigility-documentation-swagger

BSD 3-Clause "New" or "Revised" License
11 stars 27 forks source link

Call to a member function getName() on a non-object in zfcampus/zf-apigility-documentation-swagger/src/Service.php #11

Closed rerlinger closed 9 years ago

rerlinger commented 9 years ago

If an REST service contains at least one ore more fields, the following error occurs:

Fatal error: Call to a member function getName() on a non-object in /vendor/zfcampus/zf-apigility-documentation-swagger/src/Service.php on line 158

The reason is in case of foreach ($service->fields as $field) the $field contains an array of objects instead of the object itself.

Instead of using the following code:

foreach ($service->fields as $field) {
    $properties[$field->getName()] = array(
        'type' => method_exists($field, 'getType') ? $field->getType() : 'string',
        'description' => $field->getDescription()
    );
    if ($field->isRequired()) {
        $requiredProperties[] = $field->getName();
    }
}

the following code fixed my problem temporary:

foreach ($service->fields as $field) {
    $field = $field[0]; // get object from first index of array
    $properties[$field->getName()] = array(
        'type' => method_exists($field, 'getType') ? $field->getType() : 'string',
        'description' => $field->getDescription()
    );
    if ($field->isRequired()) {
        $requiredProperties[] = $field->getName();
    }
}