Emil Österlund

PHP och late static bindings

I PHP 5.3.0 introducerades en fin liten grej som inte fått så jättemycket uppmärksamhet. Late static bindings.  När du jobbar med klasser för att skapa objekt så får du ofta en situation som ser ut som följande:

Vilket kommer att ge
Unidentified person
När man egentligen vill ha variabeln från childklassen och inte parentklassen. Det är här late static bindings kommer in i bilden. Om man då byter ut raden return self::$name till return static::$name så gör man alltså en late static binding och php förstår att det är variabeln från childklassen du vill returnera och inte den från parentklassen(där funktionen getName ligger). Koden blir alltså så här:

Vilket kommer att ge
Teacher
Och helt plötsligt blev även statiska funktioner och variabler så mycket enklare att jobba med genom klasser och arv. Kör hårt!