电话
$error = new WP_Error( $code, $message, $data );
输出说我在代码中添加了三条消息(消息A、消息B、消息C
my_code
在最后一条消息中,我添加了“数据”作为
$data
, 全部重写
$data
与以前对错误类的调用一起添加。
WP_Error Object
(
[errors] => Array
(
[my_code] => Array
(
[0] => "msg A"
[1] => "msg B"
[2] => "msg C"
)
)
[error_data] => Array
(
[my_code] => "Data"
)
)
检查后(&A);通过使用wp错误类,我得到了以下问题:
问题
我可以通过无限数量的
$code
,然后传递无限数量的
$message
s到每个代码。关键是我不能超过一个
$data
每
$code
.
Q: 的预期使用情形是什么$data
?1)
目前,我正在尝试构建一个非常简单的WP\\U错误包装API(基本上是一组易于使用的函数)。目标是从中生成trac票据,并将其移动到WP core
我在/wp includes/functions中发现了一个非常奇怪的行为。php与wp_die();
函数:如果提供错误对象,函数会自动填充$data[\'title\']
. 所以从这个来看我认为$data
可以是一个关联数组,可以保存任意数量的附加动态数据。
Q: 但是,只有当这是预期用例时,这才有效$data
a)是一个数组,b)我成功地在其中添加了其他数据:我如何将其连接到相应的消息?
Q: 进一步:为什么不wp_die();
如果没有错误,是否中止?这使得将其用作动态(万一)添加的错误输出完全无效。
您可以找到用于修复wp_die()
处理程序here.
可以找到第一个“主题错误API”的草稿here on github. 分叉等,并高度赞赏评论。
SO网友:EarnestoDev
$this->error_data[$code]
... WP\\u Error对象在数组中保存$数据,$code是键。这个add_data
方法明确规定:
错误代码只能包含一个错误数据。但是$data
(混合)可以是数组或对象,并根据需要携带任意多个键/属性。这取决于你的处理者如何解释它。
错误$data
是进一步自定义错误处理的奖励。您自己的特殊函数可以抛出WP_Error
您可以将自定义数据添加到$data
这可以由您自己的错误处理程序进行解释。
wp_die();
与相同die;
仅在执行此操作之前显示格式化输出。预计它将死亡。die;
在PHP中是无条件的。它的目的是停在那里wp_die();
旨在模拟具有高级死前输出功能的功能。
这个\'title\'
在$data
支持只是一种奖励,允许对WP_Error()
. 它的设计使他们不需要选择error_code
\'如果存在多条消息,则s消息为标题。它们只使用默认的标题属性。永远不要依赖此类默认功能!在中始终使用您自己的标题wp_die()
.
这里没有错误,只是有意的行为。。。如果我没弄错你的问题
SO网友:EarnestoDev
/**
* Creates a static global shared WP_Error object.
* The object is contained safely inside function body as static variable.
* It\'s also protected from external influence.
*
* @return WP_Error
*/
function theme_errors(){
static $wp_error; // Will hold global variable safely
return isset($wp_error) ? $wp_error : ($wp_error = new WP_Error(null, null, null));
}
// This is how you add errors (first call initializes the object).
theme_errors()->add($code = \'code\', $message = \'message\', $data = \'some data\');
theme_errors()->add($code = \'code\', $message = \'message\', $data = \'some data\');
// And then do some display stuff on shutdown
add_action(\'shutdown\', function(){
// If conditions are met and errors exist:
if(!theme_errors()->get_error_codes()) return;
// Loop error codes and display errors
foreach(($codes = theme_errors()->get_error_codes()) as $code){
$message = theme_errors()->get_error_message($code);
$data = theme_errors()->get_error_data($code);
// Display stuff here
}
});
更简单的选择。主题名称独立(我们只处理活动主题)。函数内受保护的全局变量。