Li3:父类中的查找过滤器在子级调用find()时不会触发

豪斯尼

这是有关Li3哲学的问题。我有一个子类,试图find()在父类上运行它作为其过滤器,find()但是当子类调用时不会执行find()

我有一个Members扩展Users模式模型Users模型具有一些过滤器:

<?php
# Users.php
namespace app\models;

class Users extends \lithium\data\Model {
}

Users::applyFilter('find', function($self, $params, $chain) {
    echo __LINE__;
    return $chain->next($self, $params, $chain);
});

Users::applyFilter('save', function($self, $params, $chain) {
    echo __LINE__;
    return $chain->next($self, $params, $chain);
});
?>

<?php
# Members.php
namespace app\models;

class Members extends \app\models\Users {
}
?>

如果我Members在任何控制器中使用该模型并尝试执行afind()save()on Members,则不会触发过滤器。

<?php
# FooController.php
namespace app\controllers;

use app\models\Members;

class FooController extends \lithium\action\Controller {
    public function bar() {
        $bar = Members::find();
        return compact('bar');
    }

    public function baz() {
        $baz = Members::create();
        $baz->save([
            'type' => 'addiction',
            'framework' => 'lithium'
        ]);
        return compact('baz');
    }
}
?>

我总是可以省略模型中的过滤器,Users并继承+覆盖模型中find()save()方法,例如,Users这会导致调用Members::find()触发Users::find(),但是以这种方式执行操作的Li3哲学是什么?

润滑脂

我的观点是,如果过滤器中的代码实际上是用户模型的一部分,例如执行与用户业务规则相关的操作,则应覆盖find()save()

而且,当您为User该类编写单元测试时,可以轻松地为这些功能编写测试,而不必依赖未清除的过滤器(这在单元测试中很常见)

应当保留过滤器以用于横切功能,例如测井。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

django过滤器将父级变为子级

来自分类Dev

重击查找过滤器和复制-空格问题

来自分类Dev

Notepad ++文件查找过滤器的高级用法

来自分类Dev

Maximo Anywhere-查找过滤器问题

来自分类Dev

自定义库存查找过滤器

来自分类Dev

如何在Android Studio 1.0中查找过滤器Logcat配置?

来自分类Dev

如何在Android Studio 1.0中查找过滤器Logcat配置?

来自分类Dev

Lithium Framework(li3)中找不到类错误

来自分类Dev

Python Eve - 使用经过身份验证的用户信息的动态查找过滤器

来自分类Dev

在父级中单击时在父级中调用子级元素

来自分类Dev

在构造函数过滤器中扩展/覆盖父级的方法

来自分类Dev

Lodash过滤器数组并获取父级索引

来自分类Dev

在 Ext Js 网格过滤器中未选中过滤器菜单的复选框时触发事件?

来自分类Dev

AngularJS:选择父级li时渲染子级li

来自分类Dev

点击子级不会触发父级点击

来自分类Dev

点击子级不会触发父级点击

来自分类Dev

Notepad ++ 在文件过滤器中查找

来自分类Dev

如果web.xml中存在多个过滤器,则不会触发Primefaces FileUpload事件

来自分类Dev

从JS函数填充角度过滤器不会触发过滤器工作

来自分类Dev

Mongodb 聚合过滤器在父属性上查找

来自分类Dev

如何使用依赖注入附加类级过滤器?

来自分类Dev

在子窗体中设置过滤器

来自分类Dev

在子窗体中设置过滤器

来自分类Dev

从woocommerce中的类覆盖过滤器

来自分类Dev

使父div Webkit过滤器不影响子对象

来自分类Dev

jQuery n子过滤器li.class

来自分类Dev

单击父级时触发子级元素

来自分类Dev

当子链接处于活动状态时,将活动类添加到父级li

来自分类Dev

子菜单处于活动状态时,将类添加到父级li

Related 相关文章

热门标签

归档