首先讓我開始說我使用CodeIgniter和Facebook類埃利奧特Haughin創建。 http://www.haughin.com/code/facebook/我有那份工作,發現一切都很好。但是當我用各種FB賬戶測試我的代碼時,我偶然發現了一個我想評估的問題,但是我的嘗試失敗了。我搜索了一下,並打了其他論壇,我一直想出我最初提出的答案。一些應該通過一切手段,但似乎並沒有在這種情況下..stdClass問題與檢測isset,空,其他
現在,我已經說過,我的問題是.. FB傳回的對象並不總是有一個特定的條目它。對於這個例子的目的不適的言的用戶名..
繼承人返回的數據的示例使用用戶名:
facebookResponse Object
(
[__construct:private] =>
[__resp] => stdClass Object
(
[data] => stdClass Object
(
[id] => 0000000000000
[name] => Random.User
[first_name] => Random
[middle_name] => ...
[last_name] => User
[link] => http://www.facebook.com/profile.php?id=000000000
[birthday] => 11/26/1980
[gender] => male
[timezone] => -4
[locale] => en_US
[verified] => 1
[updated_time] => 2011-05-30T19:24:53+0000
)
這裏是一個沒有用戶名的例子:
facebookResponse Object
(
[__construct:private] =>
[__resp] => stdClass Object
(
[data] => stdClass Object
(
[id] => 000000000000000000000
[name] => Random User
[first_name] => Random
[last_name] => User
[link] => http://www.facebook.com/Random.User
[username] => Random.User
[birthday] => 11/10/1985
[hometown] => stdClass Object
(
[id] => 000000000000000
[name] => Coventry, Connecticut
)
[location] => stdClass Object
(
[id] => 00000000000000
[name] => San Jose, California
)
我最後失敗的嘗試,試圖解決這個問題像這樣的事情..
$fb_result = $this->facebook->call('get', 'me', array('metadata' => 1));
$fbFirstName = $fb_result->first_name;
$fbLastName = $fb_result->last_name;
$fbUserName = $fb_result->username;
$fbUserId = $fb_result->id;
$fbHomeTown = $fb_result->hometown->name;
$fbLocation = $fb_result->location->name;
echo "<strong>First Name: </strong>"; if((isset($fbFirstName))AND(!empty($fbFirstName))AND(trim($fbFirstName) !== "")){echo $fb_result->first_name ."<br />"; }else{ echo "Not found.<br />"; }
echo "<strong>Last Name: </strong>"; if((isset($fbLastName))AND(!empty($fbLastName))AND(trim($fbLastName) !== "")){echo $fb_result->last_name."<br />"; }else{ echo "Not found.<br />"; }
echo "<strong>Username: </strong>"; if((isset($fbUserName))AND(!empty($fbUserName))AND(trim($fbUserName) !== "")){echo $fb_result->username."<br />"; }else{ echo "Not found.<br />"; }
echo "<strong>User FB ID: </strong>"; if((isset($fbUserId))AND(!empty($fbUserId))AND(trim($fbUserId) !== "")){echo $fb_result->id."<br />"; }else{ echo "Not found.<br />"; }
echo "<strong>Location hometown: </strong>"; if((isset($fbHomeTown))AND(!empty($fbHomeTown))AND(trim($fbHomeTown) !== "")){echo $fb_result->hometown->name."<br />"; }else{ echo "Not found.<br />"; }
echo "<strong>Location current (manual input): </strong>"; if((isset($fbLocation))AND(!empty($fbLocation))AND(trim($fbLocation) !== "")){echo $fb_result->location->name."<br />"; }else{ echo "Not found.<br />"; }
其中在我首先將其定義爲變量的情況下,然後使用if-else檢查它現在正在工作。我現在正在「嘗試獲取非對象的屬性」以獲取錯誤。這意味着我想,因爲它不在那裏,我試圖將它設置爲一個變量,無論它爲它踢出一個錯誤。我花了一天的更多時間和昨天試圖解決這個問題,我不得不說我被卡住了。 PHP的錯誤類型不過是一個單純的「通知」,但我通常不喜歡把我的代碼保留在一個狀態中,即使是那樣的錯誤也會踢這樣的錯誤......這就是說我迷失了方向......
所有雖然這並沒有完全幫助它確實提高了一點。我不確定發生了什麼事情,我不得不說,它絕對是一個獨特的情況。如果我檢查是空的,它包含的東西會回來,儘管有些東西,當有些東西不合法時,它會說有。它是一個巨大的思想****,現在我有其他的魚可以炒,所以它最終會成爲其中一個把它放在bug列表概念上,我得到它只是處理一個「錯誤」 「通知」的級別。 – chris