Coen的莫扎特是一个防止Wordpress主题/插件中的名称空间冲突的工具,它利用Composer进行依赖管理。它类似于PHP作用域,但被描述为更简单和面向Wordpress。
我的莫扎特配置如下:
"extra": {
"mozart": {
"dep_namespace": "MZoo\\MyPlugin\\Dependencies\\",
"dep_directory": "/src/Dependencies/",
"classmap_directory": "/src/Classes/",
"classmap_prefix": "MYPREFIX_",
"packages": [
"htmlburger/carbon-fields"
],
"delete_vendor_directories": true
}
},所有的碳字段文件都是名称空间前缀,并迁移到src/Dependencies/Carbon_Fields,除了vendor/htmlburger/carbon-fields/config.php文件,该文件驻留在core目录之上,其中包含所有插件类。
我尝试在脚本标记中复制该文件:
"post-update-cmd": [
"cp vendor/htmlburger/carbon-fields/config.php src/Dependencies/Carbon_Fields/",然后以psr-4作为file将其添加到autoload中:
"files": ["src/Dependencies/Carbon_Fields/config.php"]这让莫扎特发疯了:
Call to undefined function trailingslashit() in .../vendor/htmlburger/carbon-fields/core/Carbon_Fields.php:229我认为解决方案可能是凌驾于碳场的作曲自动写成:
"autoload": {
"psr-4": {
"Carbon_Fields\\": "core/"
}
},通过Mozart的override_autoload配置选项,即“用包名键键的字典,自动加载设置以替换原始包的composer.json autoload属性中的设置”。
所以这就是我大脑减压后要做的事情。
如果有人想插话,请提前谢谢。
还是看不出是对的。
"extra": {
"mozart": {
"dep_namespace": "MZoo\\MzMboAccess\\Dependencies\\",
"dep_directory": "/src/Dependencies/",
"classmap_directory": "/src/Classes/",
"classmap_prefix": "MZMBOACCESS_",
"packages": [
"htmlburger/carbon-fields"
],
"delete_vendor_directories": false,
"override_autoload": {
"htmlburger/carbon-fields": {
"psr-4": {
"Carbon_Fields\\": "core/"
},
"files": ["./config.php"]
}
}
}
},上面的override_autoload配置似乎对config.php文件没有任何作用。
我觉得我最后要做的是:
src/Dependencies/Carbon_Fields
|__config.php
|__core/
|____All of the CF class files.我的结局是:
src/Dependencies/Carbon_Fields
|__All of the CF class files.尝试引用override_autoload中的整个目录如下:
"Carbon_Fields\\": "./"这样做的是复制所需的目录结构,但违反了psr-4自动加载标准。
发布于 2021-04-19 19:48:05
因此,Mozart还不支持字段自动加载,但其中有一个分支(可能会在某个时候合并到Mozart master中)。
下面是我能够管理碳字段的作曲家文件(还有Eric的Sessionz和WP会话管理器):
"type": "wordpress-plugin",
"scripts": {
"lint": [
"phpcs --extensions=php src *.php"
],
"fix": ["phpcbf --extensions=php src *.php"],
"post-install-cmd": [
"\"vendor/bin/mozart\" compose"
],
"post-update-cmd": [
"\"vendor/bin/mozart\" compose"
]
},
"require": {
"php": ">=7.1",
"ericmann/sessionz": "^0.3",
"ericmann/wp-session-manager": "*",
"htmlburger/carbon-fields": "*"
},
"repositories": [
{
"url": "https://github.com/brianhenryie/mozart",
"type": "git"
},
{
"url": "https://github.com/ericmann/wp-session-manager",
"type": "git"
}
],
"require-dev":{
"coenjacobs/mozart": "dev-rewrite",
"squizlabs/php_codesniffer": "*",
"wp-coding-standards/wpcs": "*"
},
"autoload": {
"psr-4": {
"MZoo\\MzMboAccess\\": "src"
}
},
"extra": {
"mozart":{
"dep_namespace": "MZoo\\MzMboAccess\\Dependencies\\",
"dep_directory": "/src/Mozart/",
"packages": [
"htmlburger/carbon-fields",
"ericmann/wp-session-manager",
"ericmann/sessionz"
],
"delete_vendor_directories": false,
"override_autoload": {
"htmlburger/carbon-fields": {
"psr-4": {
"Carbon_Fields\\": "core/"
},
"files": [
"config.php",
"templates",
"assets",
"build"
]
}
}
}
}除了作曲家自编,我还需要莫扎特特有的自编:
/**
* Autoload Classes
*/
$wp_mbo_access_autoload = NS\PLUGIN_NAME_DIR . '/vendor/autoload.php';
if ( file_exists( $wp_mbo_access_autoload ) ) {
include_once $wp_mbo_access_autoload;
}
// Mozart-managed dependencies
$wp_mbo_access_mozart_autoload = NS\PLUGIN_NAME_DIR . '/src/Mozart/autoload.php';
if ( file_exists( $wp_mbo_access_mozart_autoload ) ) {
include_once $wp_mbo_access_mozart_autoload;
}https://wordpress.stackexchange.com/questions/386805
复制相似问题