2012-01-09 14 views
3

私はCode Igniterの何かをテストしており、コードイグナイターはモデルのコンストラクターでパラメーターをユーザーに設定させる方法を提供していないことに気付きました。 それから、私はちょっと調べました。実際に誰かがモデルにコンストラクタを持っているのは役に立たないことが分かりました。何故ですか?モデルでパラメータを使用すべきか、使用しないでください。

私のようなものやってみたい:

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

やモデルとのそのような何かを。しかし、今ではコンストラクタを使うべきではないことが判明しました。

モデルクラスにパラメータを使用する必要がありますか、使用しないでください。

答えて

2

私はCode Ignitorについて何も知らないので、私の帽子を捨ててしまいますが、なぜほとんどのモデルは通常、コンストラクタのパターンが少ないのか分かります。

理由はシリアル化と逆シリアル化です。多くの言語(Vb.netやC#など)では、コンストラクタ対応のクラスに基づいたシリアライゼーションはできません。なぜなら、シリアライズされたクラスをデシリアライズするときは、通常のコードパスの一部ではないため、デシリアライズ処理では不可能なコンストラクタを経由する必要があるからです。

私は、Code Ignitorでも同じことが起こると思いますが、PHPで魔法の起床があっても、同様の目的でコンストラクタを削除することにしました。

私はそれが理にかなっていると思いますか?

+0

申し訳ありません。シリアル化はどういう意味ですか?私はそれについて何も聞いたことがない。 – Shoe

+0

シリアライゼーションは、オブジェクトや配列などのあまり複雑ではないデータを、文字列またはバイナリ文字列に変換し、オブジェクト/配列やその他のリソースに逆シリアル化できるプロセスです。 –

+0

PHPでは、PHPデータ(オブジェクト、配列、スカラーデータ)のみをシリアル化できます。リソースは、特定の拡張機能のコンテキストに基づいて直列化することはできません。 –

関連する問題