如何在几个php文件a-la-Wordpress上共享一个实例?

时间:2010-07-11 08:15:05

标签: php wordpress facebook

问候每个人,

我目前正在使用Wordpress作为我的CMS,并利用Facebook的Graph API为用户帐户/注册“东西”。

我的问题是,当Wordpress编译多个php文件以输出单个网页时,我如何使用Facebook的PHP SDK(在此处找到:http://github.com/facebook/php-sdk/)?换句话说,Wordpress的模板 header.php + index.php + footer.php =您在www.example.com上看到的内容< / p>

如果我在 HEADER.PHP 中创建我的Facebook应用程序实例,我将如何在 INDEX.PHP FOOTER.PHP中引用它们< /强>

提前致谢!

-----示例代码---

header.php中的

<?php
require '/facebook.php';

// Create our Application instance.
$facebook = new Facebook(array(
  'appId' => 'xxx',
  'secret' => 'xxx',
  'cookie' => true,
));
?>
index.php中的

<?php
$session = $facebook->getSession();
?>

4 个答案:

答案 0 :(得分:3)

如果您在$facebook中设置header.php 将无法<{1}}访问它,除非您将其全球化。

这是因为index.php是通过函数header.php加载的,它会缩小所有非全局变量的the scope

因此,您可以全球化get_header() ,因为您需要$facebook的单个实例,我强烈建议您使用singleton helper function;

Facebook

注意:如果您使用的是PHP5,则无需担心通过引用返回。

答案 1 :(得分:1)

将facebook客户端包含在header.php文件中并创建一个实例:

$facebook = new Facebook('API', 'SECRET');

然后,您可以从index.php文件甚至footer.php文件或包含header.php的任何其他文件中访问facebook客户端实例$facebook

答案 2 :(得分:1)

按顺序处理PHP,您需要确保在header.php中调用之前包含index.php。你可能总体上有这样的东西:

在index.php中

<?php
// blah blah other code
$session = $facebook->getSession();
// blah blah more code
include('header.php');

当然可以理解为:

<?php
// blah blah other code
$session = $facebook->getSession();
// blah blah more code
require '/facebook.php';
// Create our Application instance.
$facebook = new Facebook(array(
  'appId' => 'xxx',
  'secret' => 'xxx',
  'cookie' => true,
));

当您查看$facebook尚不存在的整体代码时,您可以看到。

var_dump($facebook);添加到header.php的末尾(在您设置$facebook之后,还有一个到index.php的开头(在您尝试使用$facebook之前)

另一件事可能是你调用Facebook Graph API无法正常工作并返回false或其他内容。如果var_dump存在并且未正确连接(或类似内容),则$facebook输出将相同,但如果您在设置之前尝试访问$facebook,则会有所不同它(一个将是NULL并将生成一个E_NOTICE,另一个将是一个Facebook对象 - 或者从Facebook Graph API调用返回的任何内容。)

答案 3 :(得分:0)

考虑使用已实现此功能的Wordpress Facebook Connect插件。