базовый класс:Что лучше, делайте это с помощью констант или методов? (Наследование, статические, Php, или любой ООП)
abstract class Base
{
abstract public function getLenth();
abstract public function getName();
}
два класса из него:
final class ObjA extends Base
{
public function getLenth()
{
return 1;
}
public function getName()
{
return 'Object A';
}
}
.
final class ObjB extends Base
{
public function getLenth()
{
return 6;
}
public function getName()
{
return 'Object B';
}
}
это - одно решение. Его можно переписать следующим образом:
class Base
{
public function getLenth()
{
return static::LENGTH;
}
public function getName()
{
return static::NAME;
}
}
.
final class ObjA extends Base
{
const LENGTH = 1;
const NAME = 'Object A';
}
.
final class ObjB extends Base
{
const LENGTH = 6;
const NAME = 'Object B';
}
какая версия лучше, почему?
EDIT:
Я голосую за 2: короче. Но его интересно, что, как это могло быть сделано с Java, где нет позднего статического связывания для постоянных
«Лучше» всегда связано с контекстом. Если вы можете использовать одну версию очень хорошо (потому что вы можете реализовать константы без проблем), почему бы не сделать это? Но будут ли все ваши реализации «ObjA» иметь одинаковую длину и имя? Проанализируйте ситуацию самостоятельно, и вы можете сказать себе, что лучше для вас и почему – kero
да, они все константы, никогда не будут изменены –