Issues

ZF-7361: hasMethod() and hasProperty() of Zend_CodeGenerator_Php_Class is not working

Description

Methods and Properties are added via inherited append() of ArrayObject. All accesses to $this->_methods[$methodName] and $this->_properties[$propertyName] are not working because append() does not set any associative key.

My suggestion would be to not use append() or overriding it.

If indexed access is possible then getMethod() and getProperty() can be improved by dropping the loops and accessing the ArrayObject directly.

Comments

Would making the following changes address this?

Zend_CodeGenerator_Php_Class::setMethod() approx line 377 (r16971)

From:

 
$this->_methods->append($method);

To:

 
$this->_methods[$methodName] = $method;

Similarly

Zend_CodeGenerator_Php_Class::setProperty() approx line 299 (r16971)

From:

 
$this->_properties->append($property);

To:

 
$this->_properties[$propertyName] = $property;

Yes, this is one way fixing the bug. In addition I would improve the code of the methods hasMethod() and hasProperty() as mentioned in the description.

The priority of this issue was changed to "N/A - Not Applicable". I don't understand this priority :) Does this mean the issue will not be solved?

Confirmed, i'll take it on :-)

Fixed in trunk and merged back into 1.9 release branch.