[英]How can I call a custom function that is part of a class in PHP (wordpress do_action style)?
WordPress使用鈎子和操作來實現可擴展性。 一個插件可能看起來像這樣:
class myLightbox
{
function __construct()
{
add_action('wp_footer',array($this,'my_footer'));
}
function my_footer()
{
echo '<script src="http://external-site.com/lightbox.js" ></script>';
}
}
如果我在Wordpress之外運行該代碼,我希望add_action
可以工作-即使它只是立即調用該函數。
我讀了這些:
第二個與我想做的非常接近,但是我認為它不是設計用於與類中的函數一起使用的。
我嘗試使用call_user_function
但是我不確定如何給它提供array($this,'my_footer')
東西:
function add_action($whenToCall,$contextAndFunction=array())
{
call_user_func($contextAndFunction);
}
我也嘗試過此方法,但是正如您所知,我的OOP不好,所以我很努力:
function add_action($whenToCall,$contextAndFunction=array())
{
$function = array_pop($contextAndFunction);
$context = array_pop($contextAndFunction);
$context->$function();
}
minitech
的建議測試失敗: class myLightbox
{
function __construct()
{
add_action('wp_footer',array($this,'my_footer'));
}
function my_footer()
{
echo '<script src="http://external-site.com/lightbox.js" ></script>';
}
}
function add_action($whenToCall,$contextAndFunction=array())
{
$contextAndFunction();
}
$myLightbox = new myLightbox();
產生:
Fatal error: Function name must be a string
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.