Phalcon \ MVC \ Models中的自定义事件管理器会抛出错误

时间:2013-09-29 19:46:43

标签: php phalcon

我正在尝试使用http://docs.phalconphp.com/en/latest/reference/models.html#using-a-custom-events-manager所述的事件管理器示例。

class Products extends Phalcon\Mvc\Model
{
    public function initialize()
    {
        $eventsManager = new Phalcon\Events\Manager();

        $eventsManager->attach('model', function($event, $robot) {
            // Do something (or nothing at all).
            return true;
        });
        $this->setEventsManager($eventsManager);

    $this->setSource('products');
    }
}

$o = Products::findFirst();
$o->we = 5;
$o->save();

这会导致以下错误:

脚本引发E_ERROR并显示消息“Phalcon \ Mvc \ Model \ Manager :: notifyEvent():在非对象上调用方法fire()”

在EventsManager设置中我缺少什么?

我在使用Phalcon 1.3.0。

谢谢, Temuri

1 个答案:

答案 0 :(得分:2)

这看起来像一个错误:

    if (Z_TYPE_P(custom_events_manager) == IS_ARRAY) { 
+       zval *mgr;

        PHALCON_INIT_NVAR(entity_name);
        phalcon_get_class(entity_name, model, 1 TSRMLS_CC);
-       if (phalcon_array_isset(custom_events_manager, entity_name)) {
+       if (phalcon_array_isset_fetch(&mgr, custom_events_manager, entity_name)) {

            PHALCON_INIT_NVAR(fire_event_name);
            PHALCON_CONCAT_SV(fire_event_name, "model:", event_name);

            PHALCON_INIT_NVAR(status);
-           phalcon_call_method_p2(status, custom_events_manager, "fire", fire_event_name, model);
+           phalcon_call_method_p2(status, mgr, "fire", fire_event_name, model);
            if (PHALCON_IS_FALSE(status)) {
                RETURN_CTOR(status);
            }
        }
    }