我一直试图通过静态方法和new
关键字找到实例化表单字段之间差异的一些信息。有人可以告诉我new MyFormField
和MyFormField::create()
之间的实际含义和限制是什么。关于SilverStripe
答案 0 :(得分:2)
使用create
工厂方法将检查重载(通过Object::useCustomClass()
设置)并在这种情况下返回自定义类的实例。
此方法首先针对强类重载(单例和数据库) 交互),然后自定义类重载。如果发现过载, 返回的实例而不是原始类。至 重载一个类,使用Object :: useCustomClass()
因此,使用create
方法而不是自己实例化Object可以在不改变代码的情况下重载已使用的类。
见
http://api.silverstripe.org/3.1/class-Object.html#_useCustomClass
http://api.silverstripe.org/3.1/class-Object.html#_create