너무 간단합니다!
모델 호출 기사가 있다고 가정합니다.
BaseArticle.class : 당신은BaseArticle.class.php 및 Article.class.php 및 ArticleTable.class.php 여기
각 클래스에 대한 정의는 세 종류라는 것입니다. PHP :이 클래스는 모델 정의 (또는 테이블 정의)를가집니다. 이 클래스를 편집하고 싶지 않습니다.
Article.class.php : 귀하의 모델에 대해 작성할 수있는 재정의 방법을위한 장소입니다. Article 클래스의 인스턴스가있을 때만 이러한 함수에 액세스 할 수 있습니다. 이므로 개체로만 호출 할 수 있습니다. 예를 들면 :
$article=new Article();
$article->getSummary();
ArticleTable.class.php을 :
는
class Album extends BaseArticle {
public function getSummary(){
....
}
}
를 사용하는이 작업을 수행해야하며, 이것은 당신이 당신의 전체 기사 그 커다란위한 당신의 함수를 작성하고 싶은 곳이다 (또는 전체 기사 모델에 대해 말하는 것이 낫습니다.) 가장 인기있는 기사를 찾으려면 문서에서만 작동하므로 기사 클래스에이 기능을 쓸 수 없습니다. 그러나 당신은 당신의 전체 테이블에서 이것을하고 싶습니다.그래서 :
class AlbumTable extends Doctrine_Table {
public static function getPopularArticles() {
}
}
당신은 당신의 함수는 정적 경우이처럼 사용할 필요가 : 그래서
Doctrine_Core::getTable('Product')->your_nonstatic_function();
또한 ArticleTable 함수/메소드가 정적이어야하는 이유는 무엇입니까? 정적이 아닌 잘 작동하는 몇 가지 메소드가 있습니다. – user1020069
인스턴스화하지 않고 이러한 함수를 호출하기 때문에이 경우 함수는 정적이어야합니다. 그렇지 않으면 ArticleTable :: getXXX() – Firouziam
Firouziam을 사용하여 액세스 할 수 있습니다. ArticleTable의 인스턴스를 Article 인스턴스와 혼동하게됩니다. 많은 경우 (대부분은 아니지만) 테이블 메소드를 정적으로 사용하지는 않습니다. 비 정적 테이블 메서드를 호출하려면 필자가 내 대답에 포함 된 코드를 사용해야합니다. Doctrine_Core :: getTable ('Product') 비 정적 함수 호출을 허용하도록 테이블 클래스의 인스턴스를 검색합니다. – Omn