Одновременно двоеточие и $this-> невозможно?

cDLEON

Онанист РНРСlub
для создания дефолтного функционала, доступного в потомках
тем, кто создает потомка для других целей
Ага. И успешно использует до той поры, пока не решит модифицировать значение какой-либо статической переменной у себя в классе. А потом.... Потом в проекте начинает сыпаться код. При чём не в том месте, где не знающий этой особенности девелопер сделал изменения, а в той, что написал кто-то другой и которая успешно работала.
static тот же public. Наследуется со всеми потрохами.
Там ссылка получается. Ни хрена не все потроха. Все потроха это копирование.

Ну lsb там так, не то чтобы прям нужен, можно было бы спокойно обойтись без, но с ним проще, да. Основа - class_alias + __callStatic.

Другое дело что сами по себе эти фасады - скорее зло. Да и вообще все применения LSB смахивают на антипаттерны. Я, кстати, не знаю ни одного языка кроме PHP, где бы оно было.
В python есть classmethod. В купе с метаклассами(конструкторы типов) получаются прикольные фичи :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
зачем вырывать статическую переменную из контекста класса ?
А потом.... Потом в проекте начинает сыпаться код.
Я так и не понял о каком нарушении инкапсуляции идет речь.
:)
 
Последнее редактирование:

cDLEON

Онанист РНРСlub
Не ну, по-хорошему, статич. переменные класса не должны быть ссылками на предка. Я не вижу ни одного юзкейса где их можно использовать без модификатора private в данной реализации... Ну, разве что, какой-нить счетчик - не более.
В данном контексте полностью с тобой согласен. (Я думал, что данное поведение есть только в PHP. Только после данного спора решил посмотреть как это реализовано в плюсах.)
 

fixxxer

К.О.
Партнер клуба
Метаклассы в python - это совсем другое. Это штуки, нужные для всякого хитрого инструментария, примерно как и Reflection, в обычных случаях их использовать не стоит.
 

cDLEON

Онанист РНРСlub
Метаклассы в python - это совсем другое. Это штуки, нужные для всякого хитрого инструментария, примерно как и Reflection, в обычных случаях их использовать не стоит.
Метаклассы в питоне можно встретить практически в любой библиотеке.
Я о classmethod - метаклассы всего лишь реклама ;)
 

cDLEON

Онанист РНРСlub
Декларативный стиль описания бизнес логики в основном.
Т.к. у питона немного другая схема взаимодействия с веб-сервером (он не умирает после каждого запроса) - дешевле и правильнее вынести инициализацию статических переменных класса на момент запуска скрипта. Например, SQLAlchemy, Django ORM - всевозможные проверки связности внешних ключей, инициализация метаданных. Получается, практически, compile time. При чём в самом метаклассе можно использовать уже готовые данные из предка и на их основе подмешивать только изменения.
Из простеньких метаклассов могу привести пример Flask-ового MethodView-а
https://github.com/mitsuhiko/flask/blob/master/flask/views.py#L105
Как можно понять из кода - всё, что делает этот код - это кеширование и декларирование разрешенных методов http запроса.
 

fixxxer

К.О.
Партнер клуба
А, ну вот SQLAlchemy я и имел ввиду "примерно как и Reflection" :)
 
Сверху