Kohana:我如何设置第三方应用程序

时间:2013-01-14 21:42:58

标签: kohana kohana-3

我有一个小应用程序,它有自己的类和视图文件,我想添加到我的kohana网站。我将这个应用程序称为sub_app。因此,如果我将sub_app放在kohana应用程序根目录中,我可以访问此应用程序,网址为www.kohanaapp.com/sub_app /.

目前,在我的sub_app中,我无法使用我的Kohana应用程序中定义的任何类。有没有办法可以在index.php中为我的sub_app加载所有类。

另外,在codeigniter中,有一个third_party包可以做我想要的东西。 kohana有什么类似的吗?

4 个答案:

答案 0 :(得分: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');

或者只需要DOCROOTsub_app的基础{<1}}:

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

答案 1 :(得分:1)

只需将sub_app类文件放到APPPATH . 'classes'/application/classes/)文件夹中,然后根据Kohana Cascading Filesystem原则修改其名称。

例如:

/application/
 classes/
  sub/
   class.php

class.php文件将是:

class Sub_Class {}

然后,您可以使用sub_app$class = new Sub_Class;类,{{1}}

答案 2 :(得分:1)

您可以为sub_app定义自动加载器并在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'));

请注意,您必须在该自动加载器中手动包含您的类。

答案 3 :(得分:0)

听起来好像你只需要在目录结构中添加另一个“应用程序”文件夹。请考虑以下建议:

kohana
  --application // for www.kohanaapp.com
     --bootstrap.php
      - .htaccess

- subapp // for www.kohanaapp.com/sub_app/
    --- bootstrap.php - &gt;
            在这里编辑

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

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