В моем коде я пытаюсь вызвать функцию, находящуюся внутри другой функции. Я пытаюсь передать $ results var функции NVPToArray () и вернуть результат. После этого я хочу повторить результат, который будет массивом. Я продолжаю получать ошибку, говоря, что функция не определена, поэтому я уверен, что я не вызываю функцию правильно.
<?php class Process extends BaseController { // Function to convert NTP string to an array public function postPurchase() { // Include config file include(app_path().'/includes/paypal_config.php'); $result = curl_exec($curl); curl_close($curl); // Parse the API response $nvp_response_array = parse_str($result); // Function to convert NTP string to an array function NVPToArray($NVPString) { $proArray = array(); while(strlen($NVPString)) { // name $keypos= strpos($NVPString,'='); $keyval = substr($NVPString,0,$keypos); // value $valuepos = strpos($NVPString,'&') ? strpos($NVPString,'&'): strlen($NVPString); $valval = substr($NVPString,$keypos+1,$valuepos-$keypos-1); // decoding the respose $proArray[$keyval] = urldecode($valval); $NVPString = substr($NVPString,$valuepos+1,strlen($NVPString)); } return $proArray; } NVPToArray($this->$result); echo $proArray; } } ?>
Вы не должны объявлять функцию внутри функции в PHP, это вызовет ошибку, если вы запустите эту функцию более одного раза. Кроме того, ваша функция называется NVPToArray
, но вы вызываете NVPT
. Попробуйте что-то подобное (не совсем понятно, что вы пытаетесь сделать в postPurchase
).
<?php class Process extends BaseController { // Function to convert NTP string to an array public function postPurchase() { // Include config file include(app_path().'/includes/paypal_config.php'); $result = curl_exec($curl); curl_close($curl); // Parse the API response $nvp_response_array = parse_str($result); echo $this->NVPToArray($result); } // Function to convert NTP string to an array public function NVPToArray($NVPString) { $proArray = array(); while(strlen($NVPString)) { // name $keypos= strpos($NVPString,'='); $keyval = substr($NVPString,0,$keypos); // value $valuepos = strpos($NVPString,'&') ? strpos($NVPString,'&'): strlen($NVPString); $valval = substr($NVPString,$keypos+1,$valuepos-$keypos-1); // decoding the respose $proArray[$keyval] = urldecode($valval); $NVPString = substr($NVPString,$valuepos+1,strlen($NVPString)); } return $proArray; } } ?>
в<?php class Process extends BaseController { // Function to convert NTP string to an array public function postPurchase() { // Include config file include(app_path().'/includes/paypal_config.php'); $result = curl_exec($curl); curl_close($curl); // Parse the API response $nvp_response_array = parse_str($result); echo $this->NVPToArray($result); } // Function to convert NTP string to an array public function NVPToArray($NVPString) { $proArray = array(); while(strlen($NVPString)) { // name $keypos= strpos($NVPString,'='); $keyval = substr($NVPString,0,$keypos); // value $valuepos = strpos($NVPString,'&') ? strpos($NVPString,'&'): strlen($NVPString); $valval = substr($NVPString,$keypos+1,$valuepos-$keypos-1); // decoding the respose $proArray[$keyval] = urldecode($valval); $NVPString = substr($NVPString,$valuepos+1,strlen($NVPString)); } return $proArray; } } ?>
в<?php class Process extends BaseController { // Function to convert NTP string to an array public function postPurchase() { // Include config file include(app_path().'/includes/paypal_config.php'); $result = curl_exec($curl); curl_close($curl); // Parse the API response $nvp_response_array = parse_str($result); echo $this->NVPToArray($result); } // Function to convert NTP string to an array public function NVPToArray($NVPString) { $proArray = array(); while(strlen($NVPString)) { // name $keypos= strpos($NVPString,'='); $keyval = substr($NVPString,0,$keypos); // value $valuepos = strpos($NVPString,'&') ? strpos($NVPString,'&'): strlen($NVPString); $valval = substr($NVPString,$keypos+1,$valuepos-$keypos-1); // decoding the respose $proArray[$keyval] = urldecode($valval); $NVPString = substr($NVPString,$valuepos+1,strlen($NVPString)); } return $proArray; } } ?>
Вы получаете неопределенную функцию, потому что вы вызываете NVPT()
который не существует.
Вы должны вызвать NVPToArray()
.
И о $this
, поскольку ваш $result
var определен внутри функции, которую вам не нужно использовать. Вы можете вызвать его всего за $result
.
Вы бы использовали его, если бы у вас было что-то вроде:
class T { ... public $result; function yourF(){ .... echo $this->result; } }