小编mik*_*mik的帖子

使用Zend进行域驱动设计

这个问题是我先前问题的延续,这里是 Zend模型架构(非常感谢Bill Karwin).我已经做了一些阅读,包括这篇文章

这个问题

现在我明白了,域驱动设计是什么.但是例子仍然非常简单和糟糕.它们基于一个表和一个模型.现在,我的问题是:他们是否在现实世界的PHP项目中使用域模型设计?

我一直在寻找一些关于这方面的好文档,但我还没有找到任何足够好的文档,它解释了如何管理多个表并将它们传输到Domain Objects.只要我知道,就有Hibernate库,它具有Java中的这些功能,但我应该在PHP(Zend Framework)中使用什么?

php domain-driven-design zend-framework

14
推荐指数
1
解决办法
4373
查看次数

weblogic下的sl4j/logback

我正在尝试在Weblogic12下配置sl4j/logback.我部署了ear文件,它有war文件,有WEB-INF\classes\logback.xml
这是配置:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

<root level="debug">
    <appender-ref ref="STDOUT" />
</root>

</configuration>
Run Code Online (Sandbox Code Playgroud)

我记录的代码:

private static final Logger logger = LoggerFactory.getLogger(FrontEndServlet.class);
//......
logger.info("info test");
logger.debug("debug test");
logger.error("error test");
Run Code Online (Sandbox Code Playgroud)

我在标准输出中看到的是:

??? 14, 2012 5:09:29 PM .....FrontEndServlet doPost
INFO: info test
??? 14, 2012 5:09:29 PM .....FrontEndServlet doPost
SEVERE: error test
Run Code Online (Sandbox Code Playgroud)

因此,看起来配置文件没有被选中.我究竟做错了什么?

weblogic logback slf4j

13
推荐指数
3
解决办法
2万
查看次数

symfony域事件

我正在尝试在我的Symfony2项目中实现域驱动设计并遇到一些问题.在阅读了一些关于Domain Models的文章后,我发现了

  • 我应该将所有业务逻辑放入我的域模型(实体)中.
  • 需要完成并且不属于域逻辑的应用程序级别的东西是通过域事件(发送电子邮件,将一些消息放入队列等)触发的.

幸运的是,Symfony提供了活动,但这是一个问题 - 我不能从我的实体提出事件.Symfony文档建议使用DI将调度程序注入类中,从而引发Event

http://symfony.com/doc/current/book/internals.html#passing-along-the-event-dispatcher-object

但Symfony实体是新的,不可注射.现在我可以看到两种方式:

1)向这样的实体提供事件Dispather

class FooEntity
{
    protected $dispatcher = null;

    public function setEventDispatcher(EventDispatcher $dispatcher)
    {
        $this->dispatcher = $dispatcher;
    }
}
Run Code Online (Sandbox Code Playgroud)

2)从服务(而不是实体)提升事件.

这些选项看起来都不是很漂亮,因为在我看来他们打破了域模型的意识形态.请你指点我正确的方向.

events domain-driven-design symfony

6
推荐指数
1
解决办法
1937
查看次数

ExtJs4中的单身人士

我想在Ext JS 4中创建一个单例对象.

这是我的代码:

Ext.define('AM.model.Test', {
    extend : 'Ext.util.Observable',
    singleton : true,
    foo : function() {
        console.log('log 1');
    },
    constructor : function() {

    }
});
Run Code Online (Sandbox Code Playgroud)

我叫它:

AM.model.Test.foo();
Run Code Online (Sandbox Code Playgroud)

只要我在app.js中定义define,一切正常.当我尝试将此定义移动到'app\model\Test.js'时,我收到此错误:

AM.model.Test is undefined [Break On This Error]
AM.model.Test.foo();

我的代码出了什么问题?

singleton extjs extjs4

6
推荐指数
1
解决办法
1万
查看次数

ExtJs继承行为

有人可以向我解释这种行为.让我们声明一个类:

Ext.define('baseClass',{
    a:null,
    ar:[],

    add:function(v) {
        this.ar.push(v);
    },
    sayAr:function() {
        console.log(this.ar);
    },

    setA:function(v) {
        this.a= v;
    },
    sayA:function() {
        console.log(this.a);
    }
});
Run Code Online (Sandbox Code Playgroud)

现在我创建了两个对象

var a = Ext.create('baseClass');
var b = Ext.create('baseClass');
Run Code Online (Sandbox Code Playgroud)

测试财产

a.setA(1);
b.setA(2);

a.sayA();
b.sayA();
Run Code Online (Sandbox Code Playgroud)

这输出

1
2
Run Code Online (Sandbox Code Playgroud)

一切都很好,但是

a.add(1);
b.add(2);

a.sayAr();
b.sayAr();
Run Code Online (Sandbox Code Playgroud)

我们得到了

[1,2]
[1,2]
Run Code Online (Sandbox Code Playgroud)

这个我不明白.为什么它为两个对象使用单独的"a"属性,但使用一个"ar"数组."ar"未声明为静态!我根本得不到它.

javascript inheritance extjs

6
推荐指数
1
解决办法
550
查看次数

mysql优化非常大的表

我有一个大约15Gb的MyIsam表.我删除了大约一半的行,删除查询大约需要10个小时.现在我害怕开始optimize table,因为我不知道要花多长时间.如果您有这种大桌子的经验,请与我分享.

PS删除过程后,查询"select*from table limit 0,30"需要数年时间.会有optimize table帮助吗?

需要10个多小时吗?

如果我打断"优化表"查询,会发生什么?

mysql optimization myisam

5
推荐指数
1
解决办法
5441
查看次数

jquery datatables - 从json获取列

在jquery Datatables中是否可以使用服务器端脚本定义列?我需要这样的东西 在此输入图像描述

必须从服务器加载包含日期的列.然后列数可以变化.

jquery json datatables

5
推荐指数
2
解决办法
2万
查看次数

zend模型架构

假设我在数据库中有两个表:项目和用户.我创建了两个扩展Zend_Db_Table_Abstract的模型:Model_DbTable_UsersModel_DbTable_Projects.

现在,Model_DbTable_ProjectsModel_DbTable_Users类中创建一个实例是一个很好的模式吗?换句话说:在这个模型中放置任何逻辑是否可以,或者我应该创建另一个使用Model_DbTable_Users和的类Model_DbTable_Projects

我用来将所有逻辑放在模型中,扩展Zend_Db_Table_Abstract,但在大型项目中,它可以使代码非常不干净.所以,你能给我任何关于模型架构的建议(文章链接会很棒!).

architecture zend-framework model

4
推荐指数
1
解决办法
777
查看次数

ExtJs和嵌套模型

假设我有一个名为Vehicle的模型

Ext.define('AM.model.Vehicle', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'brandId',  type: 'int'}, 
        {name: 'brandName',  type: 'string'},
        {name: 'modelId',  type: 'int'}, 
        {name: 'modelName',  type: 'string'},
        {name: 'yearOfRelease',  type: 'int'}
    ]

});
Run Code Online (Sandbox Code Playgroud)

如您所见,车型有"brandId","brandName"等字段.例如,我想编辑此模型的实例.我创建了一个编辑表单,其中的combobox链接到'brandId'字段.然后我将表单值保存到模型实例中

values = form.getValues();
record.set(values);
Run Code Online (Sandbox Code Playgroud)

一切正常,但是代表一些外部模型的所有字段都存在问题:只更新了id,而依赖于id的所有其他字段保持不变.

在常规OOP语言(例如Java)中,我将创建一个类CarBrand并将此类的实例放在Vehicle类中.在ExtJs 4中,他们有很多关系,但没有hasOne.

ExtJS 4中针对此类嵌套模型的最佳方法是什么?

extjs extjs4

3
推荐指数
1
解决办法
9438
查看次数

zend paginator问题

我想在我的项目中使用Zend Paginator进行原始sql查询(而不是Dbselect).我不能使用Dbselect,因为我在主sql查询中有几个子查询.从手册中我发现唯一的方法就是在这样的结果数组上使用分页

$paginator = Zend_Paginator::factory($array);
Run Code Online (Sandbox Code Playgroud)

但是我在查询中有很多记录,对我来说这看起来不错.有什么方法可以解决这个问题吗?

php pagination zend-framework

1
推荐指数
1
解决办法
1474
查看次数

ExtJs组合框存储加载和形式

我的表格上有组合框的问题.问题是当我加载表单数据时(有form.loadRecord),有时组合框是空的,即使我知道模型有数据.

当我查看Firebug时,我可以看到在加载记录后加载了组合框存储.我认为这就是原因 - 组合框存储器稍后加载然后加载记录.

这是我设置combobox商店的方式:

    //All stores have autoload:true configuration.
    var possessionGroundsStore = Ext.create('path.to.store');
    var vehicleTypesStore = Ext.create('path.to.store');
    var usePurposesStore = Ext.create('path.to.store');
    this.editView = Ext.create('path.to.view');
    this.editView.getPossessionGroundsField().store = possessionGroundsStore;
    this.editView.getVehicleTypeIdComboBox().store = vehicleTypesStore;
    this.editView.getUsePurposeField().store = usePurposesStore;

    //later
    this.editView.loadRecord(record);
Run Code Online (Sandbox Code Playgroud)

有没有一种解决这个问题的常用方法?

我现在能看到的唯一方法是store.load在每个组合框存储中使用回调,然后在加载所有存储后执行loadRecord,但这看起来很复杂.

有帮助吗?

更新: 何时form.loadRecord调用内部调用field.setValue().所以,重点是:在setValue调用之前必须填充组合框存储.如果未加载商店,您将看到valueField而不是displayField.

extjs extjs4

0
推荐指数
1
解决办法
7134
查看次数