2016-05-03 49 views
0

我正在使用亚伯拉罕TwitterOAuth PHP SDK。我将库包含在index.php(文件存在+我使用<?php)的顶部。PHP - 找不到该类,但需要它

<?php 
require 'inc/oauth/autoload.php'; 
var_dump(file_exists('inc/oauth/autoload.php')); //true 
use Abraham\TwitterOAuth\TwitterOAuth; 

下面,HTML之间我包括.php文件中div,像这样:

<?php include('div.php'); ?> 

在这种div.php文件I实例化TwitterOAuth对象类,它引发错误:

if (isset($_COOKIE['token']) && !empty($_COOKIE['token'])) { 
     $token = objectToArray(json_decode($_COOKIE['token'])); 
     $connection = new TwitterOAuth(CONSUMER, SECRET, $token['oauth_token'], $token['oauth_token_secret']); 

这会引发错误Class 'TwitterOAuth' not found

注意

这是工作之前我的代码移到div.php。然而,我需要它是独立的,因为将来我会使用JQuery来刷新div。

回答

1

类使用Abraham\TwitterOAuth命名空间 - 所以你必须包括这些内容或使用FQN(完全限定类名)

$connection = new \Abraham\TwitterOAuth\TwitterOAuth(CONSUMER, SECRET, $token['oauth_token'], $token['oauth_token_secret']); 
+0

谢谢,固定它(将接受〜6分钟)。为什么包含的文件会忽略'index.php'中的'使用亚伯拉罕\ TwitterOAuth \ TwitterOAuth;'?因为'div.php'的代码直接在'index.php'中时,这个代码就起作用了。为什么它不适用于包含? – kgongonowdoe

+1

,因为使用'use'声明的类别名只在同一个文件内部是已知的。 – Philipp

+0

我在php.net上看到:'导入规则是基于每个文件的,这意味着包含的文件不会继承父文件的导入规则。谢谢! – kgongonowdoe

相关问题