2013-01-14 1 views
0

kohana 사이트에 추가하려는 자체 클래스 및보기 파일이있는 작은 앱이 있습니다. 이 응용 프로그램을 내 하위 응용 프로그램이라고합니다. 그래서 kohana 앱 루트에 sub_app를 넣으면 www.kohanaapp.com/sub_app/에서이 앱에 액세스 할 수 있습니다.Kohana : 제 3 자 앱을 설정하는 방법

현재 내 sub_app 내 Kohana 앱에 정의 된 클래스는 사용할 수 없습니다. 내 sub_app에 대한 내 index.php에있는 모든 클래스를로드 할 수있는 방법이 있나요?

또한 codeigniter에는 내가 원하는 것을 수행하는 third_party 패키지가 있습니다. 코 하나에 비슷한 것이 있습니까?

답변

1

Kohana는 외부 라이브러리 코드를로드하는 데 Kohana::find_file()을 사용합니다.

일반적으로 http://kohanaframework.org/3.2/guide/kohana/autoloading#include-zends-autoloader-in-your-bootstrap

, 당신은 당신의 컨트롤러 메소드 내에서이처럼 접근, application/vendor에서 타사 라이브러리를 배치 할 :

// Load the library's feed.class.php file 
require Kohana::find_file('vendor', 'rss-php/feed.class'); 

난에서 코드를로드하려고 적이 여기 예제 그러나 응용 프로그램 루트 위의 디렉토리, Kohana가 클래스 파일을 찾을 수 있는지 확신하지 못합니다.

당신과 같이, Kohana::find_file()로를로드 할 수 있습니다 : 단순히

// Load classes/autoload.php from two directories above application 
require Kohana::find_file('../../classes', 'autoload'); 

또는이 당신의 sub_app의 기지 DOCROOT에 기반이 필요합니다

require DOCROOT 
     . '..' . DIRECTORY_SEPARATOR 
     . 'classes' . DIRECTORY_SEPARATOR 
     . 'autoload.php'; 
1

는 단순히 sub_app 클래스를 넣어 파일을 APPPATH . 'classes' (/application/classes/) 폴더로 복사하고 Kohana Cascading Filesystem 원칙으로 인해 이름을 수정하십시오. 예를 들어

는 :

/application/ 
classes/ 
    sub/ 
    class.php 

class.php 파일은 다음과 같습니다 당신은 또 다른 "응용 프로그램을 추가 할 필요가 같은

class Sub_Class {} 

은 그럼 당신은 $class = new Sub_Class;

0

음 소리처럼 sub_app 클래스를 사용할 수 있습니다 "폴더를 디렉토리 구조에 추가하십시오. 다음과 같은 제안을 고려

kohana
--application //에 대한 www.kohanaapp.com
--bootstrap.php
- htaccess로 --subapp // www를위한

을.. kohanaapp.com/sub_app/
--- 부트 스트랩.PHP ->
여기가 sub_app

Kohana::init(array(
    'base_url' => '/kohanaapp/sub_app', 
    'index_file' => FALSE 
)); 

---.htaccess 
     here edit: 
     RewriteRule .* /kohanaapp/subapp/index.php/$0 [PT] 
1

당신은 정의 할 수 있습니다 오토로더를 편집하고 bootstrap.php에 어딘가에 등록 : 당신이 수동으로 자동 로더에서 클래스를 포함해야

// find autoloader function/class in vendor/sub_app/ directory 
require_once Kohana::find_file('vendor', 'sub_app/autoloader'); 

// register autoloader::load() function as autoloader 
spl_autoload_register(array('autoloader', 'load')); 

참고.