pionl / smart-emailing-v3

Wrapper for SmartEmailing API v3 version in PHP
MIT License
13 stars 14 forks source link

Suggested improvements #24

Closed MartinMystikJonas closed 1 year ago

MartinMystikJonas commented 1 year ago

I want to use this library for our SmartEmailing integration but I stumbled upon few issues. I can create PRs for them I just wanted to know if this package is still maintained and if suggested PRs yould be welcomed.

My suggestions:

pionl commented 1 year ago

Hi @MartinMystikJonas i personally do not use this package anymore, but PRs are welcomed (and sometimes their are coming ❤️)

As discussed in #23, PHP 8 would probably should be minimum. Is it ok for you?

I agree with everything you have mentioned :)

If possible this stack would be awesome:

Of course you are free to use what you advice / use. Don't want to push something on you :)

Thank you! Msg me if you need anything from me.

MartinMystikJonas commented 1 year ago

I would need it on one legacy project with PHP 7.4 until I would have time to upgrade it to PHP 8. So for now I would keep PHP 7.4 compatibility.

MartinMystikJonas commented 1 year ago

I prepared two PRs 1) #25 For PHP8 compatibility 2) #26 Draft of developer tools. I need to check if GitHUb workflow works - can you enable it an trigger for this PR?

I also have locally fixeds of PHPStan errors, coding standard and autoamtic rector upgrade but I need to check it all first because Rector did some weird changes.

MartinMystikJonas commented 1 year ago

Jak teď ještě procházím kód tak se zdá, že neřídí nějakou konvenci v pojmenování/umístění Model, Request, Response, Endpoint.

Asi by bylo dobré to sjednotit, ale bude to BC break.

Osobně bych asi sjednotil takhle:

Otázka je kam s modelovými třídami a holdery. Teď jsou někdy ve složce Foo, někdy v podsložce Model a některé jsou dohromady ve složce \Request\Send. Osobně bych je vzhledem k tomu, že dost modelů budou sdílet různé endpointy to dal všechno do top namespace \Model.

pionl commented 1 year ago

Souhlasím, takto se to bude dobře hledat, skvělý postřeh :)

Jenom bych dal místo složky Request -> Requests, protože to bude obsahovat N-počet requestů.

MartinMystikJonas commented 1 year ago

No pokud už bysme přejmenovávali i tenhle namespace asi bych zvolil buď Api nebo Endopints

pionl commented 1 year ago

Dal bych endpoints a když už toho budeme takto šahat tak bych šel touto cestou :)

MartinMystikJonas commented 1 year ago

Jeste kdyz to ted predelavam tak sem narazil na to ze se pouzivaji 3 ruzne pristipy k metodam v Api/endpointech coz je trochu matouci.

1) ->something() rovnou posila request 2) ->something() vraci Request ktery jde upravit a pak se musi poslat pres ->send() 3) ->something() rovnou posila a ->somethingRequest() vraci Request

Byl bych pro to to sjednotit i za cenu BC breaks a to bud na verzi 3 a nebo to otocit vyjiz z verze 2 a mit

4) ->something() co vraci Request jako ve verzi 2 a pridat vzdycky jeste ->sendSomething() jako shortcut co to rovnou posle.

Kterou verzi bys preferoval?

pionl commented 1 year ago

Osobně v nových "API" SDKs to dělám tak, že mám funkce users()->create() -> vrací response.

Takže bych spíš se zamyslel, potřebujeme pracovat s request objektem?

Namátkově jsem vybral třídu co jsem dělal já a tam mám variantu 1.

Takže já spíš tíhnu 1. Co ty?

MartinMystikJonas commented 1 year ago

U slozitejsich requestu byva rada metod co upravuji/doplnuji obsah requestu pred odeslanim. Takze muzeme dat verzi 3 kde je ta moznost naplnit/upravit request pokud je potreba ale vychozi bude rovnou poslani

MartinMystikJonas commented 1 year ago

S tim ze u reqiest ktere bez naplneni nemaji smysl (treba import) by byla jen verze importRequest() a u requestu kde neni sance parametrizovat (treba ping) by byla jen verze ping() co rovnou odesila.

pionl commented 1 year ago

Ok :)

MartinMystikJonas commented 1 year ago

Ok překopu to tak. A ještě jenda otázka nemám rovnou sjednotit i názvy metod? Někde se pro načtení seznamu položek používá lists nekde search. Někde se pro načtení konkrétní položky používá get někde exists apod

pionl commented 1 year ago

Pokud na to máš chut a prostor tak bych to rovnou udělal! :)

MartinMystikJonas commented 1 year ago

Navrhoval bych to u endpointů, které umožňují CRUD takhle:

pionl commented 1 year ago

To vypadá dobře :) Souhlas

MartinMystikJonas commented 1 year ago

Ready v #28 zkus to pls zkouknout jestli je to ok. Pokud to bude ok jen doplním readme a může se to mergnout. Pak se vrhnu na ty endpointy co mi aktuálně chybí

pionl commented 1 year ago

Ahoj, díky mrknu na to

MartinMystikJonas commented 1 year ago

Začal sme s tím doplňováním typů a už to mám skoro hotové. Jen jsme teď anrazil na jednu další nekonzistenci. Modelové třídy někdy používají public properties, někdy public+settery a někde private+gettery+settery. To by asi taky bylo fajn sjednotit, ale bude to další BC break.

IMHO bych asi volil řešení s gettery+settery.

Případně bysme mohli v modelu implemenotvat i get set magic metody a předávat to na gettery+settery + doplnit @property anotace. Ale to je IMHO zbytečné.

pionl commented 1 year ago

IMHO bych asi volil řešení s gettery+settery.

Souhlas, jsem spíš více pro staticky safe než annotace :)