【问题标题】:SilverStripe: Creating form fields statically and via the 'new' keywordSilverStripe:通过“新”关键字静态创建表单字段
【发布时间】:2014-05-03 09:38:24
【问题描述】:

我一直在尝试查找有关通过静态方法和new 关键字实例化表单字段之间差异的一些信息。有人能告诉我new MyFormFieldMyFormField::create() esp 之间的实际影响和限制是什么吗?关于 SilverStripe

【问题讨论】:

    标签: static subclass instantiation silverstripe


    【解决方案1】:

    使用create 工厂方法将检查重载(通过Object::useCustomClass() 设置)并在这种情况下返回自定义类的实例。

    此方法首先用于强类重载(单例和 DB 交互),然后是自定义类重载。如果发现过载,则 返回 this 的实例而不是原始类。至 重载一个类,使用 Object::useCustomClass()

    因此,使用 create 方法而不是自己实例化 Object 可以在不更改代码的情况下重载使用的类。


    http://api.silverstripe.org/3.1/class-Object.html#_useCustomClass
    http://api.silverstripe.org/3.1/class-Object.html#_create

    【讨论】:

    • 我想知道create 对性能的影响是什么,因为它反过来使用Injector,如果还没有实例,则创建一个实例然后get 有很多额外的代码执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2012-01-28
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多