Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] pobieranie danej z funkcji - obiektowo
bartekxm
post 19.12.2016, 14:12:24
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 19.12.2016

Ostrzeżenie: (0%)
-----


Witam!
Jestem początkujący jeśli chodzi o programowanie obiektowe. Do tej pory programowałem tylko strukturalnie. Niestety mam za zadanie wykonać połączenie swojego systemu webowego z systemem wysyłkowym firmy kurierskiej DPD. Znalazłem w sieci rozwiązanie napisane obiektowo.
Struktura działania klasy narzucona przez DPD jest następująca:
1. rejestrowanie paczki w systemie DPD - mam funkcję print_r($dpd->registerNewPackage());
2. na podstawie danych odebranych z systemu DPD po wykonaniu punktu 1 należy wygenerować etykietę logistyczną podając w argumencie funkcji nr paczki - tzw. waybill
tutaj mam funkcję - var_dump($dpd->getLabelPDF(2, "waybill"));
3. na podstawie danych odebranych z systemu DPD po wykonaniu punktu 1 należy wygenerować protokół podając w argumencie funkcji nr referencyjny - funkcja: var_dump($dpd->getProtocol(array('REFERENCE_NUMBER')));

WAYBILL oraz REFERENCE_NUMBER zwracane są w tablicy w pierwszej funkcji registerNewPackage() jednak nie wiem jak się do nich odwołać aby użyć tych zmiennych w dwóch kolejnych funkcjach.

poniżej funkcja registerNewPackage():
  1. public function registerNewPackage(){
  2. /*
  3.   * zapisuje paczke w DPD
  4.   */
  5.  
  6. if(!is_array($this->shipTo) or !is_array($this->shipFrom) or !is_array($this->packageDetails)){
  7. Throw new Exception("Parametry paczki muszą zostać uzupełnione poprawnie");
  8. }
  9.  
  10. $openUMLFV1 = $this->prepareRegisterString();
  11.  
  12. try {
  13. $params1->policyV1="STOP_ON_FIRST_ERROR";
  14. $params1->openUMLXV1= $openUMLFV1;
  15. $params1->authDataV1 = $this->authData;
  16. $result = $this->soapClient->generatePackagesNumbersXV1($params1);
  17. $xml = simplexml_load_string($result->return);
  18.  
  19. //sprawdzenie statusu
  20. switch($xml->Status) {
  21. case "DUPLICATED_PACKAGE_SEARCH_KEY":
  22.  
  23. $error = "Identyfikator ".$this->packageDetails['reference_number'].", jest juz w systemie. Paczka nie może zostać ponownie zapisana pod tym samym identyfikatorem. Błąd: ".$xml->Packages->Package->InvalidFields->InvalidField->Info;
  24. $return_array = array(
  25. "type" => "error",
  26. "message" => $error
  27. );
  28. break;
  29.  
  30. case "DISALLOWED_FID":
  31. $error = "Błąd konfiguracji, niepoprawny numer FID. Kod błędu: ".$xml->Status;
  32. $return_array = array(
  33. "type" => "error",
  34. "message" => $error
  35. );
  36. break;
  37.  
  38. case "INCORRECT_DATA":
  39.  
  40. //wyswietlenie bledu dla kazdej dostepnej parcel
  41. foreach($xml->Packages->Package->InvalidFields->InvalidField as $invalid_field) {
  42. if($invalid_field->Status == "VALUE_INCORRECT") {
  43. $error .= $invalid_field->Info.', w polu: '.$invalid_field->FieldName.'<br/>';
  44. }
  45. }
  46. $return_array = array(
  47. "type" => "error",
  48. "message" => $error
  49. );
  50. break;
  51.  
  52. case "OK":
  53. $return_array = array(
  54. "type" => "ok",
  55. "array" => array(
  56. "package_id" => $xml->Packages->Package->PackageId,
  57. "reference" => $xml->Packages->Package->Reference,
  58. "parcels" => $xml->Packages->Package->Parcels,
  59. "first_waybill" => $xml->Packages->Package->Parcels->Parcel->Waybill)
  60. );
  61. break;
  62. }
  63. } catch (Exception $e) {
  64. $error = $e->getMessage();
  65.  
  66. $return_array = array(
  67. "type" => "error",
  68. "message" => $error
  69. );
  70. };
  71. return $return_array;
  72. }


Bardzo proszę o pomoc...

Pozdrawiam,
Bartek

Ten post edytował bartekxm 19.12.2016, 14:14:47
Go to the top of the page
+Quote Post
nospor
post 19.12.2016, 14:41:06
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




registerNewPackage() zwraca ci tablice z danymi ktorych potrzebujesz. Pisales ze znasz sie na proceduralnym to jaki problem ci obsluzyc dane z tablicy?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bartekxm
post 19.12.2016, 14:57:43
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 19.12.2016

Ostrzeżenie: (0%)
-----


Funkcję wywołuję następująco:

  1. try{
  2. $dpd = new DpdApi();
  3. $dpd->setLang("pl_PL");
  4.  
  5. //webservice host (xml) - ask Your DPD consultant
  6. $dpd->setHost("https://dpdservicesdemo.dpd.com.pl/DPDPackageXmlServicesService/DPDPackageXmlServices?wsdl");
  7. $dpd->setFolder(__DIR__.'/files');
  8. $dpd->setLogin("test");
  9. $dpd->setPassword("KqvsoFLT2M");
  10. $dpd->setMasterfid(1495);
  11.  
  12. $dpd->setDepartment(1);
  13. $dpd->setConnection();
  14. $dpd->setShipFrom($shipFromDpd);
  15. $dpd->setShipTo($shipToDpd);
  16. $dpd->setPackageDetails($packageDetails);
  17.  
  18. print_r ($dpd->registerNewPackage());
  19.  
  20. var_dump($dpd->getLabelPDF(2, "WAYBILL"));
  21. var_dump($dpd->getProtocol(array('REFERENCE_NUMBER')));
  22.  
  23.  
  24. }catch (Exception $e){
  25. var_dump($e->getMessage());
  26. }


czyli po wywołaniu registerNewPackage() w kolejnych dwóch wywołaniach funkcji w polach zmiast WAYBILL oraz REFERENCE_NUMBER mam wpisać zmienne w funkcji resiterNewPackage ktore zapisane są w tablicy.
czyli zamiast WAYBILL mogę podać "$registerNewPackage[first_waybill]" a zamiast REFERENCE_NUMBER wpisać $registerNewPackage["reference"] ?
Go to the top of the page
+Quote Post
nospor
post 19.12.2016, 15:10:32
Post #4





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




  1. $twojaTablica = $dpd->registerNewPackage();
  2. $dpd->getLabelPDF(2, $twojaTablica['array']['first_waybill'])

Analogicznie reszta. To sa podstawy tablic.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bartekxm
post 19.12.2016, 21:43:43
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 19.12.2016

Ostrzeżenie: (0%)
-----


Dziękuję bardzo! O to chodziło - działa OK smile.gif
Temat można zamknąć.

Pozdrawiam
Bartek
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 08:13