xolnimda
@xolnimda

Как создать класс с копией статических методов другого класса?

Есть класс Functions

У него статические методы

Нужно создать класс Html с копией методов класса Functions

class Html extends Functions {

}


Можно ли как то указать какие именно методы должен наследовать класс Html?

В классе Html не требуются все методы класса Functions
  • Вопрос задан
  • 2420 просмотров
Пригласить эксперта
Ответы на вопрос 4
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
вот скажите, зачем вам классы? только потому что автозагрузки функций нету?

class Function {
    public static function foo() {
         return 'foo';
    }
    public static function bar() {
         return 'bar';
    }
}

class Html {
    public static function __callStatic($name, $arguments) {
         // разрешаем вызывать только foo
         if (!in_array($name, ['foo'])) {
              throw new \RuntimeException(sprintf('Unable to find method %s in class %s', $name, __CLASS__));
         }

         return call_user_func_array(['Functions', $name], $arguments);
    }
}

Html::foo() // 'foo'
Html::bar() // exception


только добавьте в phpdoc аннотации методов

либо сделайте так:
class Html {
    public static function foo() {
           return Functions::foo();
    }
}

так будет правильнее.

p.s. я не знаю зачем вы это делаете, просто знайте. Вы делаете нехорошие вещи.
Ответ написан
isa424
@isa424
Ukazhi te metody v klasse 'Functions' kotorye ne nuzhny 'private'
Ответ написан
@Kjuri
что мешает, если "не требуются все методы" и не использовать их? или есть причины, чтобы их и нельзя было использовать, даже если захочется? Как вариант - создать абстрактный суперкласс. т.е. над Functions создать еще класс, и уже на основе него создавать остальное. Определить в нем некие характеристики, которые обязательно нужны везде. А вариации уже у наследников прописывать. И Html будет дочерним элементом не Functions, а этого абстрактного суперкласса.
Ответ написан
Комментировать
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Использовать трейты если версия php позволяет (с 5.4)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 июн. 2024, в 02:23
5000 руб./за проект
26 июн. 2024, в 00:28
5000 руб./за проект
25 июн. 2024, в 23:31
1500 руб./за проект