2012-01-09 80 views
3

我正在测试Code Igniter的一些东西,并且我注意到代码点火器没有提供让用户在模型构造函数中设置参数的方法。 然后我搜索了一下,发现有人发现它在模型中有构造函数没用。这是为什么?我们应该或不应该在模型中使用参数?

我很乐意做这样的事情:

$user = new User(123); // 123 = id 
$user->getName(); 

或类似的高配车型的东西。但现在事实证明,我们不应该为它们使用构造函数。

为什么我们应该或不应该使用模型类的参数?

回答

2

我扔掉我的帽子,因为我不知道任何关于代码点火器,但我知道为什么大多数模型通常具有构造函数少模式。

原因是序列化和反序列化。许多语言(例如Vb.net和C#)不允许基于构造函数启用的类进行序列化。因为,当序列化一个被串行化的类时,它将不得不通过构造函数,这在反序列化过程中是不可能的,因为它不是通常代码路径的一部分。

我的猜测是,代码点火器发生同样的事情,他们决定为类似的目的删除构造函数,即使在PHP中有神奇的唤醒。

我认为这是有道理的,是吗?

+0

对不起,你是什么意思序列化?我从来没有听说过这件事。 – Shoe 2012-01-10 01:01:27

+0

序列化是将对象或一些不太复杂的数据(如数组)转换为字符串或二进制字符串,然后可以将其反序列化回对象/数组或任何其他资源的过程。 – 2012-01-10 01:41:43

+0

在PHP中,你只能序列化PHP数据,所以对象,数组和标量数据。资源无法序列化,因为它们是特定扩展的上下文。 – 2012-01-10 01:42:18

相关问题