我正在测试Code Igniter的一些东西,我注意到代码点火器没有提供让用户在模型的构造函数中设置参数的方法。 然后我搜索了一下,我发现有人实际上发现在模型中有构造函数是没用的。那是为什么?
我喜欢做以下事情:
$user = new User(123); // 123 = id
$user->getName();
或类似的模型。但现在事实证明我们不应该为它们使用构造函数。
为什么我们应该或不应该为模型类使用参数?
答案 0 :(得分:2)
我把它丢掉了,因为我对Code Ignitor一无所知,但我知道为什么大多数模型通常都采用构造函数较少的模式。
原因是序列化和反序列化。许多语言(例如Vb.net和C#)不允许基于构造函数启用的类进行序列化。因为,当反序列化一个被序列化的类时,它必须通过构造函数,这在反序列化过程中是不可能的,因为它不是通常的代码路径的一部分。
我的猜测是Code Ignitor也会出现同样的情况,他们决定为了类似的目的删除构造函数,即使在PHP中有神奇的唤醒。
我觉得这很有道理,是吗?