【问题标题】:Kohana: How do I set up a third party appKohana:如何设置第三方应用程序
【发布时间】:2013-01-14 21:42:57
【问题描述】:

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

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

此外,在 codeigniter 中,有一个第三方软件包可以满足我的需求。 kohana 有没有类似的东西?

【问题讨论】:

    标签: kohana kohana-3


    【解决方案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';
    

    【讨论】:

      【解决方案2】:

      只需将您的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;

      【讨论】:

        【解决方案3】:

        您可以为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'));
        

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

        【讨论】:

          【解决方案4】:

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

          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]
          

          【讨论】:

            猜你喜欢
            • 2020-07-14
            • 1970-01-01
            • 2012-04-05
            • 2011-01-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多