Self ссылается на текущий класс, в котором определен код. Static ссылается на класс, который был фактически вызван во время выполнения.
php
| Ключевое слово | Привязка | Используется для |
|---|---|---|
self | Название текущего класса (привязка на этапе компиляции) | Доступ к статическим свойствам, константам и методам текущего класса. |
static | Название класса, вызвавшего метод (позднее статическое связывание) | Доступ к статическим свойствам, константам и методам в контексте вызвавшего класса (может быть дочерним). |
Основное отличие заключается в позднем статическом связывании (static), которое позволяет наследованию переопределять статическое поведение, тогда как self всегда ссылается на класс, где код был определен.