Static vs Self - Mi a különbség?

Static vs Self - Mi a különbség?

Biztos benned is felmerült már a kérdés, hogy mi a különbség a self és a static kulcsszavak között! Nézzük meg!

Hozzunk létre két osztályt, az egyik legyen a Creature, a másik pedig az ebből leszármazó Human class. A Creature osztálynak van két statikus metódusa, getType() illetve getRealType(). Az egyik a self::class-t írja ki, míg a másik a static::class-t.

Hívjuk meg mindkét osztályon 
a két-két metódust és 
nézzük meg mit ír ki! És itt már látható is a különbség, mindjárt elmagyarázom!

Mivel a getType() metódus self::class-t írja ki, ezért ebben az esetben mindig “ott” hajtódik végre, ahová valójában tartozik, tehát a Creature-ben.

Míg a getRealType() esetén a static::class-t írjuk ki, ami 
a late static binding-nak köszönhetően “ott” hajtódik végre, ahol valójában meghívtuk, ezért lesz a Human::getRealType() eredménye 'Human'.

Kapcsolódó címkék:
Megosztás:

További 'Laravel' cikkek

Collection Pagination Resource

Collection Pagination Resource

Azt tudjuk, hogy a paginate() metódussal egyszerűen meg lehet oldani a lapozást. De mi a helyzet akkor, ha 
egy collection-t szeretnék 
lapozhatóvá tenni?