2012-07-24 41 views
0

這是代碼的兩部分(第108行是NoBlankFunctions.php的最後一行): 看起來2me一切都是精細。它是newReposnderOAuth對$ responder的聲明(可以假定這個類很好用,因爲它被該公司的許多其他客戶使用)。在某些時候,代碼正在調用addNewUser,它是NoBlankFunctions的一部分。在這個函數裏面有一個對應答者的調用,這個函數在同一個php文件中。並且在結束時它會在嘗試發送http請求時崩潰。致命錯誤:調用一個非線對象上的成員函數http_request()108

include 'OAuth.php'; 
include 'responder_sdk.php'; 
include 'NoBlankFunctions.php'; 

$client_key = '28FB957EA00B920BE7F83A365CC7ABAF';  
$client_secret = '0B06B5A69DB0F3BCB80A716031C2DE6C'; 
$user_key = '1F566B1DE821BE68B5F485F75610F610'; 
$user_secret = '5D1406DACCA6B862AD4AE361823BB108'; 

$responder = new ResponderOAuth($client_key, $client_secret, $user_key, $user_secret); 
. 
. 
. 
addNewUser($registerFirstName, $registerLastName, $registerUserName, 
       $registerPass, $registerEmail, $registerGender, 
       $registerAge, $registerCountry, "Heb", $registerUserGMT);  

noBlankFunctions.php

function addNewUser($registerFirstName, $registerLastName, $registerUserName, 
       $registerPass, $registerEmail, $registerGender, 
       $registerAge, $registerCountry, $registerLang, $registerUserGMT) 
{ 
global $db; 
$sql = "INSERT INTO `".$db."`.`users` (`userEmail`, `nickName`, `password`, `firstName`, `lastName`, `State`, `userGMT`, `language`, `gender`, `age`, `currentDay`, `dateForCurrentDay`, `isUserCheck`, `isUserDone`, `isUserPayed`) 
     VALUES ('".$registerEmail."', '".$registerUserName."', '".$registerPass."', '".$registerFirstName."', '".$registerLastName."', '".$registerCountry."', '".$registerUserGMT."', '".$registerLang."', '".$registerGender."', '".$registerAge."', '0', '".date("Y/m/d")."', '0', '0', '0');"; 
$result = mysql_query($sql); 

if ($registerLang == 'En') 
{ 
    $listNum = 37742; 
} 
elseif($registerGender == 'Male') 
{ 
    $listNum = 37713; 
} 
else 
{ 
    $listNum = 37741; 
} 
responder($registerEmail, $registerFirstName, $listNum); 
} 

function responder($userMail, $userFirstName, $listNum) 
{ 
    $post_data = array(
     'subscribers' => json_encode(
      array(
       array(
        'EMAIL' => $userMail, 
        'NAME' => $userFirstName 
       ) 
      ) 
     ) 
    ); 
$response = $responder->http_request('lists/'.$listNum.'/subscribers', 'post', $post_data); 
} 

任何想法?

回答

0

錯誤消息是說$ $ responder不是一個對象,換句話說,它沒有被實例化;試圖訪問非對象的方法http_request顯然不會起作用。

我注意到你實例化了$responder,但是你試着從文件noBlankFunctions.php中的函數responder中引用$responder。我覺得你在引用$responder變量的局部範圍,這不是一個對象。如果您嘗試聲明$responder帶有全局預修補程序,該預修補程序應該引用上面實例化的原始$ responder變量。

gloabl $responder

Variable scope

0

$responder沒有功能的範圍內限定。

或者(按照從大到小的順序)將其作爲附加參數傳遞,或者在函數體中的某處添加global $responder(在嘗試訪問它之前),或者訪問$GLOBALS['responder']

相關問題