Тема: Конфиг модуля

Вот типичный пример наследования \RS\Orm\ConfigObject взятый из модуля shop:

class File extends \RS\Orm\ConfigObject
{
    function _init()
    {
        parent::_init()->append(array(...));
    }
}

1. Почему в публичных методах опущен public? Насколько я помню в последних версиях PHP это вызывает notice.
2. Почему _init возвращает void, а не \RS\Orm\PropertyIterator? Это же явная ошибка + усложняе отладку в IDE .

2

Re: Конфиг модуля

1. Не смог найти информацию о том, что отсутствие public перед функцией дает notice.
2. Так исторически сложилось. Это абсолютно ни на что не влияет, так как конфигурационные файлы никогда не наследуются. Но в наследнике все равно всегда можно сделать так:

function _init()
{
    parent::_init();
    $this->getPropertyIterator()->append(....);
}

Повысить оценку Понизить оценку

3

Re: Конфиг модуля

admin пишет:

1. Не смог найти информацию о том, что отсутствие public перед функцией дает notice.

Сейчас не могу найти, но точно помню что в одном из последнем релизов в strict modе попадалось.

2. Так исторически сложилось.

Это не баг, а фича?

Но в наследнике все равно всегда можно сделать так

а какой в этом смысл именно в таком варианте? и зачем рекомендовать некорретный код, многие разработчики   копируют ваш код не задумываясь, например, модуль "Генератор модулей (codegen)" генерируют болванку с такой же ошибкой.

4

Re: Конфиг модуля

Это не баг (ничего не ломает) и не фича (ничего не привносит).

Конечно, все должно быть по фен шую. )

Повысить оценку Понизить оценку

5

Re: Конфиг модуля

admin пишет:

Это не баг (ничего не ломает)

IDE ругается