2013-08-11 1 views
1

저는 Yii 프레임 워크를 한동안 사용해 왔지만 MVC 아키텍처를 기반으로하는 최소한의 고유 한 프레임 워크에서 작업하려고합니다. 부모 모델이 ModelCore인데 다른 모든 모델 (PageModel도 언급 됨)을 확장한다고 가정 해 보겠습니다. 그것은 방법을 정의하고있다 :

public function find($condition){ 
    $sql = "SELECT * FROM {$this->table()} WHERE {$condition} LIMIT 1"; 
    // executing query and returning the result 
} 

그리고 나는 내가 다른 클래스에서이 메소드를 호출 할 점 (URLresolver)이 방법에서 막혔어요 :

//... 
elseif (PageModel::find("`url` = '{$bit}'") != NULL) { 
//... 

스크립트하는 것은 치명적인 오류로 종료 : 정의되지 않은 메소드 호출 URLresolver :: table()

누군가가 PHP에서 작동하는 방식을 설명하고 어떻게 쉽게 메소드에 액세스 할 수 있는지 감사 할 것입니다.

고마워요.

답변

1

::을 사용하는 경우 정적 기능을 나타냅니다. 객체를 생성 한 경우, 당신은 좋아합니까해야 :.

$obj = new PageModel(); 
$obj->find(" YOUR QUERY "); 

public function find($q){ } 

당신이 (정적 방법이있는 경우는 new 객체를 생성하지 않았기 때문에이 개체에 reffer하지 않습니다 $ 이러한 기능에

그것은 static 방법입니다 ... 당신이 존재하지 말아 것으로 보인다 table() 함수를 호출하는 곳 찾기 정의되지 않은 메서드 URLresolver::table()

에 전화를 걸어 Otherway 당신이 필요 해달라고 :

PageModel::find($q){} 

public static function find ($q){ } 
+0

매우 도움이됩니다. 나는 정적 함수를 참조한다는 것을 몰랐다. 나는 그것을 다른 방식으로 다루려고 노력할 것이다. 고맙습니다. –

0

스크립트 는 치명적인 오류로 끝? :: 표기하지만 ->

0

오류가 꽤 자기 설명이다 다음 URLresolver 클래스는 table라는 메소드를 구현 (또는 상속)하지 않습니다. 그 이름으로 속성으로 전화하지 않으셨습니까?