Skip to content

Commit

Permalink
Merge pull request #89 from JindrichPilar/namespace-change
Browse files Browse the repository at this point in the history
Namespace change (closes #58)
  • Loading branch information
JindrichPilar authored Jan 30, 2020
2 parents 52ff30c + a1eb127 commit 48a2e95
Show file tree
Hide file tree
Showing 53 changed files with 154 additions and 142 deletions.
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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í
Expand All @@ -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
Expand Down
6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
@@ -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"],
Expand Down Expand Up @@ -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": {
Expand Down
6 changes: 3 additions & 3 deletions docs/best_practices.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
3 changes: 2 additions & 1 deletion docs/internals/cache_decorator.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down
6 changes: 3 additions & 3 deletions docs/internals/session_adapter.md
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion docs/internals/web_service.md
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
4 changes: 2 additions & 2 deletions docs/internals/web_service_factory.md
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
}
Expand Down
20 changes: 11 additions & 9 deletions docs/konfigurace.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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í
Expand All @@ -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";

Expand All @@ -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);
```


Expand Down
14 changes: 10 additions & 4 deletions docs/pouziti.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,22 @@ 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

//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"]
Expand All @@ -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 <person>, 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');
```


Expand All @@ -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));
Expand Down
2 changes: 2 additions & 0 deletions docs/prihlaseni.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -18,6 +19,7 @@ echo '<a href="' . $loginUrl . '"> Prihlasit se</a>';
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);
```

Expand Down
2 changes: 1 addition & 1 deletion phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion src/Config.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
declare(strict_types = 1);

namespace Skautis;
namespace Skaut\Skautis;

/**
* Třída pro uživatelské nastavení
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicPropertiesDisabledException.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
declare(strict_types=1);

namespace Skautis;
namespace Skaut\Skautis;

class DynamicPropertiesDisabledException
extends
Expand Down
2 changes: 1 addition & 1 deletion src/EventDispatcher/EventDispatcherInterface.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
declare(strict_types = 1);

namespace Skautis\EventDispatcher;
namespace Skaut\Skautis\EventDispatcher;

interface EventDispatcherInterface
{
Expand Down
2 changes: 1 addition & 1 deletion src/EventDispatcher/EventDispatcherTrait.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
declare(strict_types = 1);

namespace Skautis\EventDispatcher;
namespace Skaut\Skautis\EventDispatcher;

trait EventDispatcherTrait
{
Expand Down
2 changes: 1 addition & 1 deletion src/Exception.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
declare(strict_types = 1);

namespace Skautis;
namespace Skaut\Skautis;

/**
* @author Petr Morávek <[email protected]>
Expand Down
8 changes: 4 additions & 4 deletions src/HelperTrait.php
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php
declare(strict_types = 1);

namespace Skautis;
namespace Skaut\Skautis;

use Skautis\Wsdl\WsdlManager;
use Skautis\Wsdl\WebServiceFactory;
use Skautis\SessionAdapter\SessionAdapter;
use Skaut\Skautis\SessionAdapter\SessionAdapter;
use Skaut\Skautis\Wsdl\WebServiceFactory;
use Skaut\Skautis\Wsdl\WsdlManager;

trait HelperTrait
{
Expand Down
2 changes: 1 addition & 1 deletion src/Helpers.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
declare(strict_types = 1);

namespace Skautis;
namespace Skaut\Skautis;

use DateTime;
use DateTimeZone;
Expand Down
2 changes: 1 addition & 1 deletion src/InvalidArgumentException.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
declare(strict_types = 1);

namespace Skautis;
namespace Skaut\Skautis;

/**
* @author Hána František <[email protected]>
Expand Down
2 changes: 1 addition & 1 deletion src/SessionAdapter/AdapterInterface.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
declare(strict_types = 1);

namespace Skautis\SessionAdapter;
namespace Skaut\Skautis\SessionAdapter;

/**
* Interface umoznujici vytvoreni adapteru pro ruzne implementace Session
Expand Down
2 changes: 1 addition & 1 deletion src/SessionAdapter/FakeAdapter.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
declare(strict_types = 1);

namespace Skautis\SessionAdapter;
namespace Skaut\Skautis\SessionAdapter;

/**
* Nepersestinenti adapter - vhodne jako stub pro testy nebo kdyz neni potreba ukladat
Expand Down
2 changes: 1 addition & 1 deletion src/SessionAdapter/SessionAdapter.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
declare(strict_types = 1);

namespace Skautis\SessionAdapter;
namespace Skaut\Skautis\SessionAdapter;

/**
* Adapter pro pouziti $_SESSION ve SkautISu
Expand Down
Loading

0 comments on commit 48a2e95

Please sign in to comment.