无法从单独的文件加载Twitteroauth类

时间:2016-05-25 19:56:00

标签: php twitter-oauth

在我的应用程序中使用非常旧的TwitterOAuth库多年(工作正常)并决定升级。注意到新版本现在包含autoload.php,它从/ src目录自动加载许多文件(类)。按照说明完成所有操作,但自动加载器无法正常工作。在搜索互联网和调试应用程序3个多小时后,我发现只有将一切(自动加载器,功能等)组合到一个文件中时,TwitterOAuth才能正常工作。如果我将函数保存在functions.php,settings.php等设置中,则无效。

我如何解决它,所以我可以将TwitterOAuth与旧版本一起使用多个文件?为方便起见,我制作了一个测试文件,以便您可以看到问题 - http://www.lipskas.com/test.zip

只需在您的服务器/ localhost上下载/启动它。如果您打开index.php文件,您将获得' Class' TwitterOAuth'找不到'错误,因为所有代码都分为3个文件(index.php,settings.php,functions.php)。

现在打开works.php,您将看到一切正常,因为3个文件中的相同代码被完全复制到一个文件中。怎么了?

更新:这是来自works.php的代码,这个代码有效:

<?php
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

function do_something_with_twitter()
{
$connection = new TwitterOAuth("aaaa", "bbbb");
$content = $connection->get("account/verify_credentials");
print_r($content);
}

do_something_with_twitter();
?>

这里是来自3个单独文件的代码,它不起作用:

的index.php

<?php
require "settings.php";

do_something_with_twitter();
?>

的settings.php

<?php
require "functions.php";
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
?>

的functions.php

<?php
function do_something_with_twitter()
{
$connection = new TwitterOAuth("aaaa", "bbbb");
$content = $connection->get("account/verify_credentials");
print_r($content);
}
?>

1 个答案:

答案 0 :(得分:0)

如果某人遇到同样的问题,您可以通过以下方式解决问题:

使用新版本的Twitteroauth库,您应该在每个需要调用Twitter库的文件中包含此行(如果您的应用有多个文件):

  

使用亚伯拉罕\ TwitterOAuth \ TwitterOAuth;