WordPress add_action错误?

时间:2019-05-30 19:46:50

标签: wordpress

将单个对象数组作为数组传递给do_action时,add_action会将其视为对象,而不是数组。是一个错误吗?

/* Correct if $order is not object*/
$orders = array();
$orders[] = 'abc';

add_action('action123', 'func123');
function func123($orders){
    //$orders will be array here (CORRECT)
}

do_action( 'action123', $orders); 


/* BUG: if $orders is an object */
$orders = array();
$orders[]=new stdClass();

add_action('action123', 'func123');
function func123($orders){
    //$orders will be non-array here (BUG?)
}

do_action( 'action123', $orders); 

1 个答案:

答案 0 :(得分:0)

一个好问题,直到我尝试了一下,我才意识到这一点,但这是预期的和故意的行为(仅适用于将对象作为唯一项的数组),如{{3 }} 而且,如果您查看do_action()的代码,也会看到相同的内容。

偶然地,当您尝试在数组上设置属性时,您的示例代码将引发错误:

PHP Warning:  Attempt to assign property 'name' of non-object in object-test.php

另外,请确保始终在do_action之前执行add_action,以使“挂钩”功能生效。