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

AnrDaemon

Продвинутый новичок
Да я сказал, что выкинул этот код уже.
Мне непонятно, почему ваш хвалёный late static binding не работает.
 

Redjik

Джедай-мастер
кстати, а как статика в пыхе сделана, так же как в плюсах, тупо глобальными переменными?
 

AnrDaemon

Продвинутый новичок

cDLEON

Онанист РНРСlub
Со static:: вроде работает… но я всё равно пошёл другим путём.
Чё серьезно ? Когда я похожим методом хотел сделать объектный кеш - значение статической переменной менялось у родителя. А на bugs.пыхапе.нет сказали, что это не баг - а фича.
ПС. Я так и не понял о каком нарушении инкапсуляции идет речь.
 

cDLEON

Онанист РНРСlub
PHP:
class Test2 {
    static $test;
    public function __construct() {
         static::$test = 'asd';
    }
}

class Test3 extends Test2 {
}
new Test3();
echo Test2::$test;
"asd"
Хе-хе. Это же поведение осталось.
 

AnrDaemon

Продвинутый новичок
Логично.
У тебя статик не перекрывается в потомке.
 

cDLEON

Онанист РНРСlub
Понятно, что это поведение взято из плюсов. (В джава оно тоже точно такое же). НО. Я даже не могу себе представить ГДЕ это можно применить?
Счетчики объектов этого класса ? Но зачем ? Класс не должен считать сам себя. Есть у кого-нибудь реальные юзкейсы ЭТОМУ поведению ?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@cDLEON, попробуй сформулировать вопрос без местоимений, в текущем виде он неоднозначен.
У тебя вопрос относится к static:: - переменным, или методам тоже?
static-вызовы часто используются чтобы переопределять реализацию в потомках, protected static $var нужна для хранения экземпляра класса в фабрике

например, для Post::model()->find() в yii могли бы поставить protected static $_models вместо private если бы не 5.1-совместимость
 
Последнее редактирование:

cDLEON

Онанист РНРСlub
@cDLEON, попробуй сформулировать вопрос без местоимений, в текущем виде он неоднозначен.
У тебя вопрос относится к static:: - переменным, или методам тоже?
static-вызовы часто используются чтобы переопределять реализацию в потомках, protected static $var нужна для хранения экземпляра класса в фабрике

например, для Post::model()->find() в yii могли бы поставить protected static $_models вместо private если бы не 5.1-совместимость
Вопрос - зачем вырывать статическую переменную из контекста класса ? Кому может понадобится "ссылочная" статическая переменная, которая в итоге получается, если эту переменную не перекрыть в потомке ?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
для создания дефолтного функционала, доступного в потомках
тем, кто создает потомка для других целей
 

fixxxer

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

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

AnrDaemon

Продвинутый новичок
Вопрос - зачем вырывать статическую переменную из контекста класса ? Кому может понадобится "ссылочная" статическая переменная, которая в итоге получается, если эту переменную не перекрыть в потомке ?
Если ты читал мой пример, то мог заметить, что у меня в статик разворачивается миссив ключей, по которым потом адресуется __call().
Я хотел таким методом выиграть время инициализации (= создания объектов), которых могут быть десятки тысяч.
Проверить, есть ли у нас уже массив, быстрее, чем каждый раз его создавать. Но потом я плюнул и использовал автогенератор нужных классов со всеми нужными методами. Проще и быстрее, и весь код в одном месте.
 
Сверху