-
Notifications
You must be signed in to change notification settings - Fork 52
PrimitiveString->import must be protected #155
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
У PrimitiveIdentifier так же к слову. Ошибка ли? Неа. Form вызывает у примитивов import |
Значит ошибка в BasePrimitive и там должен быть public. К тому же в таком случае BC сохраняется. |
В чем именно ошибка? Расширять видимость - допустимо. Исползовать import от BasePrimitive унаследовавшись и не переопределяя - недопустимо. А переопределяя вы получаете доступ к protected родителя. По моему тонко. А? DanielPlainview, как Вы считаете? |
Покажите это в документации. IDE подчеркивает вызов метода import() как недопустимый в контексте других классов, если в phpDoc или TypeHinting'е указан BasePrimitive. Не существует ни одной причины использовать эту сомнительную недокументированную возможность. |
может и недокументирован. по факту разрешено. если Вы попробуете public перековать в protected, то такой код не будет работать в принципе. расширять никто не запрещает <-- так справедливее (видать опечатался =), даже нотиса не видать при E_ALL. |
Вы обещаете нам, что это с какой-нибудь из последующих версий PHP не будет E_STRICT'ом? |
Если хочется решить это, то я представил себе два варианта:
|
Первый вариант, по-моему, лучше, меньше риск что-то сломать. В onPHP есть некий PrimitiveAnyType, не реализующий public-версию import() метода вообще, например. |
soloweb, к сожалению, всё что Вы пишите, видно лишь в оповещениях на почту. В web-интерфейсе сообщения пустые.
PrimitiveAnyType не покрыт тестами. |
Я в своем пул реквесте с примитивами решил эту проблему и много других кстати ;) Там ничего вроде не должно сломаться, тесты все проходят на ура :) |
по смыслу, подходит второе: в базовом классе объявлено value, но метод import не знает о нем ничего, что не страшно, если-бы value было объявлено выше. => import - это недоимпорт который обязывает определить процесс впиха raw в value. |
решение soloweb накатывать мне страшно :) (хотя часть оттуда иногда хочется накатить, но все никак не добираюсь) + оно не мержится сейчас автоматом и надо значит дорабатывать + 19 changed files with 789 additions and 227 deletions - я бы не назвал это менее трудоёмко. Про пример из php.net - все круто, но дело в интерфейсе BasePrimitive - раз уж форме говорят что это BasePrimitive то у него нет import и вызывать такой метод она не может (так считает во всяком случае IDE, которое подсвечивает такой вызов). Соотвественно либо форма должна работать с другим интерфейсом который все примитивы должны реализовывать либо у BasePrimitive должен быть этот метод публичным. |
Да надо занятся мне и смержится с мастером :) Если хочется быстрого фикса то тогда наверно отдельный мерж реквест создавать :) |
PrimitiveString:
BasePrimitive:
The text was updated successfully, but these errors were encountered: