php 在wordpress插件中使用composer包

wlsrxk51  于 2022-11-21  发布在  PHP
关注(0)|答案(2)|浏览(235)

我正在开发一个wordpress插件,插件使用了一个composer包。作为参考,我正在开发的插件在这里:
https://github.com/tunapanda/wp-h5p-xapi
我在本地工作的阶段,我想把它发布到wordpress插件库。
为了使用插件,我需要在插件目录中运行composer install来安装composer包。我的问题是,它如何与插件库一起运行,最好的做法是什么?因为很明显,如果我只是将插件发布到库中,如果有人从那里安装它,它将不会工作,因为那时将不安装作为依赖项的Composer包。
我认为有两种不同的方法可以解决这个问题:

  • 将我的vendor目录置于源代码控制之下并将其签入到仓库中。这并不像是一个理想的解决方案,因为我会失去使用包管理器(如composer)的许多意义。
  • 避免同时使用composer,而只是把我需要的包的代码放在源代码控制之下。

所以我的问题是,什么是最好的做法呢?有没有人能给我指一个使用外部依赖项的参考wordpress插件?

okxuctiv

okxuctiv1#

你的插件看起来很有趣,而且很酷的是看到一个H5P项目的补充已经作出。
至于你的问题,我不确定有没有最好的做法或最佳的方式来做到这一点。从我所看到的,最常见的事情是包括第三方库的插件,或需要一个插件已经有它。一个问题当然是如果它的版本,你需要。
如果你决定这样做,我建议你在加载插件之后包含它,并且在包含它之前做一些检查,例如。

function load_my_library() {
  if ( !class_exists( 'MyLibraryClass' ) ) {
    require_once( plugin_dir_path(__FILE__) . 'my-library/class.php' );
  }
}
add_action( 'plugins_loaded', 'load_my_library', 0 );

我希望这个答案对你有帮助。祝你插件好运!

2wnc66cl

2wnc66cl2#

使用spl_autoload_register函数。它将允许在声明类时自动加载文件。

function custom_autoloader($class) {
  include 'lib/' . $class . '.php';
}
 
spl_autoload_register('custom_autoloader');
 
$objFooBar = new FooBar();

相关问题