为什么所有CakePHP模型方法都是实例方法。例如:
$post = $this->Post->findById($id);
代替
$post = Post::find($id);
我认为所有适用于模型实例(或记录)的方法都是实例方法,例如:
$post = ...;
$post->publish(); // Would be $this->Post->publish($id) using Cake
并且创建或查找记录(对整个记录集合起作用)的所有方法都是类方法(实例方法),例如:
$post = Post::findById($id); // Would be $this->Post->findById($id) using Cake
$newPost = Post::create(['title' => 'My post', 'body' => '<p>...</p>']);
// Would be $newPost = $this->Post->create([...]); using Cake
我认为这种Cake约定与逻辑OOP约定相反。有谁知道这个设计的原因?
答案 0 :(得分:2)
我认为这种Cake约定与逻辑OOP约定相反。 有谁知道这个设计的原因?
您所描述的不是合乎逻辑的,也不是良好的实践。好吧,你可以提供一些链接来解释为什么你认为这是&#34;逻辑OOP约定&#34;。除了design patterns之外没有任何约定。一个好的用例是&#34;实用程序&#34;类似于&#34;实用程序&#34;中的类。 CakePHP的文件夹。没有必要有多个实例。
请参阅以下问题和链接:
如果你想要&#34;看&#34;或者认为你需要&#34;它,你可以使用Laravel而不是CakePHP,这几乎可以使用facade pattern。但我保证你不会让你的代码变得更好。