Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z namespace i USE
Forum PHP.pl > Forum > PHP
busterek
Witajcie,
Nie wiem, czy to nie przedszkole, ale już po prostu jestem głupi.
Mam taki kawałek kodu:

  1. namespace DreamCommerce;
  2.  
  3. use DreamCommerce\ShopAppstoreLib\Client;
  4.  
  5. try
  6. {
  7. $client = \DreamCommerce\ShopAppstoreLib\Client::factory(
  8. Client::ADAPTER_BASIC_AUTH,
  9. 'entrypoint'=>'https://adres',
  10. 'username' => '...',
  11. 'password' => '...'
  12. )
  13. );
  14.  
  15. $resource = new \DreamCommerce\ShopAppstoreLib\Resource\Producer($client);
  16. var_dump($resource->get());
  17. }
  18. catch(DreamCommerce\ShopAppstoreLib\Exception\Exception $ex)
  19. {
  20. die($ex->getMessage());
  21. }
  22.  


Po wywołaniu dostaję komunikat błędu: Fatal error: Class 'DreamCommerce\ShopAppstoreLib\Client' not found in /srv/worek/shoper/DreamCommerce/index.php on line 7.

O co chodzi, i jak to poprawićquestionmark.gif
viking
Skoro dałeś use to po co wszędzie powtarzasz cały namespace? Client::factory.
busterek
I tak nie działa.
nospor
To podaj strukture plikow i katalogow. Skad mamy wiedziec czy stworzyles dobre sciezki itp. O autoloader juz niewspominajac
busterek
Hmmmm. Tak właśnie myślałem, że bez autoloadera się nie obejdzie. Czyli generalnie przedszkole, bo za bardzo nie wiem jak to zgrać ze sobą. Mam katalog DreamCommerce/ShopAppstoreLib i tam są pliki php z klasami do skorzystania z API sklepu Shoper. To teraz pytanie. Czy muszę budować całą aplikację w modelu MVC, żeby móc skorzystać z jednej metody API? Minimalistyczne podejście do problemu.
viking
Nie musisz ale możesz wykorzystać composer tak czy siak i dodać swoje własne klasy do ścieżki ładowania.
busterek
Zainstalowałem composera

Plik: composer.json
  1. {
  2. "autoload": {
  3. "PSR-4": {"DreamCommerce\\:": "DreamCommerce/"}
  4. }
  5. }


Struktura katalogów:
DreamCommerce
--ShopAppstoreLib
----Struktura katalogów i plików
vendor
--composer
--autoload.php
index.php

Plik: index.php
  1. namespace DreamCommerce\ShopAppstoreLib;
  2.  
  3. require __DIR__ .'/vendor/autoload.php';
  4.  
  5. use DreamCommerce\ShopAppstoreLib\Client;
  6. use DreamCommerce\ShopAppstoreLib\Exception\ClientException;
  7. use DreamCommerce\ShopAppstoreLib\Exception\ResourceException;
  8.  
  9. try
  10. {
  11. $client = Client::factory(
  12. Client::ADAPTER_BASIC_AUTH,
  13. 'entrypoint'=>'adres,
  14. 'username' => '..',
  15. 'password' => '...'
  16. )
  17. );
  18.  
  19. $resource = new \DreamCommerce\ShopAppstoreLib\Resource\Producer($client);
  20. var_dump($resource->get());
  21. }
  22. catch(DreamCommerce\ShopAppstoreLib\Exception\Exception $ex)
  23. {
  24. die($ex->getMessage());
  25. }
  26.  


I nadal jest błąd. Co może być nie tak?
viking
Usuń namespace z tego pliku. Odświeżyles composera?
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.