我正在开发一个wordpress插件,这个插件使用了一个composer包。作为参考,我正在开发的插件在这里:
https://github.com/tunapanda/wp-h5p-xapi我正处于它在本地工作的阶段,我想将它发布到wordpress插件存储库。
为了使用插件,我需要在插件目录中运行composer install
以安装composer包。我的问题是,这是如何与插件存储库一起发挥作用,什么是最佳实践来实现这一工作?因为很明显,如果我只是将插件发布到存储库,如果有人从那里安装它,它将无法工作,从那时起,作为依赖的composer包将不会被安装。
我看到两种不同的方法来处理这个问题:
将我的
vendor
目录置于源代码控制下并检入到存储库。这感觉不像是一个理想的解决方案,因为我将失去使用包管理器(如composer)的大部分意义。避免一起使用composer,而是将我需要的包的代码放在源代码控制下。
我的问题是,这方面的最佳实践是什么?谁能告诉我一个使用外部依赖关系的参考wordpress插件?
你的插件看起来很有趣,看到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 );
我希望这个答案对你有所帮助。祝你好运! 使用spl_autoload_register函数。它将允许在声明类时自动加载文件。
function custom_autoloader($class) {
include 'lib/' . $class . '.php';
}
spl_autoload_register('custom_autoloader');
$objFooBar = new FooBar();