2010-04-15 3 views
2

Kohana 3에서는 어떻게 모듈 클래스를 재정의/확장 할 수 있습니까?Kohana에서 모듈 클래스를 재정의하는 방법 3?

예. 내 응용 프로그램과 관련된 Auth 모듈에 기능을 추가하려고합니다. 이 경우 Auth 모듈의 classes 폴더에있는 추상 Auth 클래스를 확장하려고합니다.

내 Auth 클래스에 어떤 이름 지정 규칙을 사용해야하며 파일 시스템에서 클래스 파일을 배치해야합니까?

답변

10

이 문제를 해결하려면 Kohana 3 프레임 워크의 계층 적 특성을 이해하는 것이 중요합니다. 재정의 또는 확장 모듈에 관해서는 다음을 수행해야합니다.

Auth 모듈을 확장 해 보겠습니다. Auth 모듈 파일 시스템 구조를 보면 classes 디렉토리에 auth.php이라는 파일이 있다는 것을 알 수 있습니다. Kohana_Auth 클래스를 확장하고 여기에

<?php defined('SYSPATH') OR die('No direct access allowed.'); 

abstract class Auth extends Kohana_Auth { } 

Auth라는 추상 클래스가 정의 :이 파일을 열 때 다음을 참조하십시오. 응용 프로그램에서 Auth 클래스에 대한 참조를 사용하면이 추상 클래스를 참조하게됩니다. Auth의 실제 구현은 모듈 디렉토리 구조의 어느 부분에있는 Kohana 폴더에있는 Kohana_Auth 클래스에 실제로 보관됩니다.

Auth 모듈을 확장하려면, 즉 자신의 기능을 추가하려면 응용 프로그램 디렉토리의 classes 폴더에 auth.php 파일을 넣기 만하면됩니다. auth.php 파일에서 Kohana_Auth 클래스를 확장하여 Auth 모듈의 버전을 확장 할 수 있습니다. 그래서 같이 : 그것은이 우선하기 때문에 프레임 워크가 먼저 Auth 클래스를로드하기 때문에 때문에 프레임 워크의 계층 적 특성의

<?php defined('SYSPATH') OR die('No direct access allowed.'); 

class Auth extends Kohana_Auth { 

    public function get_user() 
    { 
     $result = parent::get_user() 

     // implement your functionality here. 

     return $result; 
    } 

    public function my_added_functionality() 
    { 
    } 

} 

, 모듈의 일부로 정의 된 추상 클래스 Auth가로드되지 않습니다. 확장 한 클래스 은 범위를 벗어나거나 무시할 수있는 모든 인증 원래 기능을 제공합니다.

동작 확인에 대한 자세한 내용은 this 설명서를 참조하십시오.

관련 문제