✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Att undvika class_exists i objektorienterad WordPress-kod

3

Om du skriver objektorienterad kod för WordPress (vanligtvis inom ramen för plugins) kommer du sannolikt att stöta på en class_exists-kontroll innan du initierar en klass. Men vi bör börja undvika class_exists i mycket av vår kod vid det här laget (med några få undantag som jag kommer att beskriva nedan).

Beroende på vilken version av PHP du använder är detta vettigt. Eller det gjorde det en gång. Från och med PHP 5.3.0 är detta inte nödvändigt. Istället är det bättre att använda namnutrymmen.

Att undvika klass_finns

Du kan se alla krav för olika versioner av WordPress på den här sidan, så om du arbetar med äldre versioner av WordPress kan hela class_exists-kontrollen vara värt det.

Ändå finns det en viktig anmärkning :

Obs: Om du befinner dig i en äldre miljö där du bara har äldre PHP- eller MySQL-versioner, fungerar WordPress även med PHP 5.2.4+ och MySQL 5.0+, men dessa versioner har nått officiellt End Of Life och kan därför utsätta din webbplats för säkerhetssårbarheter.

Men för de flesta av oss stöder moderna värdmiljöer åtminstone PHP 5.3.0, om inte högre, och på grund av det behöver vi inte använda class_exists.

Som sagt, det är inte ovanligt att se något sånt här :

Eller så här :

För flera år sedan skulle jag också skriva sådan här kod. Ibland var det gränssnitt med en redan existerande kodbas. Andra gånger berodde det på att jag inte visste bättre. Grejen är att detta har blivit något som vi ser i WordPress-baserad kod när vi inte behöver använda det.

Jag skulle faktiskt hävda att vi inte borde använda det längre.

Men ju mer kod du skriver och ju mer kod du läser, desto mer lär du dig, eller hur? Det är en del av hela anledningen till namnutrymmen och autoloading.

Så hur skulle koden ovan skrivas?

Kanske så här :

Ändå väcker detta frågan för vissa: Hur hjälper namnutrymmen istället för att använda class_exists?

Helst, om samma klass finns inom ett namnområde, så finns det ett problem med namnområdet. Kom ihåg att du kan tänka dig ett namnutrymme som ett paket som består av unika delar. Och eftersom de är unika borde det aldrig finnas en annan pjäs eller, i den här klassen, en annan klass precis som den.

För detta ändamål, istället för att använda klass_exists-kontroller, sikta på att använda namnutrymmen. Naturligtvis säger jag inte gå tillbaka och refaktorera all din kod – jag har inte gjort det – men det betyder inte att koden jag skriver eller granskar inkluderar användningen av eller rekommendationer för.

Det är en enkel förändring som kan räcka långt när det gäller att hålla koden lättare att läsa, fylld med färre villkor (ett inlägg för en annan gång) och att hålla den mycket mer organiserad.

Inspelningskälla: tommcfarlin.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer