Это ошибка на миллиарды по словам самого же автора https://russianblogs.com/article/53131625851/
Да, гугл поиск последнее время совсем плох, очень много откровенно мусорных сайтов выдаёт в топе. Бывает даже ссылки на сателит с переводами SO гуглится выше самого SO.Какая жесть, это даже не гугл-транслейт, он куда лучше переводит.
не статическое значит динамическое, (обьект) если так понятно?называется такой мудреной фразой (статическое)
не знаю что ты там понял, но хоть википедию прочтипросто ловушка для работы например со сторонней библиотекой что бы можно было обработать те ошибки которые она возвращает не изменяя Ее код
Исключения ладно я разобрался для чего это...не статическое значит динамическое, (обьект) если так понятно?
не знаю что ты там понял, но хоть википедию прочти
ты точно про морфологию хочешь поговорить?почему этот формат называется статическим?
родительский класс ничего не знает про дочерниеПо идее эта конструкция обращение из родительского класса к дочернему и эта конструкция должна называться не static а children?
А разве позднее статическое связывание это не про это речь? По крайней мере прочитав у Мэтта зандстры я так эту тему понял.ты точно про морфологию хочешь поговорить?
родительский класс ничего не знает про дочерние
родительский класс ничего не знает про дочерние
abstract class FileWrittet
{
static function run($sourse){
if(strstr (.xml)){
return FileWritterXML;
}
return FileWritterText;
}
}
class FileWritterXML extends FileWritter;
class FileWritterText extends FileWritter;
Связь с дочками называется инцест.Поэтому у мен и вопрос про поздние статическое связи - почему оно так называется... а не связь с дочками....
class Foo {
public $var = 'Переменная из неймспейса Foo';
function bar() { return self::$var; }
}
class Baz extends Foo {
public $var = 'Переменная из неймспейса Baz';
}
//
Foo::$a; // выведет переменную из неймспейса Foo
Foo::bar(); // выведет переменную из неймспейса Foo
Baz::bar(); // тоже выведет переменную из неймспейса Foo, потому что self::$var
class Foo {
public $var = 'Переменная из неймспейса Foo';
function bar() { return static::$var; } // static - позднее статическое связывание
}
class Baz extends Foo {
public $var = 'Переменная из неймспейса Baz';
}
//
Foo::$a; // выведет переменную из неймспейса Foo
Foo::bar(); // выведет переменную из неймспейса Foo
Baz::bar(); // тоже выведет переменную из неймспейса Baz, потому что static::$var
я не вижу вызова, полный примерPHP:abstract class FileWrittet { static function run($sourse){ if(strstr (.xml)){ return FileWritterXML; } return FileWritterText; } } class FileWritterXML extends FileWritter; class FileWritterText extends FileWritter;
нетРодитель знает про своих дочек.
Статика - это не экземпляр класса, а функция в его "неймспейсе", так что не знает. Но и так тоже делать не стоит, поскольку для добавления ещё одного формата надо модифицировать базовый класс, который может вообще устанавливаться как сторонняя библиотека через composer.Родитель знает про своих дочек.PHP:abstract class FileWrittet { static function run($sourse){ if(strstr (.xml)){ return FileWritterXML; } return FileWritterText; } } class FileWritterXML extends FileWritter; class FileWritterText extends FileWritter;
$obj = new FileWrittet::run("dir/file.xml");я не вижу вызова, полный пример
нет
ты на каком языке вообще пишешь? какой инстанс, какой статик, что за константы, что вообще ты хочешь сказать? где это статистическое связывание?$obj = new FileWrittet::run("dir/file.xml");
Это был пример когда родитель знает о дочерних классах (с жёсткой фиксацией).ты на каком языке вообще пишешь? какой инстанс, какой статик, что за константы, что вообще ты хочешь сказать? где это статистическое связывание?
пожалуйста рабочий пример кода
Тут уже кто то сказал про статику. Полагаю речь не затронула статические методы и параметры. Речь была про то что бы забыть статическое связывание.Статика - это не экземпляр класса, а функция в его "неймспейсе", так что не знает. Но и так тоже делать не стоит, поскольку для добавления ещё одного формата надо модифицировать базовый класс, который может вообще устанавливаться как сторонняя библиотека через composer.
Вообще для тренировки навыков проектирования лучше забыть про static, считай, что его нет. Тогда в данном примере неизбежно появится отдельная фабрика. А когда уже уверенно освоишься, тогда уже можно срезать углы, понимая, чем это грозит.