В родительском классе вместо self::foo()
должно использоваться static::foo()
, если речь про статический метод. Без изменения родительского класса этого добиться нельзя.
Но это при условии, что печально известная CMS вообще что-то знает о вашем классе и вызывает именно его, а не сам родительский. Если нет, то делать дочерний никакого смысла нет.
В печально известную CMS можно добавить смоук-тест в php_interface - вызывать нужный метод, и если результат отличается от ожидаемого, кидать ошибку с понятным текстом. Это позволит узнавать о перезаписи файла ядра при обновлении, но, не очень красиво, разумеется.