Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]fatal Error: Call To A Member Function Process() On A Non-object
Forum PHP.pl > Forum > Przedszkole
jessica99
co znaczy ten błąd??
Cysiaczek
To oznacza, że odwołujesz się do metody obiektu, który tak naprawdę nie jest obiektem - w $obiekt->Process() $obiekt nie jest obiektem

P.S
Przenosze na Przedszokle
jessica99
jak w takim razie zmienić ten kod?? Błąd wyskakuje w linii 44
  1. <?php
  2. // odwołaj się do biblioteki PEAR o nazwie Mail (obsługa poczty)
  3. require_once 'Mail.php';
  4. // Główna klasa, wykorzystywana do uzyskiwania informacji o zamówieniach,
  5. // wykonywania poszczególnych etapów tunelu, kontrolowania stanu realizacji zamówi
    eń, itd.
  6. class OrderProcessor
  7. {
  8. public $mOrderId;
  9. public $mOrderStatus;
  10. public $mConnection;
  11. public $mConfiguration;
  12. public $mContinueNow;
  13. private $mCurrentCustomer;
  14. private $mCurrentOrderDetails;
  15. private $mOrderManager;
  16. private $mReference;
  17. private $mAuthCode;
  18. // konstruktor tworzy egzemplarz klasy DoOrderManager
  19. function __construct()
  20. {
  21. $this->mOrderManager = new DoOrderManager();
  22. }
  23. // Funkcja Process wywoływana jest ze stron checkout.php i orders_admin.php
  24. // w celu przetworzenia zamówienia. Jej pierwszym parametrem jest ID zamówienia,
  25. // a drugim egzemplarz klasy OrderProcessorConfiguration.
  26. public function Process($newOrderId, $newConfiguration)
  27. {
  28. // ustaw ID zamówienia
  29. $this->mOrderId = $newOrderId;
  30. // skonfiguruj klasę koordynującą
  31. $this->mConfiguration = $newConfiguration;
  32. $this->mContinueNow = true;
  33. // zapamiętaj rozpoczęcie przetwarzania
  34. $this->AddAudit("Uruchomiono klasę koordynującą.", 10000);
  35. // sprawdĽ stan zamówienia
  36. $this->mOrderStatus = $this->mOrderManager->GetOrderStatus($this->mOrderId);
  37. // przetwórz odcinek tunelu
  38. try
  39. {
  40. while ($this->mContinueNow)
  41. {
  42. $this->mContinueNow = false;
  43. $cps = $this->GetCurrentPipelineSection();
  44. $cps->Process($this);
  45. }
  46. }
  47. catch(Exception $e)
  48. {
  49. trigger_error('Wyjątek "' . $e->getMessage() . '" w pliku ' .
  50. $e->getFile() . " w wierszu " . $e->getLine());
  51. $this->MailAdmin("Przy przetwarzaniu zamówienia wystąpił błąd.", $e->getMessage());
  52. $this->AddAudit("Przy przetwarzaniu zamówienia wystąpił błąd.", 10002);
  53. throw new Exception("błąd klasy koordynującej");
  54. }
  55. $this->AddAudit("Klasa koordynująca zakończyła działanie.", 10001);
  56. }
  57. // pobiera aktualny odcinek tunelu
  58. private function GetCurrentPipelineSection()
  59. {
  60. switch ($this->mOrderStatus) 
  61. {  
  62.  case 0:
  63.  $this->mCurrentPipelineSection = new PsInitialNotification(); break;
  64.  case 1:
  65.  $this->mCurrentPipelineSection = new PsCheckFunds(); break;
  66.  case 2:
  67.  $this->mCurrentPipelineSection = new PsCheckStock(); break;
  68.  case 3:
  69.  $this->mCurrentPipelineSection = new PsStockOk(); break;
  70.  case 4:
  71.  $this->mCurrentPipelineSection = new PsTakePayment(); break;
  72.  case 5:
  73.  $this->mCurrentPipelineSection = new PsShipGoods(); break;
  74.  case 6:
  75.  $this->mCurrentPipelineSection = new PsShipOK(); break;
  76.  case 7:
  77.  $this->mCurrentPipelineSection = new PsFinalNotification(); break;
  78.  case 8:
  79.  throw new Exception("Zamówienie zostało już zrealizowane."); break;
  80.  default:  
  81.  throw new Exception("Nieznany etap przetwarzania zamówienia.");
  82. }  
  83.  
  84. }
  85. // wysyła wiadomośści e-mail
  86. public function Mail($params, $to, $headers, $message)
  87. {
  88. // Utwórz obiekt obsługi poczty za pomocą metody Mail::factory
  89. $mail_object = Mail::factory('smtp', $params);
  90. // SprawdĽź, czy obiekt obsługi poczty jest poprawny
  91. if (PEAR::isError($mail_object))
  92. throw new Exception($mail_object->getMessage());
  93. // wysyła e-mail
  94. $result = $mail_object->send($to, $headers, $message);
  95. // SprawdĽ, czy wysłanie wiadomości się powiodło
  96. if (PEAR::isError($result))
  97. throw new Exception("Nie można wysłać wiadomośści do $to. " .
  98.  $result->getMessage());
  99. }
  100. // tworzy wiadomość
  101. public function MailAdmin($subject, $message)
  102. {
  103. // zazwyczaj nie można ustawić własnego nagłówka 'From'
  104. $headers['From'] = $this->mConfiguration->mOrderProcessorEmail;
  105. $headers['Subject'] = $subject;
  106. $headers['To'] = $this->mConfiguration->mAdminEmail;
  107. $this->Mail($this->mConfiguration->mOrderProcessorEmailParams,
  108. $this->mConfiguration->mAdminEmail,
  109. $headers,
  110. $message);
  111. }
  112. // pobiera klienta, który złożył zamówienie
  113. public function GetCurrentCustomer()
  114. {
  115. if (empty($this->mCurrentCustomer))
  116. {
  117. $this->mCurrentCustomer = new
  118.  Customer($this->mOrderManager->GetCustomerByOrderId($this->mOrderId));
  119. if (empty($this->mCurrentCustomer))
  120. throw new Exception($this->mOrderId . " zamówienie nie jest skojarzone z żadnym klientem");
  121. }
  122. return $this->mCurrentCustomer;
  123. }
  124. // pobiera szczegółowe informacje na temat bieżącego zamówienia
  125. public function GetCurrentOrderDetails()
  126. {
  127. if (empty($this->mCurrentOrderDetails))
  128. {
  129. $this->mCurrentOrderDetails = new
  130. OrderDetails($this->mOrderManager->GetOrderDetails($this->mOrderId));
  131. if (empty($this->mCurrentOrderDetails))
  132. throw new Exception($this->mOrderId .
  133. " nie ma wpisu ze szczegółowymi danymi zamówienia");
  134. }
  135. return $this->mCurrentOrderDetails;
  136. }
  137. // dodaje komunikat kontrolny
  138. public function AddAudit($message, $messageNumber)
  139. {
  140. $this->mOrderManager->AddAudit($this->mOrderId, $message, $messageNumber);
  141. }
  142. // uaktualnia stan zamówienia
  143. public function UpdateOrderStatus($newStatus)
  144. {
  145. $this->mOrderManager->UpdateOrderStatus($this->mOrderId, $newStatus);
  146. $this->mOrderStatus = $newStatus;
  147. }
  148.  
  149. // ustaw kod autoryzacyjny i referencyjny zamówienia
  150. public function SetOrderAuthCodeAndReference($newAuthCode, $newReference)
  151. {
  152. $this->mOrderManager->SetOrderAuthCodeAndReference($this->mOrderId,
  153.  $newAuthCode,
  154.  $newReference);
  155. $this->mAuthCode = $newAuthCode;
  156. $this->mReference = $newReference;
  157. }
  158.  
  159. // pobiera kod autoryzacyjny i referencyjny zamówienia
  160. private function GetOrderAuthCodeAndReference()
  161. {
  162. $result = $this->mOrderManager->GetOrderAuthCodeAndReference(
  163.  $this->mOrderId);
  164. if (empty($result)) throw Exception($this->mOrderId." nie istnieje");
  165. $this->mAuthCode = $result['auth_code'];
  166. $this->mReference = $result['reference'];
  167. }
  168. // pobiera kod autoryzacyjny zamówienia
  169. public function GetAuthCode()
  170. {
  171. if (empty($this->mAuthCode)) $this->GetOrderAuthCodeAndReference();
  172. return $this->mAuthCode;
  173. }
  174. // pobiera kod referencyjny zamówienia
  175. public function GetReference()
  176. {
  177. if (empty($this->mReference)) $this->GetOrderAuthCodeAndReference();
  178. return $this->mReference;
  179. }
  180.  
  181. // ustaw datę wysyłki
  182. public function SetDateShipped()
  183. {
  184. $this->mOrderManager->SetDateShipped($this->mOrderId);
  185. }
  186. }
  187. ?>
Cysiaczek
  1. <?php
  2. private function GetCurrentPipelineSection()
  3. {
  4. switch ($this->mOrderStatus) 
  5. {  
  6.  case 0:
  7.  $this->mCurrentPipelineSection = new PsInitialNotification(); break;
  8.  case 1:
  9.  $this->mCurrentPipelineSection = new PsCheckFunds(); break;
  10.  case 2:
  11.  $this->mCurrentPipelineSection = new PsCheckStock(); break;
  12.  case 3:
  13.  $this->mCurrentPipelineSection = new PsStockOk(); break;
  14.  case 4:
  15.  $this->mCurrentPipelineSection = new PsTakePayment(); break;
  16.  case 5:
  17.  $this->mCurrentPipelineSection = new PsShipGoods(); break;
  18.  case 6:
  19.  $this->mCurrentPipelineSection = new PsShipOK(); break;
  20.  case 7:
  21.  $this->mCurrentPipelineSection = new PsFinalNotification(); break;
  22.  case 8:
  23.  throw new Exception("Zamówienie zostało już zrealizowane."); break;
  24.  default:  
  25.  throw new Exception("Nieznany etap przetwarzania zamówienia.");
  26. }  
  27.  
  28. }
  29. ?>


brak instrukcji return
  1. <?php
  2. private function GetCurrentPipelineSection()
  3. {
  4. switch ($this->mOrderStatus) 
  5. {  
  6.  case 0:
  7.  $this->mCurrentPipelineSection = new PsInitialNotification(); break;
  8.  case 1:
  9.  $this->mCurrentPipelineSection = new PsCheckFunds(); break;
  10.  case 2:
  11.  $this->mCurrentPipelineSection = new PsCheckStock(); break;
  12.  case 3:
  13.  $this->mCurrentPipelineSection = new PsStockOk(); break;
  14.  case 4:
  15.  $this->mCurrentPipelineSection = new PsTakePayment(); break;
  16.  case 5:
  17.  $this->mCurrentPipelineSection = new PsShipGoods(); break;
  18.  case 6:
  19.  $this->mCurrentPipelineSection = new PsShipOK(); break;
  20.  case 7:
  21.  $this->mCurrentPipelineSection = new PsFinalNotification(); break;
  22.  case 8:
  23.  throw new Exception("Zamówienie zostało już zrealizowane."); break;
  24.  default:  
  25.  throw new Exception("Nieznany etap przetwarzania zamówienia.");
  26. }  
  27. return $this->mCurrentPipelineSection;
  28. }
  29. ?>


Pozdrawiam.
jessica99
Dzięki :roll2: musiałam być strasznie rozkojarzona jak to pisałam:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.