PHP 8 incompatible changes

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ad Fundum

Ad Fundum

28/02/2022 10:46:39
Quote Anchor link
Eind dit jaar is het weer zover, dan werkt mijn PHP 7.4 code niet meer veilig. Een van de nieuwigheden is dat het gedrag van nummer/string-vergelijkingen is veranderd.
Het grote manco van mijn PHP code is dat ik tests nog nooit eerder heb geautomatiseerd, omdat ik alles kon overzien. TDD is een langere termijnndoel voor mij.

Aangezien de meesten hier mij zijn voorgegaan met PHP 8, vroeg ik mij af welke concrete problemen te verwachten zijn bij het porten van PHP 7.4 code naar PHP 8.0, en hoeveel tijd het zou kosten?
Gewijzigd op 28/02/2022 10:50:06 door Ad Fundum
 
PHP hulp

PHP hulp

01/03/2024 04:13:57
 
Ward van der Put
Moderator

Ward van der Put

28/02/2022 16:53:06
Quote Anchor link
Dit type update is bijna ideaal om te beginnen met TDD. Je kunt TDD namelijk ook prima gebruiken om bestaande code te debuggen en dat spreekt ervaren developers vaak meer aan een striktere vorm TDD die consequent alles met een test begint.

Zet gewoon de schakelaar om naar PHP 8.1.x, reproduceer elke bug die je vervolgens aantreft in een unittest en fiks de bug. Aanvankelijk vertraagt dat je tempo, maar naarmate je meer op je unittests kunt vertrouwen, ga je steeds sneller.
 
Rob Doemaarwat

Rob Doemaarwat

01/03/2022 18:22:53
Quote Anchor link
Met de overgang 7.4 -> 8.0 ben ik bijna nergens tegen aan gelopen, behalve:
- slordigheden van mezelf, waar ik nu middels een warning wel op gewezen werd
- stokoude, niet meer onderhoude library die een hele oude constructie gebruikte
- en natuurlijk vooraf even een composer z'n ding laten doen.

7.4 was een grotere "operatie" omdat ik objectnamen had gebruikt die toen opeens "reserved words" waren.
 
- Ariën  -
Beheerder

- Ariën -

01/03/2022 18:24:45
Quote Anchor link
Rob Doemaarwat op 01/03/2022 18:22:53:
7.4 was een grotere "operatie" omdat ik objectnamen had gebruikt die toen opeens "reserved words" waren.


Maar dan gebruik je ook namespaces.
 
Rob Doemaarwat

Rob Doemaarwat

01/03/2022 20:47:10
Quote Anchor link
Met of zonder namespaces: "Object" mocht niet meer als class naam (mijn basis object heette zo). En in een paar projecten zaten ook "Objecten" ("dingen" - heel breed, die geadverteerd/verkocht konden worden). Dat zijn nu dus allemaal "Things" geworden :-)
 
Ad Fundum

Ad Fundum

02/03/2022 13:40:06
Quote Anchor link
Mijn basisobject heet nog steeds cObject, net zoals dat ik overal en voor alle variabelen de hongaarse notatie gebruik. Voor een taal als PHP is dat handig, omdat je dan de intentie weet of een variabele een integer of een string zou moeten zijn. Nu kan ik in de IDE een search doen in alle bestanden op booleaanse operatoren, en snel zien of ik ergens naar moet kijken.

Ik hoop voor november dit jaar over te zijn naar Rust, zodat ik niet PHP 8 hoef mee te maken. Dat is ook wel een reden om te willen weten waar ik rekening mee moet houden. TDD is voor mij ook een must voor Rust later dit jaar.

Misschien laat ik nog wat onderdelen van mijn programma in PHP, Rust kan goed samenwerken met PHP.
Gewijzigd op 02/03/2022 13:41:46 door Ad Fundum
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.