정확히 모든 CakePHP Model 메소드가 인스턴스 메소드입니까?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
이 케이크 규칙은 논리적 인 OOP 규칙에 위배된다고 생각합니다. 누구든지이 디자인의 이유를 알고 있습니까?
각 모델마다 개별적인 설정이 필요하기 때문에 거의 확실합니다. 따라서 모델에서 이러한 설정을 저장할 상태를 유지하는 것이 좋습니다. 예를 들어 모델 관계 및 유효성 검사 규칙은 개별 모델간에 매우 가변적 인 일반적으로 사용되는 설정입니다. – Kai
하지만 정적 변수는 어떻습니까? 예 : 클래스 게시 모델 확장 { static $ validations = array (...); 정적 $ belongsTo = '사용자'; } – user1065745
정적 속성은 상속으로 덮어 쓸 수 없으며 물론 CakePHP의 모든 사용자 정의 모델은 Model에서 상속되므로 실제로 작동하지 않습니다. http://stackoverflow.com/questions/532754/inheritance-of-static-members-in-php – Kai