Size: a a a

2021 February 02

KS

Kirill Sotnikov in symfony
Вы точно имели в виду эти названия функций?
источник

👤U

👤 User in symfony
Да неее. Просто пока у B не сдернуть абстракт - я свободно его использую. НЕ требует реализации метода c();
Но стоит убрать абстрактность класса B - нормальный фатал эрор.
источник

👤U

👤 User in symfony
На самом деле, просто не надо пытаться работать с абстрактными классами, даже если их статичные методы позволяют. Абстрактный на то и абстрактный, наверное.
источник

S

SarcasmIO in symfony
class must be declared abstract or implement method
источник

S

SarcasmIO in symfony
ты никогда это ошибку не видел что ли ?
источник

👤U

👤 User in symfony
Если взять код выше и вкинуть в php никакой ошибки не будет. Это меня и смутило.
источник

D

Dmitry in symfony
абстрактный класс и интерфейс это почти одно и тоже
источник

D

Dmitry in symfony
поэтому нет и проверок между ними, хотя синтаксически написано верно
источник

👤U

👤 User in symfony
Я бы, чтобы не возникало такой вот неопределенности, запрещал вызов методов абстрактных классов. Даже если они статичны.
Абстракт на то и абстракт.
источник

👤U

👤 User in symfony
Я, конечно, упростил. Просто мне тут код передали. А там "рабочий" класс заявлен абстрактным. И не реализует пару методов интерфейса. Меня это сильно смутило, что он вообще работает.
источник

D

Dmitry in symfony
вы еще в жабаскрипте попросите чтобы '1'+1 было 2
источник

👤U

👤 User in symfony
Правильнее, я думаю, вообще вот так сделать:
источник

👤U

👤 User in symfony
<?php

abstract class A
{
   abstract public static function c(): bool;
}

class B extends A
{
   public static function bar()
   {
       echo 1;
   }
   public static function c(): bool {
       return true;
   }
}
B::bar();
источник

👤U

👤 User in symfony
Накой тут прошлое поколение вообще интерфейс завели, если оперируют абстрактами.
источник

👤U

👤 User in symfony
abstract class A
{
   abstract public static function c(): bool;
}

abstract class B extends A
{
   public static function bar()
   {
       echo 1;
   }
}
B::bar();

Хехе
. А если так сделать - снова нет ошибки. Все же абстракт отключает наглухо логику проверки на реализацию заявленных функций. Ясно. Передам ваятелям, чтоб больше так не ваяли. Раньше как-то даже мысли не было создавать абстрактные классы со статическими методами и потом их дергать.
источник

АЯ

Андрей Ява in symfony
👤 User
Я бы, чтобы не возникало такой вот неопределенности, запрещал вызов методов абстрактных классов. Даже если они статичны.
Абстракт на то и абстракт.
Тогда нвдо юзать интерфейсы.
источник

D

Dmitry in symfony
👤 User
abstract class A
{
   abstract public static function c(): bool;
}

abstract class B extends A
{
   public static function bar()
   {
       echo 1;
   }
}
B::bar();

Хехе
. А если так сделать - снова нет ошибки. Все же абстракт отключает наглухо логику проверки на реализацию заявленных функций. Ясно. Передам ваятелям, чтоб больше так не ваяли. Раньше как-то даже мысли не было создавать абстрактные классы со статическими методами и потом их дергать.
так тут все верно, в чем проблема ?
источник

АЯ

Андрей Ява in symfony
👤 User
abstract class A
{
   abstract public static function c(): bool;
}

abstract class B extends A
{
   public static function bar()
   {
       echo 1;
   }
}
B::bar();

Хехе
. А если так сделать - снова нет ошибки. Все же абстракт отключает наглухо логику проверки на реализацию заявленных функций. Ясно. Передам ваятелям, чтоб больше так не ваяли. Раньше как-то даже мысли не было создавать абстрактные классы со статическими методами и потом их дергать.
А тут вообще не нужны классы, это просто набор функций
источник

👤U

👤 User in symfony
С точки зрения php ни в чем. С точки зрения логики Класс B не реализует абстрктный метод c(); По идее, должна была бы быть ошибка.
источник

👤U

👤 User in symfony
Андрей Ява
А тут вообще не нужны классы, это просто набор функций
Функциональное программирование, зашитое в класс. И не такое видали)
источник