Call to a member function Process() on a non-object na linii 44
<?php // odwołaj się do biblioteki PEAR o nazwie Mail (obsługa poczty) require_once 'Mail.php'; // Główna klasa, wykorzystywana do uzyskiwania informacji o zamówieniach, // wykonywania poszczególnych etapów tunelu, kontrolowania stanu realizacji zamówi ń, itd. class OrderProcessor { public $mOrderId; public $mOrderStatus; public $mConnection; public $mConfiguration; public $mContinueNow; private $mCurrentCustomer; private $mCurrentOrderDetails; private $mOrderManager; private $mReference; private $mAuthCode; // konstruktor tworzy egzemplarz klasy DoOrderManager function __construct() { $this->mOrderManager = new DoOrderManager(); } // Funkcja Process wywoływana jest ze stron checkout.php i orders_admin.php // w celu przetworzenia zamówienia. Jej pierwszym parametrem jest ID zamówienia, // a drugim egzemplarz klasy OrderProcessorConfiguration. public function Process($newOrderId, $newConfiguration) { // ustaw ID zamówienia $this->mOrderId = $newOrderId; // skonfiguruj klasę koordynującą $this->mConfiguration = $newConfiguration; $this->mContinueNow = true; // zapamiętaj rozpoczęcie przetwarzania $this->AddAudit("Uruchomiono klasę koordynującą.", 10000); // sprawdĽ stan zamówienia $this->mOrderStatus = $this->mOrderManager->GetOrderStatus($this->mOrderId); // przetwórz odcinek tunelu try { while ($this->mContinueNow) { $this->mContinueNow = false; $cps = $this->GetCurrentPipelineSection(); $cps->Process($this); } } catch(Exception $e) { $e->getFile() . " w wierszu " . $e->getLine()); $this->MailAdmin("Przy przetwarzaniu zamówienia wystąpił błąd.", $e->getMessage()); $this->AddAudit("Przy przetwarzaniu zamówienia wystąpił błąd.", 10002); throw new Exception("błąd klasy koordynującej"); } $this->AddAudit("Klasa koordynująca zakończyła działanie.", 10001); } // pobiera aktualny odcinek tunelu private function GetCurrentPipelineSection() { switch ($this->mOrderStatus) { case 0: $this->mCurrentPipelineSection = new PsInitialNotification(); break; case 1: $this->mCurrentPipelineSection = new PsCheckFunds(); break; case 2: $this->mCurrentPipelineSection = new PsCheckStock(); break; case 3: $this->mCurrentPipelineSection = new PsStockOk(); break; case 4: $this->mCurrentPipelineSection = new PsTakePayment(); break; case 5: $this->mCurrentPipelineSection = new PsShipGoods(); break; case 6: $this->mCurrentPipelineSection = new PsShipOK(); break; case 7: $this->mCurrentPipelineSection = new PsFinalNotification(); break; case 8: throw new Exception("Zamówienie zostało już zrealizowane."); break; default: throw new Exception("Nieznany etap przetwarzania zamówienia."); } } // wysyła wiadomośści e-mail { // Utwórz obiekt obsługi poczty za pomocą metody Mail::factory // SprawdĽź, czy obiekt obsługi poczty jest poprawny if (PEAR::isError($mail_object)) throw new Exception($mail_object->getMessage()); // wysyła e-mail $result = $mail_object->send($to, $headers, $message); // SprawdĽ, czy wysłanie wiadomości się powiodło if (PEAR::isError($result)) throw new Exception("Nie można wysłać wiadomośści do $to. " . $result->getMessage()); } // tworzy wiadomość public function MailAdmin($subject, $message) { // zazwyczaj nie można ustawić własnego nagłówka 'From' $headers['From'] = $this->mConfiguration->mOrderProcessorEmail; $headers['Subject'] = $subject; $headers['To'] = $this->mConfiguration->mAdminEmail; $this->Mail($this->mConfiguration->mOrderProcessorEmailParams, $this->mConfiguration->mAdminEmail, $headers, $message); } // pobiera klienta, który złożył zamówienie public function GetCurrentCustomer() { { $this->mCurrentCustomer = new Customer($this->mOrderManager->GetCustomerByOrderId($this->mOrderId)); throw new Exception($this->mOrderId . " zamówienie nie jest skojarzone z żadnym klientem"); } return $this->mCurrentCustomer; } // pobiera szczegółowe informacje na temat bieżącego zamówienia public function GetCurrentOrderDetails() { { $this->mCurrentOrderDetails = new OrderDetails($this->mOrderManager->GetOrderDetails($this->mOrderId)); throw new Exception($this->mOrderId . " nie ma wpisu ze szczegółowymi danymi zamówienia"); } return $this->mCurrentOrderDetails; } // dodaje komunikat kontrolny public function AddAudit($message, $messageNumber) { $this->mOrderManager->AddAudit($this->mOrderId, $message, $messageNumber); } // uaktualnia stan zamówienia public function UpdateOrderStatus($newStatus) { $this->mOrderManager->UpdateOrderStatus($this->mOrderId, $newStatus); $this->mOrderStatus = $newStatus; } // ustaw kod autoryzacyjny i referencyjny zamówienia public function SetOrderAuthCodeAndReference($newAuthCode, $newReference) { $this->mOrderManager->SetOrderAuthCodeAndReference($this->mOrderId, $newAuthCode, $newReference); $this->mAuthCode = $newAuthCode; $this->mReference = $newReference; } // pobiera kod autoryzacyjny i referencyjny zamówienia private function GetOrderAuthCodeAndReference() { $result = $this->mOrderManager->GetOrderAuthCodeAndReference( $this->mOrderId); $this->mAuthCode = $result['auth_code']; $this->mReference = $result['reference']; } // pobiera kod autoryzacyjny zamówienia public function GetAuthCode() { return $this->mAuthCode; } // pobiera kod referencyjny zamówienia public function GetReference() { return $this->mReference; } // ustaw datę wysyłki public function SetDateShipped() { $this->mOrderManager->SetDateShipped($this->mOrderId); } } ?>
Jak można zmienić ten kod by nie generował tego błędu