doutou7286 2014-11-22 19:37
浏览 26
已采纳

Kohana框架级联文件系统。 如何将文件夹添加到此级联链?

How ussualy KO3 works: 1. Get files from "system" 2. Replace some by each used "module" 3. And finally - replace by "application"

What I must todo to add in these chain one more folder folder? How to extend this cascade ? For example I want to load classes like here:

  1. "/system/"
  2. "/modules/"
  3. "/before-plugins/"
  4. "/plugins/"
  5. "/before-application/"
  6. "/application/"

and I want that "plugins" has the same functionality as "modules" To I can initialize each plugin as module, by:

    Kohana::plugins(array(
         'plugin_1'       => PLUGPATH.'plugin_1',       // Plugin 1
         'plugin_2'       => PLUGPATH.'plugin_2',       // Plugin 2
         // and so on
        ));

And what I must to do to create one more looks-like application folder, which will autoloads before application starts? ("/before-application/" and "/before-plugins/")

I know that must put into application/classes/Kohana/Core.php copy from SYSPATH and do something. But what? Help me please!

  • 写回答

1条回答 默认 最新

  • duanjiaonie6097 2014-11-22 20:26
    关注

    You actually got it wrong. Kohana::auto_load() uses Kohana::find_file('classes', $file) for your classes. The part that applies here is

    foreach (Kohana::$_paths as $dir)
    {
        if (is_file($dir.$path))
        {
            // A path has been found
            $found = $dir.$path;
    
            // Stop searching
            break;
        }
    }
    

    and since Kohana::$_paths is

    array(11) (
        0 => string(32) "/var/www/guides/3.3/application/"
        1 => string(33) "/var/www/guides/3.3/modules/.../"
        9 => string(38) "/var/www/guides/3.3/modules/.../"
        10 => string(27) "/var/www/guides/3.3/system/"
    )
    

    application will be searched first. If nothing is found there, then Kohana will look in modules. And only if there hasn't been an existing class found, the system directory will be looked into.

    Now by editing Kohana::$_paths you can easily control the order Kohana uses for autoloading.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂