【问题标题】:function of Plugin::load() in cakephp architecturecakephp 架构中 Plugin::load() 的功能
【发布时间】:2016-01-18 07:57:47
【问题描述】:

Cakephp Cookbook 通常会讨论通过调用 Plugin::load() 来加载插件,以便让插件类文件可用于应用层代码。可以理解的是,Cakephp 版本 => 3.0 完全是 composer 抱怨,并且可以利用 composer 自动加载功能。当可以通过简单的 use 关键字声明来实现相同的事情时,为什么还需要为 Cakephp 插件提供特殊的类加载机制呢?

<?php 
 //in config/boostrap.php
   Plugin::load('Migrations');

这两者有什么区别?

  // inside another controller
    use path/to/plugin/files 

【问题讨论】:

  • "... 为了让插件类文件可用 ..." Cookbook 中哪里有这样说的?
  • @ndm 好的,上面写着enabling/loading。什么会阻止未启用的插件被作曲家加载?

标签: cakephp composer-php


【解决方案1】:

Plugin::load() 的目的是注册插件,加载可能的配置、引导和路由文件,并且,如果您要求它(使用 autoload 选项),它甚至可以在无法使用 composer 的情况下注册一个自动加载器。

Plugin::path()Plugin::classPath()Plugin::configPath() 等方法仅适用于已注册的插件,CakePHP 的一些内部功能依赖于这些方法,例如从插件加载资产、配置或本地化文件。

因此,即使您正在使用作曲家,您也可能需要/想要注册一个插件,以使事情正常工作。

【讨论】:

  • 很好的解释。这无疑是我提出的懒惰问题,可以通过阅读核心源轻松回答自己。
猜你喜欢
  • 2022-06-27
  • 1970-01-01
  • 2011-03-04
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2011-01-01
  • 1970-01-01
相关资源
最近更新 更多