FuelPHPをちょっと触ってみて思ったのが、Modelの呼び出しがstaticなんだなーと。
確かにnewしながら動的に持つ必要がない場合がほとんどなのでstaticでもいいよなー、いちいとnewしなくていいしstaticのがいいのかなーなんて思ってたのですが、
「modelのクラス名変えたい場合はどうしたらいいねん」
と疑念がよぎり、staticでもたないようにしました(個人的に)。
たとえば、
Article::getList();
ArticleModelから記事リストを取得する関数があったとする。
staticで持つならこんな感じだけど、仮にArticleというモデル名をあとで修正したくなった場合はどうしよう。
置換で全部変更はいけてないっすよね。
おとなしく
$Article = new Article();
しておけばよかったんちゃうかと。
あとでクラス名かえたくなっても、
$Article = new SubArticle();
でメソッド呼び出し元は、
$Article->getList();
のまま変更はいらない。
それとこれはとても個人的に、ごくまれに発生する問題なんだけど、
Controllerを継承して、複数個のModelの向き先をかえたい場合。
class NewController extends Controller{
public function __construct(){
parent::__construct();
$this->Article = new SubArticle();
}
}
これで、中身のpublicアクションの中身を変更せずに、
Modelの向き先だけ変更ができる。
よって、ぼくはnewする!
確かにnewしながら動的に持つ必要がない場合がほとんどなのでstaticでもいいよなー、いちいとnewしなくていいしstaticのがいいのかなーなんて思ってたのですが、
「modelのクラス名変えたい場合はどうしたらいいねん」
と疑念がよぎり、staticでもたないようにしました(個人的に)。
たとえば、
Article::getList();
ArticleModelから記事リストを取得する関数があったとする。
staticで持つならこんな感じだけど、仮にArticleというモデル名をあとで修正したくなった場合はどうしよう。
置換で全部変更はいけてないっすよね。
おとなしく
$Article = new Article();
しておけばよかったんちゃうかと。
あとでクラス名かえたくなっても、
$Article = new SubArticle();
でメソッド呼び出し元は、
$Article->getList();
のまま変更はいらない。
それとこれはとても個人的に、ごくまれに発生する問題なんだけど、
Controllerを継承して、複数個のModelの向き先をかえたい場合。
class NewController extends Controller{
public function __construct(){
parent::__construct();
$this->Article = new SubArticle();
}
}
これで、中身のpublicアクションの中身を変更せずに、
Modelの向き先だけ変更ができる。
よって、ぼくはnewする!