Browse Source

fix crash when setter w/o arguments is defined

fixes #5623
tags/2.0.1
Carsten Brandt 10 years ago
parent
commit
acba9e5bd3
  1. 2
      extensions/apidoc/CHANGELOG.md
  2. 14
      extensions/apidoc/models/Context.php

2
extensions/apidoc/CHANGELOG.md

@ -4,7 +4,7 @@ Yii Framework 2 apidoc extension Change Log
2.0.1 under development
-----------------------
- no changes in this release.
- Bug #5623: Fixed crash when a class contains a setter that has no arguments e.g. `setXyz()` (cebe)
2.0.0 October 12, 2014

14
extensions/apidoc/models/Context.php

@ -271,7 +271,7 @@ class Context extends Component
if ($method->isStatic) {
continue;
}
if (!strncmp($name, 'get', 3) && strlen($name) > 3 && $this->paramsOptional($method)) {
if (!strncmp($name, 'get', 3) && strlen($name) > 3 && $this->hasNonOptionalParams($method)) {
$propertyName = '$' . lcfirst(substr($method->name, 3));
if (isset($class->properties[$propertyName])) {
$property = $class->properties[$propertyName];
@ -299,7 +299,7 @@ class Context extends Component
]);
}
}
if (!strncmp($name, 'set', 3) && strlen($name) > 3 && $this->paramsOptional($method, 1)) {
if (!strncmp($name, 'set', 3) && strlen($name) > 3 && $this->hasNonOptionalParams($method, 1)) {
$propertyName = '$' . lcfirst(substr($method->name, 3));
if (isset($class->properties[$propertyName])) {
$property = $class->properties[$propertyName];
@ -331,18 +331,20 @@ class Context extends Component
}
/**
* Check whether a method has `$number` non-optional parameters.
* @param MethodDoc $method
* @param integer $number number of not optional parameters
* @return bool
*/
private function paramsOptional($method, $number = 0)
private function hasNonOptionalParams($method, $number = 0)
{
$count = 0;
foreach ($method->params as $param) {
if (!$param->isOptional && $number-- <= 0) {
return false;
if (!$param->isOptional) {
$count++;
}
}
return true;
return $count == $number;
}
/**

Loading…
Cancel
Save