无法调用unction.php中的函数

时间:2013-01-22 作者:devs

在头版。php我有以下代码:

<span class="amountOnline">
     Online:
     <?php echo $cbMain->GetInfo()[\'Players\'] . \'/\' . $cbMain->GetInfo()[\'MaxPlayers\']; ?>
</span>
这是函数中的函数。调用的phpthis script.它工作得很好。

但一旦我把代码从front-page.phpheader.php, 我收到以下错误:\'

Notice: Undefined variable: cbMain in C:\\Users\\...\\header.php on line 102

Fatal error: Call to a member function GetInfo() on a non-object in C:\\Users\\...\\header.php on line 102
在函数中。php,我有这个函数,例如:

function get_cbMain_Query() {
  define( \'Main_SERVER_ADDR\', \'0.0.0.0\');
  define( \'Main_SERVER_PORT\', 25565);
  define( \'Main_TIMEOUT\', 1 );

  // require bloginfo(\'template_url\') . \'inc/avatars/MinecraftQuery.class.php\';
  require_once __DIR__ . \'/includes/mcQuery/MinecraftQuery.class.php\';

  Error_Reporting( E_ALL | E_STRICT );
  Ini_Set( \'display_errors\', true );

  $Timer = MicroTime( true );
  $Query = new MinecraftQuery( );

  try
  {
    $Query->Connect( Main_SERVER_ADDR, Main_SERVER_PORT, Main_TIMEOUT );
  }
  catch( MinecraftQueryException $e )
  {
   // $Error = $e->getMessage();
   // echo \'error. <br>\'. $Error;
  }
  return $Query;
}
那么

$cbMain = get_cbMain_Query();

所以我可以在静态首页中使用函数。php文件,但一旦我将此脚本移到页眉。php,它不工作,并给出了一个错误。如何修复此问题?

2 个回复
SO网友:Milo

您的类实例不在的范围内header.php, 你需要global $cbMain 访问成员函数之前。

SO网友:fuxia

您的header.php 使用调用get_header(), 所以这个文件中的所有变量在另一个文件中起作用scope 而不是调用文件。

因此,要么从全局范围获取变量,要么在functions.php 要从任何位置访问对象,请执行以下操作:

function get_cbmain() 
{
    static $instance = NULL;

    NULL === $instance and $instance = new MinecraftQuery;

    return $instance;
}
现在,您可以通过以下方式获取对象实例:

get_cbmain()->GetInfo();

结束

相关推荐

Functions.php:从博客中排除类别

所以很明显,如何从模板中排除某些类别,但我不想修改4个模板,使它们忽略某个类别。有没有一种方法可以将某个类别从阅读设置的“博客”集中排除?我正在将博客分配到名为“博客”的页面。。。但显然,档案和搜索也需要对这一超出类别的内容视而不见。我宁愿在里面做functions.php