'调用未定义的函数' - 尝试从包含的文件调用函数

时间:2012-08-17 17:53:33

标签: php wordpress function include undefined

所以我有两个文件,'header.php'和'pluginfile.php'

我要调用的函数位于'pluginfile.php'中,并且是:

public function getNonSubscriptionAmount() {
    $total = 0;
    foreach($this->_items as $item) {
      if(!$item->isSubscription()) {
        $total += $item->getProductPrice() * $item->getQuantity();
      }
      else {
        // item is subscription
        $basePrice = $item->getBaseProductPrice();
        Cart66Common::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Item is a subscription with base price $basePrice");
        $total += $basePrice;
      }
    }
    return $total;
  }

所以在'header.php'中我有:

<?php
include_once($_SERVER['DOCUMENT_ROOT']."/wp-content/plugins/plugin-name/folder/PluginFile.php");
print getNonSubscriptionAmount();
?>

这会在加载任何页面时出现以下错误:

  

致命错误:调用未定义函数getnonsubscriptionamount()   /home/username/domain.com/wp-content/themes/theme/header.php on   第72行

我现在花了几个小时试图独自解决这个问题而且无处可去!任何帮助非常感谢!

2 个答案:

答案 0 :(得分:1)

@Wiseguy看起来他在评论中提出了正确的想法。

您正在声明方法而不是函数。该函数是整个plugin.php文件还是更多?如果是一切,请删除公共修饰符,然后声明

function getNonSubscriptionAmount() {
  // code here
}

但从代码的外观来看,它是更大类的一部分。如果是这种情况,那么@Wiseguy注释是正确的,你需要在plugin.php中实例化该类的新对象,然后是所需的方法。

$obj = new PluginClass();
$obj->getNonSubscriptionAmount();

答案 1 :(得分:0)

你说:

  

我要调用的函数位于'plugin.php'中,并且是:

在你的文件中,你包括:

  

所以在'header.php'我有:       include_once($ _ SERVER [ 'DOCUMENT_ROOT'] “/可湿性粉剂内容/插件/插件名/文件夹/ PluginFile.php”);       print getNonSubscriptionAmount();

你没有包含'plugin.php',这是函数的生命。

Header.php应该包含'plugin.php',而不是'PluginFile.php'。