0

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

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

此外,在 codeigniter 中,有一个third_party packages 可以满足我的要求。kohana中是否有类似的东西?

4

4 回答 4

1

由于Kohana 级联文件系统原则,只需将您的sub_app类文件放入APPPATH . 'classes'( ) 文件夹并修改它们的名称。/application/classes/

例如:

/application/
 classes/
  sub/
   class.php

class.php文件将是:

class Sub_Class {}

然后你可以使用你的sub_app$class = new Sub_Class;

于 2013-01-16T12:20:32.573 回答
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');

或者简单地要求基于DOCROOT,这是您的基础sub_app

require DOCROOT
      . '..' . DIRECTORY_SEPARATOR
      . 'classes' . DIRECTORY_SEPARATOR
      . 'autoload.php';
于 2013-01-15T16:51:46.303 回答
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'));

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

于 2013-01-17T07:13:03.103 回答
0

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

kohana
--application // 用于 www.kohanaapp.com
--bootstrap.php
--.htaccess

--subapp // 对于 www.kohanaapp.com/sub_app/
---bootstrap.php ->
在这里编辑

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

---.htaccess
      here edit:
      RewriteRule .* /kohanaapp/subapp/index.php/$0 [PT]
于 2013-01-16T14:49:37.450 回答