dbojdo / wFirma

wFirma SDK
MIT License
13 stars 15 forks source link

Too few arguments to function Buzz\Client\AbstractClient::__construct() #5

Closed Qrzysio closed 4 years ago

Qrzysio commented 4 years ago

Świetny pomysł i kawał dobrej roboty. Z niewiadomych przyczyn nie działa już jednak na początku.

Czyżby to problem z zalogowaniem?

Kod żywcem wzięty z przykładu. PHP 7.4.x.

use Webit\WFirmaSDK\Auth\BasicAuth;
use Webit\WFirmaSDK\Entity\EntityApiFactory;

require 'vendor/autoload.php';

define('WFIRMA_LOGIN', 'uzytkownik@domena.pl');
define('WFIRMA_PASSWORD', 'hasloDoKontaWFirma');
define('WFIRMA_COMPANY_ID', 'intNumber');

$auth = new BasicAuth(WFIRMA_LOGIN, WFIRMA_PASSWORD, WFIRMA_COMPANY_ID); // dostajemy Webit\WFirmaSDK\Auth\BasicAuth

try {
    $entityApiFactory = new EntityApiFactory(); // dostajemy Webit\WFirmaSDK\Entity\EntityApiFactory
    $entityApi = $entityApiFactory->create($auth); // błąd: Too few arguments to function Buzz\Client\AbstractClient::__construct(), 0 passed in (...)vendor\webit\w-firma-api\src\Entity\Infrastructure\Buzz\BrowserFactory.php on line 34 and at least 1 expected
} catch (ArgumentCountError $e) {
    //var_dump($e);
} catch (\Exception $e) {
    //var_dump($e);
}

W BrowserFactory.php:34 mamy $browser = new Browser($client = new Curl());

dbojdo commented 4 years ago

Najwyraźniej używasz wersji 1.x biblioteki (to problem z nowszą wersją Buzz). W wersji 2.x problem nie występuje, aczkolwiek dobrze, że to wyłapałeś - poprawię. Jednak mocno zalecam używanie wersji 2.x, która wspiera nowsze wersji JMS Serializera i jest gałęzią rozwojową - do wersji 1.x nie będę robił portów nowych funkcji.

Qrzysio commented 4 years ago

To ciekawe, bo idąc za przykładem w README po instalacji composer require webit/w-firma-api ^2.0 mam taki zestaw:

doctrine/annotations          1.10.4  Docblock Annotations Parser
doctrine/instantiator         1.3.1   A small, lightweight utility to instantiate objects in PHP without invoking their constructors
doctrine/lexer                1.2.1   PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.
jms/metadata                  1.7.0   Class/method/property metadata management in PHP
jms/parser-lib                1.0.0   A library for easily creating recursive-descent parsers.
jms/serializer                1.14.1  Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.
kriswallsmith/buzz            1.1.0   Lightweight HTTP client
php-http/httplug              2.2.0   HTTPlug, the HTTP client abstraction for PHP
php-http/promise              1.1.0   Promise used for asynchronous HTTP requests
phpcollection/phpcollection   0.5.0   General-Purpose Collection Library for PHP
phpoption/phpoption           1.7.5   Option Type for PHP
psr/http-client               1.0.1   Common interface for HTTP clients
psr/http-factory              1.0.1   Common interfaces for PSR-7 HTTP message factories
psr/http-message              1.0.1   Common interface for HTTP messages
psr/log                       1.1.3   Common interface for logging libraries
symfony/deprecation-contracts v2.1.3  A generic function and convention to trigger deprecation notices
symfony/options-resolver      v5.1.3  Symfony OptionsResolver Component
symfony/polyfill-mbstring     v1.18.1 Symfony polyfill for the Mbstring extension
symfony/polyfill-php80        v1.18.1 Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions
symfony/var-dumper            v5.1.3  Symfony mechanism for exploring and dumping PHP variables
webit/w-firma-api             2.0.0   wFirma.pl API
dbojdo commented 4 years ago

OK, sorry mojo błąd, wersja 2.1.0 naprawia problem z Buzz oraz Serializerem :-) Zatem composer require webit/w-firma-api ^2.1.0

Qrzysio commented 4 years ago

Jasna sprawa. Sugeruję więc odpuścić podawanie wersji w README, będzie łatwiej to ogarnąć. A dopisek o v1 w przypadku starszego PHP powinien wystarczyć.

Więc wykonuję po prostu composer require webit/w-firma-api i biorę się za testy.

dbojdo commented 4 years ago

Właśnie sprawdziłem, wersja 1.x ma obniżoną wersję Buzz'a, więc działa poprawnie, problem jest jedynie w wersji 2.0.0. README do poprawy. Dzięki.