Проблема, с которой я сталкиваюсь, заключается в том, что я не могу использовать динамические переменные внутри класса и функции.Переменная scope php внутри класса и функции
Я бы хотел загрузить $p_name
, который получает свое значение от $p_real_name
(запись в базе данных), но это не сработает, хотя первые два примера в коде работают просто отлично.
Я пропустил что-то простое? Я пытался объединить несколько различных способов, но на самом деле, я чувствую, что я из моей глубины ..
$p_real_name = $row['input_1']; //This comes further up the code
$p_name = 1; // Works fine
$p_name = test; // Works fine
$p_name = $p_real_name; // Does not work.
//If I echo out $p_real_name or even $p_name here, I get the correct value back.
class myFunctionClass{
private $_api_user;
private $_api_key;
private $_token;
private $_test;
public function __construct($api_user, $api_key, $p_name){
$this->_api_user = $api_user;
$this->_api_key = $api_key;
$this->_test = $p_name;
}
public function login(){
$result = $this->_make_api_call('users/login', true, array('api_user' => $this->_api_user, 'api_key' => $this->_api_key));
$this->_token = $result['token'];
}
public function getToken(){
return $this->_token;
}
public function myFunction($p_name) {
$this->_test = $p_name; //tried with or without global
$params = array(
'token' => $this->_token,
'receiver_name' => $this->_test, //this only works with the first 2 examples of $p_name at the top of the code, not the 3rd example
'receiver_address1' => $p_address
);
$ch = curl_init(); //Latest edit
$query = http_build_query($params);
curl_setopt($ch, CURLOPT_URL, self::API_ENDPOINT . '/' . 'shipments/imported_shipment');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);
$output = json_decode($output, true);
}
}
$testObject = new myFunctionClass($api_user, $api_key, $p_name);
$testObject->login();
$testObject->getToken();
$testObject->myFunction($p_name);
Проблема заключается в «RECEIVER_NAME» не получает правильного ввода данных, если я использую $p_name = $p_real_name;
только тогда, когда я использую $p_name = 1; or $p_name = static;
Так что не работает здесь, его трудно отличить от вас вопрос. –
Прежде всего, не используйте глобальные. Никогда. Когда-либо. Нет единственной причины использовать его. Когда вы думаете, что нет другого выбора, кроме использования глобального, это означает, что вам просто нужно думать дольше :) –
@Jeff, я попытался добавить несколько строк под обновленным кодом - надеюсь, что это прояснится? – Mark