Stefan,
The shortcut callMixins() has issues with the Zend Platform. So use the
more verbose syntax:
public function __call($method, $arguments)
{
if (!$callable = sfMixer::getCallable('sfController:'.$method))
{
throw new sfException(sprintf('Call to undefined method
Track::%s.', $method));
}
array_unshift($arguments, $this);
return call_user_func_array($callable, $arguments);
}
Fabien
Stefan Koopmanschap wrote:
> Guys,
>
> I've been trying to implement mixins for the first time, using the
> documentation as the leading source for how to do this. I've got
> several models that need some checks. The implementation I currently
> have is:
>
> models:
> Track
> Release
>
> class in lib/:
> ValidationHandler
> contains methods:
> addBlocker()
> addWarning()
> getWarnings()
> getBlockers()
>
> in Track and Release, I've added a new method:
>
> public function __call($method, $arguments) {
> return sfMixer::callMixins();
> }
>
> and below the model definitions, I've added:
>
>
> sfMixer::register('Track', array('ValidationHandler', 'getWarnings'));
> sfMixer::register('Track', array('ValidationHandler', 'getBlockers'));
> sfMixer::register('Track', array('ValidationHandler', 'addWarning'));
> sfMixer::register('Track', array('ValidationHandler', 'addBlocker'));
>
> in Track and:
>
>
> sfMixer::register('Release', array('ValidationHandler',
> 'getWarnings'));
> sfMixer::register('Release', array('ValidationHandler',
> 'getBlockers'));
> sfMixer::register('Release', array('ValidationHandler',
> 'addWarning'));
> sfMixer::register('Release', array('ValidationHandler',
> 'addBlocker'));
>
> in Release
>
> I have specific validation methods that are only called in some
> situations, but when called, will be using addBlocker and addWarning
> to fill up the warnings and blockers. Now when I trigger such a
> situation, I get a lot of php warnings:
>
> Notice: Undefined index: object in /usr/share/php/symfony/util/
> sfMixer.class.php on line 165
>
> Warning: call_user_func_array() [function.call-user-func-array]: First
> argument is expected to be a valid callback,
> 'ValidationHandler::addBlocker' was given in /usr/share/php/symfony/
> util/sfMixer.class.php on line 179
>
>
>
> Now I found ticket #1038: http://trac.symfony-project.com/trac/ticket/1038,
> which refers to Zend Optimizer changing PHP behaviour. Is this the
> problem? Will mixins not work when using Zend Platform? Or am I doing
> something stupid here?
>
> Stefan
>
>
> >
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"symfony users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en
-~----------~----~----~----~------~----~------~--~---