@DarkByte2015

Static use methods?

В пыхе есть что-нибудь вроде этого?

use static yii\helpers\ArrayHelper\*;

Чтобы потом юзать статичные методы без указания имени класса. Во многих языках такое есть... Очень хотелось бы.
  • Вопрос задан
  • 248 просмотров
Пригласить эксперта
Ответы на вопрос 2
@MadridianFox
Web-программист, многостаночник
Нет. И не понимаю вашего желания. Статический метод отличается от простой функции тем, что при вызове метода видно какому классу он принадлежит. Это хорошо, т.к. у вас несколько классов могут иметь статические методы с одинаковыми названиями, например BlogPostAR::find() и CommentAR::find().

То же касается и хелперов. Несколько библиотек могут предоставлять свои хелперы для похожих задач.
А если вам лень набирать имя класса - ок, используёте as:
use yii\helpers\ArrayHelper as ah;
ah::toArray($obj);

но и этого я вам не советую. Через месяц вы забудете что значит ah и придётся отвлекаться на поиск соответствующего use. Или ещё хуже - ваш код будет поддерживать другой человек.
Гораздо понятнее, когда в коде написано ArrayHelper::toArray(), потому что все кто работает с yii к этому привыкли.
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Чисто для ознакомления, не использовать в реальном коде
<?php
function getStatic($c){
    $r = [];
    foreach((new ReflectionClass($c))->getMethods(ReflectionMethod::IS_STATIC | ReflectionMethod::IS_PUBLIC) as $v){
        $r[$v->name] = $v->class.'::'.$v->name;
    }
    return $r;
}

class Test{
    static function hello(){
        echo "hello\n";
    }
    static function world($p){
        echo "world $p\n";
    }
}

extract(getStatic('Test'));

echo '<pre>';
$hello();
$world(42);
echo '</pre>';
    
?>
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы