我有一个小应用程序,它有自己的类和视图文件,我想添加到我的kohana网站。我将这个应用程序称为sub_app。因此,如果我将sub_app放在kohana应用程序根目录中,我可以访问此应用程序,网址为www.kohanaapp.com/sub_app /.
目前,在我的sub_app中,我无法使用我的Kohana应用程序中定义的任何类。有没有办法可以在index.php中为我的sub_app加载所有类。
另外,在codeigniter中,有一个third_party包可以做我想要的东西。 kohana有什么类似的吗?
答案 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');
或者只需要DOCROOT
,sub_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 - 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]