diff --git a/CHANGELOG.md b/CHANGELOG.md index 090170e..608bad9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,8 @@ ## Verze 3.x ### v3.0.0 -* Požadována verze PHP >=7.1 +* Požadována verze PHP >=7.2 +* Změna namespace ``\Skautis`` je nyní ``\Skaut\Skautis`` * Odstranění podpory pro HHVM (HHVM dále [nedodržuje kompabilitu s PHP](https://hhvm.com/blog/2018/09/12/end-of-php-support-future-of-hack.html)) * Scalar typehints pro metody * [Strict types](http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.strict) - zpětně nekompatibilní @@ -17,6 +18,7 @@ * Vlastní cache interface vyměněn za [PSR-16](https://www.php-fig.org/psr/psr-16/). Pro použití s cache různých frameworku existují adaptéry/bridge například [Symfony](https://symfony.com/doc/current/components/cache/psr6_psr16_adapters.html), [Doctrine](https://github.com/Roave/DoctrineSimpleCache), [Zend](https://docs.zendframework.com/zend-cache/psr16/) * ``isMaintenance`` nyní hází výjimku v případě problému se sítí (například DNS fail) místo PHP warningu * ``confirmAuth`` a ``updateLogoutTime`` nyní vrací bool jako indikátor uspěchu + ## Verze 2.x ### v2.0.0 diff --git a/composer.json b/composer.json index dbb206d..e75668a 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "skautis/skautis", + "name": "skaut/skautis", "type": "library", "description": "Library for API calls to SkautIS", "keywords": ["skautis", "api", "soap", "skaut", "wsdl"], @@ -34,12 +34,12 @@ }, "autoload": { "psr-4": { - "Skautis\\": "src/" + "Skaut\\Skautis\\": "src/" } }, "autoload-dev": { "psr-4": { - "Test\\Skautis\\": "tests/Unit/" + "Skaut\\Skautis\\Test\\Unit\\": "tests/Unit/" } }, "suggest": { diff --git a/docs/best_practices.md b/docs/best_practices.md index 8a27f81..cb10629 100644 --- a/docs/best_practices.md +++ b/docs/best_practices.md @@ -30,15 +30,15 @@ Vhodné řešení by mohlo být namespacovat url ktera pracuji se skautisem my-w ## Používání komponent Knihovna se skladá z mnoha tříd. Mnoho z nich je považováno za interní a po konfiguraci knihvony na ně není dobré sahat. -Spolehlivé a dopředně kompatibilní je používat ``Skautis\Skautis``, ``Skautis\Config``, ``Skautis\User`` a ``Skautis\Wsdl\WebServiceInterface``. +Spolehlivé a dopředně kompatibilní je používat ``Skaut\Skautis\Skautis``, ``Skaut\Skautis\Config``, ``Skaut\Skautis\User`` a ``Skaut\Skautis\Wsdl\WebServiceInterface``. ## Chytání výjimek -Knihovna používá pro všechny výjimky interface ``Skautis\Exception``. +Knihovna používá pro všechny výjimky interface ``Skaut\Skautis\Exception``. ```PHP try { //nejaka práce se skautisem } -catch (Skautis\Exception $e) { +catch (Skaut\Skautis\Exception $e) { //Problem se skautisem. } catch (Exception $e) { diff --git a/docs/internals/cache_decorator.md b/docs/internals/cache_decorator.md index c66ce81..272f7e0 100644 --- a/docs/internals/cache_decorator.md +++ b/docs/internals/cache_decorator.md @@ -7,6 +7,7 @@ Pro cachování lze použít jakoukoliv cache implementující interface z [PSR- ## Příklad ```PHP // Získame webovou službu ze Skautisu +/** @var Skaut\Skautis\Skautis $skautis */ $webService = $skautis->User; // Cache do které se má ukládat výsledek API callu @@ -18,7 +19,7 @@ $timeToLiveInSeconds = 10*60; // Vytvoříme cachovanou web service -$cachedWebService = new CacheDecorator($webService, $cache, $timeToLiveInSeconds); +$cachedWebService = new \Skaut\Skautis\Wsdl\Decorator\Cache\CacheDecorator($webService, $cache, $timeToLiveInSeconds); // Nyní můžeme použít cachovanou web service stejně jako obyčejnou web service diff --git a/docs/internals/session_adapter.md b/docs/internals/session_adapter.md index 22a9f01..7effa39 100644 --- a/docs/internals/session_adapter.md +++ b/docs/internals/session_adapter.md @@ -8,7 +8,7 @@ Předpákládejme že potřebujeme pracovat s Nette session. ## Implementace ```PHP -class NetteSessionAdapter implements AdapterInterface +class NetteSessionAdapter implements \Skaut\Skautis\SessionAdapter\AdapterInterface { //Nette session objekt protected $sessionSection; @@ -20,13 +20,13 @@ class NetteSessionAdapter implements AdapterInterface } //Funkce pro nastavení dat do session - public function set($name, $object) + public function set($name, $object): void { $this->sessionSection->$name = $object; } //Funkce pro ověření existence dat v session - public function has($name) + public function has($name): bool { return isset($this->sessionSection->$name); } diff --git a/docs/internals/web_service.md b/docs/internals/web_service.md index a14b6af..9d23fdf 100644 --- a/docs/internals/web_service.md +++ b/docs/internals/web_service.md @@ -6,7 +6,7 @@ Decorator funguje tak že dostane objekt který dekoruje a on sám implementuje ## Implementace ```PHP -class LoggerDecorator extends Skautis\Wsdl\Decorator\AbstractDecorator +class LoggerDecorator extends \Skaut\Skautis\Wsdl\Decorator\AbstractDecorator { protected $logger; diff --git a/docs/internals/web_service_factory.md b/docs/internals/web_service_factory.md index 2388ad1..df8fe66 100644 --- a/docs/internals/web_service_factory.md +++ b/docs/internals/web_service_factory.md @@ -5,7 +5,7 @@ Předpokládejme že chceme logovat všechny request na Skautis a máme připrav ## Implementace ```PHP -class LoggingWebServiceFactory implements WebServiceFactoryInterface +class LoggingWebServiceFactory implements \Skaut\Skautis\Wsdl\WebServiceFactoryInterface { //Logger pro logovani vsech requestu na SkautIS protected $logger; @@ -18,7 +18,7 @@ class LoggingWebServiceFactory implements WebServiceFactoryInterface public function createWebService($url, array $options) { - $webService = new WebService($url, $options); + $webService = new \Skaut\Skautis\Wsdl\WebService($url, $options); $webService = new LoggerDecorator($webService, $this->logger); return $webService; } diff --git a/docs/konfigurace.md b/docs/konfigurace.md index 941c5a1..6b905a7 100644 --- a/docs/konfigurace.md +++ b/docs/konfigurace.md @@ -8,7 +8,7 @@ Protože SkautIS obsahuje důležitá a citlivá data, není vhodné používat ## Instanciovani knihovny -Centrální část knihovny je třída ``Skautis\Skautis``. Tu je potřeba správně nakonfigurovat. +Centrální část knihovny je třída ``Skaut\Skautis\Skautis``. Tu je potřeba správně nakonfigurovat. ### Rychlé pomocí singleton patternu Toto řešení funguje *out of the box* s minimálním nastavením. Je vhodné pro aplikace nevyužívající framework. @@ -20,7 +20,7 @@ $applicationId = "moje-application-id"; $isTestMode = true; // -$skautis = Skautis\Skautis::getInstance($applicationId, $isTestMode); +$skautis = Skaut\Skautis\Skautis::getInstance($applicationId, $isTestMode); ``` ### Ruční vytvoření @@ -29,6 +29,8 @@ Tento způsob je poněkud zdlouhavý, ale dává možnost maximální flexibilit #### Konfigurace Veškerá konfigurace je udržována v jediném objektu, který je potřeba vytvořit a nastavit. ```PHP +use Skaut\Skautis\Config; + //ID aplikace ziskane při registraci $applicationId = "moje-application-id"; @@ -39,40 +41,40 @@ $isTestMode = Config::TEST_MODE_ENABLED; $cache = Config::CACHE_ENABLED; //Povol kompresi pro data přenášená ze SkautISu -$compression = Config::COMPRESSION_ENABLED; +$compression = Skaut\Skautis\Config::COMPRESSION_ENABLED; -$config = new Skautis\Config($applicationId, $isTestMode, $cache, $compression); +$config = new Config($applicationId, $isTestMode, $cache, $compression); ``` #### Session Knihovna uchovává nějaké informace mezi requesty. K maximální kompatibilitě mezi různými frameworky knihovna používá [adapter pattern](https://github.com/domnikl/DesignPatternsPHP/tree/master/Structural/Adapter). Adapter pro ``$_SESSION`` je k dispozici v knihovne. ```PHP //Adapter pro $_SESSION -$sessionAdapter = new Skautis\SessionAdapter\SessionAdapter(); +$sessionAdapter = new Skaut\Skautis\SessionAdapter\SessionAdapter(); ``` #### WebServiceFactory Tato komponenta se stará o správné vytváření objektů pro webové služby. Jedná se o [abstract factory pattern](https://github.com/domnikl/DesignPatternsPHP/tree/master/Creational/AbstractFactory) který je vhodný když je potřeba pro aplikaci nějakým způsobem upravit vytváření objektů webových služeb. Například přidat logování všech požadavků na SkautIS. ```PHP -$webServiceFactory = new Skautis\Wsdl\WebServiceFactory(); +$webServiceFactory = new Skaut\Skautis\Wsdl\WebServiceFactory(); ``` #### WsdlManager Tato třída se stará o vše okolo požadavků na server. ```PHP -$wsdlManager = new Skautis\Wsdl\WsdlManager($webServiceFactory, $config); +$wsdlManager = new Skaut\Skautis\Wsdl\WsdlManager($webServiceFactory, $config); ``` #### User Na skautis může být přihlášen právě jeden uživatel. Informace o tomto uživateli jsou mezi requesty uloženy v session. ```PHP -$user = new Skautis\User($wsdlManager, $sessionAdapter); +$user = new Skaut\Skautis\User($wsdlManager, $sessionAdapter); ``` #### Skautis Všechno dohromady lepí třída ``Skautis``. To je také objekt se kterým budete pracovat. ```PHP -$skautis = new Skautis\Skautis($wsdlManager, $user); +$skautis = new Skaut\Skautis\Skautis($wsdlManager, $user); ``` diff --git a/docs/pouziti.md b/docs/pouziti.md index bfb69a3..2a792c3 100644 --- a/docs/pouziti.md +++ b/docs/pouziti.md @@ -3,7 +3,8 @@ Když je uživatel přihlášen, je vše připraveno k posílání dotazů na se ## Jak vypadá dotaz na server? ### Objekt webové služby -Jednotlivé služby mají vlastní objekt splňující ``Skautis\Wsdl\WebServiceInterface``. Tento objekt je potřeba získat z objektu knihovny. Tento objekt se dá používat nadále samostatně v aplikaci. +Jednotlivé služby mají vlastní objekt splňující ``Skaut\Skautis\Wsdl\WebServiceInterface``. +Tento objekt je potřeba získat z objektu knihovny. Tento objekt se dá používat nadále samostatně v aplikaci. Vyzkoušet si jak vypadají požadavky a odpovědi lze online na [ws.skautis.cz/testovani](https://ws.skautis.cz/testovani/). ```PHP //$skautis je nakonfigurovaná knihovna s přihlášeným uživatelem @@ -11,10 +12,13 @@ Vyzkoušet si jak vypadají požadavky a odpovědi lze online na [ws.skautis.cz/ //V seznamu služeb si najdu jmeno služby kterou chci použít a získám její objekt //$sluzba = $skautis->nazev_webove_sluzby; //Pro práci s jednotkami ve skautisu existuje služba OrganizationUnit -$organizationUnit = $skautis->OrganizationUnit; // Skautis\Wsd\WebServiceInterface +/** @var Skaut\Skautis\Skautis $skautis */ +/** @var Skaut\Skautis\Wsdl\WebServiceInterface $organizationUnit */ +$organizationUnit = $skautis->OrganizationUnit; // Trochu delší ale více typovaný způsob - Při tomto použití se vám nestane překlep v názvu služby a má autocompletion -$organizationUnit = $skautis->getWebService(WebServiceName::ORGANIZATION_UNIT); // Skautis\Wsd\WebServiceInterface +/** @var Skaut\Skautis\Wsdl\WebServiceInterface $organizationUnit */ +$organizationUnit = $skautis->getWebService(Skaut\Skautis\Wsdl\WebServiceName::ORGANIZATION_UNIT); //Na webove sluzbe se provádějí akce. Tyto akce zpravidla mají nějaké parametry které se zadávají pomocí asociativního pole //$params = ["nazev_atributu" => "hodnota_atributu"] @@ -34,7 +38,8 @@ $data = $organizationUnit->call('unitAll', $params); ### Obalovací tag Některé webové služby jako [PersonUpdate v OrganizationUnit](https://is.skaut.cz/JunakWebservice/OrganizationUnit.asmx?op=PersonUpdate) obsahují navíc tag, například , který je potřeba zadat jako druhý parametr. Jeho absence se projeví chybovou hláškou "Nebyl zadán vstupní parametr person". ```PHP -$organizationUnit->personUpdate(array(...), "person"); +/** @var Skaut\Skautis\Wsdl\WebServiceInterface $organizationUnit */ +$organizationUnit->personUpdate([...], 'person'); ``` @@ -56,6 +61,7 @@ Tyto tři příkazy jsou naprosto ekvivalentní. //1940 je ID uzivatele okres blansko //Naprosto stejné požadavky +/** @var Skaut\Skautis\Skautis $skautis */ $data = $skautis->UserManagement->UserDetail(array("ID"=>1940)); $data = $skautis->user->UserDetail(array("ID"=>1940)); $data = $skautis->usr->UserDetail(array("ID"=>1940)); diff --git a/docs/prihlaseni.md b/docs/prihlaseni.md index f0ac07a..8e6c0f5 100644 --- a/docs/prihlaseni.md +++ b/docs/prihlaseni.md @@ -8,6 +8,7 @@ Knihovna umožňuje vygenerovat odkaz, který přivede uživatele na stránky sk $backLink = "https://moje-skautska-aplikace.skaut.cz/skautis-login-confirm"; //Vygenerování odkazu +/** @var Skaut\Skautis\Skautis $skautis */ $loginUrl = $skautis->getLoginUrl($backLink); //Odkaz je klasická URL která se použít v jakémkoliv templatovacím jazyce nebo rovnou vypsat @@ -18,6 +19,7 @@ echo ' Prihlasit se'; SkautIS uživatele po úspěšném přihlášení přesměruje na adresu nastavenou v předchozím kroce a pošle nám údaje přes `$_POST`. Tyto údaje je potřeba předat knihovně aby mohla komunikovat se skautisem. ```PHP //Na url https://moje-skautska-aplikace.skaut.cz/skautis-login-confirm +/** @var Skaut\Skautis\Skautis $skautis */ $skautis->setLoginData($_POST); ``` diff --git a/phpstan.neon b/phpstan.neon index 8c876c2..dd19b3f 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -6,5 +6,5 @@ parameters: - count: 1 path: src/User.php - message: '#^Call to an undefined method Skautis\\Wsdl\\WebServiceInterface::LoginUpdateRefresh\(\)\.$#' + message: '#^Call to an undefined method Skaut\\Skautis\\Wsdl\\WebServiceInterface::LoginUpdateRefresh\(\)\.$#' # there is __call method, also this method is mocked in tests diff --git a/src/Config.php b/src/Config.php index 84eb9a6..fbbfa8c 100644 --- a/src/Config.php +++ b/src/Config.php @@ -1,7 +1,7 @@ diff --git a/src/HelperTrait.php b/src/HelperTrait.php index f0b9578..a5a164b 100644 --- a/src/HelperTrait.php +++ b/src/HelperTrait.php @@ -1,11 +1,11 @@ diff --git a/src/SessionAdapter/AdapterInterface.php b/src/SessionAdapter/AdapterInterface.php index 4ece889..92103d5 100644 --- a/src/SessionAdapter/AdapterInterface.php +++ b/src/SessionAdapter/AdapterInterface.php @@ -1,7 +1,7 @@ diff --git a/src/User.php b/src/User.php index 2c98b73..a1b9fec 100644 --- a/src/User.php +++ b/src/User.php @@ -1,12 +1,12 @@ diff --git a/src/Wsdl/AuthenticationException.php b/src/Wsdl/AuthenticationException.php index fdcc03d..9785b1f 100644 --- a/src/Wsdl/AuthenticationException.php +++ b/src/Wsdl/AuthenticationException.php @@ -1,7 +1,7 @@ diff --git a/src/Wsdl/WebServiceAlias.php b/src/Wsdl/WebServiceAlias.php index 5e3b585..cf86575 100644 --- a/src/Wsdl/WebServiceAlias.php +++ b/src/Wsdl/WebServiceAlias.php @@ -3,7 +3,7 @@ declare(strict_types=1); -namespace Skautis\Wsdl; +namespace Skaut\Skautis\Wsdl; class WebServiceAlias diff --git a/src/Wsdl/WebServiceAliasNotFoundException.php b/src/Wsdl/WebServiceAliasNotFoundException.php index f17a98e..0a96825 100644 --- a/src/Wsdl/WebServiceAliasNotFoundException.php +++ b/src/Wsdl/WebServiceAliasNotFoundException.php @@ -3,10 +3,10 @@ declare(strict_types=1); -namespace Skautis\Wsdl; +namespace Skaut\Skautis\Wsdl; -use Skautis\Exception; +use Skaut\Skautis\Exception; use Throwable; class WebServiceAliasNotFoundException diff --git a/src/Wsdl/WebServiceFactory.php b/src/Wsdl/WebServiceFactory.php index 752c2b4..64d46e0 100644 --- a/src/Wsdl/WebServiceFactory.php +++ b/src/Wsdl/WebServiceFactory.php @@ -1,9 +1,9 @@