2016-05-03 52 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

相關問題