2010-12-07 3 views
0

내 프로젝트는 경량 PHP 프레임 워크를 사용하고 있습니다. 나는 이것에 약간 초보자이다.codeigniter 컨트롤러 메커니즘

그래서 제 질문은 ..

이 PHP 파일입니다.

Actor extends Controller 
{ 
    $a = 0; 

    function __construct() 
    { 
     $this->a = 1; 
    } 

    function abc() 
    { 
     echo $this->a; 
    } 

} 

내가 아약스, 생성자, __construct()를 사용하여 액터 클래스의 기능 ABC를 호출 할 때,() 매번라고?

내 말은 ... html 파일에

<script> 
    $.post(.... , url : "http://someaddress/actor/abc", function result(data){ 
     alert(data); 
    }); 
</script> 

결과 데이터 경고가 1 또는 0?

+2

베어 (명확성의 비트에 대한 편집))'메소드를 호출한다. '__construct()'에서'parent :: __ construct();'를 사용하여 모든 것이 자신의 코드보다 먼저 올바르게 설정되었는지 확인하십시오. –

+0

네, 이것이 좋은 지적입니다 - @OP는 CI 문서를 읽습니다 - 그것들은 문자 그대로 SO 옆의 최고의 정보 출처입니다. – Ross

+0

아, 당신의 clarifing 주셔서 감사합니다 ~ ^^; –

답변

2

당신이 이것을 알아 내기 위해 실행하지 않는 이유는 혼란 스럽지만 원칙적으로/actor/abc를 호출하면 "1"이됩니다.

마찬가지로 "라고 할 때 항상이는 에코 에코이"당신이 공격 할 때 공격하면

Actor extends Controller 
{ 
    function __construct() 
    { 
     echo "always echo this "; 
    } 

    function abc() 
    { 
     echo "only echo this when called "; 
    } 

    function dosomethingelse() 
    { 
     //do other stuff 
    } 

} 

하면 발생합니다/배우/abc 방송, 및/배우/그냥 "항상이 에코"렌더링 dosomethingelse .

여기에 대해 최대 읽기 : http://php.net/manual/en/language.oop5.decon.php

당신이 CodeIgniter의 컨트롤러 클래스를 확장 할 때, 당신은 아마 기본 클래스의`__construct를 (호출 할 것이라는 점을 염두에

2

예. 새 요청이있을 때마다 액터의 새 인스턴스가 만들어집니다. 따라서 Controller의 생성자는 각 요청에 대해 호출됩니다. 결과는 1이됩니다.

관련 문제