Dynamic property deprecated in PHP 8.2 oplossen
De melding DeprecatedEen deprecation is een waarschuwing dat een onderdeel van PHP binnenkort verdwijnt, zodat de code van je website op tijd kan worden aangepast.: Creation of dynamic property verschijnt na een overstap naar PHPPHP is de programmeertaal waarmee veel websites, zoals WordPress-sites, hun pagina's maken op het moment dat een bezoeker erom vraagt. 8.2 of hoger.
Welke PHP-versie meldt jouw site?
Passieve check van headers, versie en de kop van de homepage. Geen login, geen scan.
Meer uitleg
Je website kan nog werken, maar een onderdeel gebruikt een manier van programmeren die PHP afraadt.
De classnaam en de naam van de eigenschap vertellen waar je moet beginnen.
Voor je begint
Bewaar de volledige foutmelding en het tijdstip in een privénotitie. Noteer welke pagina of handeling de fout oproept en wat er vlak daarvoor veranderde. Een screenshot van alleen een lege pagina is minder bruikbaar dan de eerste foutregel uit het log.
Deel geen wachtwoorden, klantgegevens of volledige serverpaden in een openbaar forum.
Maak een back-upEen back-up is een kopie van je hele website, apart bewaard, zodat je hem kunt terugzetten als er iets misgaat. van bestanden en database voordat je iets wijzigt. Controleer ook hoe je die terugzet. Werk bij voorkeur op een afgeschermde testkopie met dezelfde PHP-versieEen PHP-versie is het nummer van de uitgave van PHP waarop jouw website draait, zoals 8.3..
Schakel daar echte betalingen en uitgaande klantmails uit. Verander één onderdeel per proef en schrijf op wat je hebt aangepast, zodat een mislukte poging eenvoudig terug te draaien is.
Wat een dynamic property is
Een class beschrijft een soort object, bijvoorbeeld een bestelling. Een property is een eigenschap van dat object. Bij een dynamische eigenschap voegt de code die eigenschap toe zonder dat deze vooraf in de class is aangegeven.
PHP 8.2 markeert dit gebruik als deprecated. Dat is een concrete compatibiliteitsmelding, geen bewijs dat je hele website moet worden vervangen.
De officiële migratiehandleiding noemt het vooraf declareren van de eigenschap als voorkeursoplossing. Er bestaan uitzonderingen, zoals stdClass en bepaald gebruik van magic methods. Een ontwikkelaar moet dus naar de betrokken class kijken.
Blind dezelfde aanpassing in alle bestanden doen is geen passend herstel.
Oplossen in vijf stappen
- Bewaar de volledige melding met classnaam, eigenschap en bestand. Kijk of dezelfde combinatie steeds terugkomt of dat verschillende onderdelen meldingen geven. Groepeer identieke regels, zodat je ontwikkelaar geen honderden kopieën hoeft door te lezen.
- Zoek de eigenaar van de class op. Een pad onder een pluginmap wijst je naar de leverancier, maar een meegeleverde bibliotheek kan de echte bron zijn. Noteer zowel de pluginversie als de gebruikte PHP-versie. Vraag gericht of de leverancier deze melding al heeft opgelost.
- Test de beschikbare update op een kopie. Voer juist de handeling uit die het object aanmaakt, zoals een bestelling openen of een instellingenpagina opslaan. Alleen de voorpagina bezoeken kan de betrokken code helemaal overslaan.
- Laat bij maatwerk beoordelen welke eigenschappen de class nodig heeft. Een ontwikkelaar kan de eigenschap expliciet declareren en controleren welke waarde daarbij hoort. Het attribuut AllowDynamicProperties is een mogelijke bewuste keuze, geen algemene reparatie die je zonder onderzoek overal toevoegt.
- Controleer de functie én het log na de wijziging. Een order moet bijvoorbeeld nog de juiste velden bewaren. Leg vast welke aanpassing voorkomt dat de melding terugkeert bij een volgende pluginupdate. Een losse wijziging in leverancierscode kan anders verloren gaan.
Verbergen is niet repareren
Foutmeldingen horen niet op een openbare productiepagina. Laat ze privé loggen tijdens onderzoek. Daarmee voorkom je zichtbare technische tekst, maar je hebt het gebruik van de dynamische eigenschap nog niet aangepast.
Spreek dus afzonderlijk af wie de weergave beheert en wie de code repareert.
Wanneer je dit beter laat doen
Vraag hulp via het hulpformulier hieronder als de class bij eigen code hoort, als de leverancier geen update levert of als je niet kunt vaststellen welke handeling de melding oproept. Geef een geschoonde voorbeeldmelding mee. Laat de ontwikkelaar een test beschrijven waarin de eigenschap zowel wordt ingevuld als opnieuw uitgelezen.
Zo toets je meer dan alleen het verdwijnen van de waarschuwing.
Controle na herstel
Herhaal eerst precies de handeling die misging. Controleer daarna inloggen, een formulier versturen en de belangrijkste route van jouw website. Gebruik voor een winkel een testbestelling zonder echte afschrijving.
Bekijk het log op nieuwe meldingen met een recent tijdstip. Alleen een werkende homepage bewijst nog niet dat het hele probleem weg is.
Bewaar de gebruikte versies, de uitgevoerde wijziging en het resultaat bij je onderhoudsnotities. Spreek af wie de eerstvolgende update controleert. Stop als dezelfde fout terugkomt terwijl de veronderstelde oorzaak al is opgelost.
Dat is een reden om de diagnose opnieuw te bekijken, geen reden om steeds meer instellingen tegelijk te veranderen.