2017-01-24 2 views
0

Поэтому у меня есть этот класс:экстракта объекта к глобальным функциям

class MyClass { 
    public static function printMessage($text) { 
     echo $text; 
    } 
} 

И я хотел бы использовать его в следующих способов:

MyClass::printMessage('test'); // test 
printMessage('test'); // test 

Так printMessage будет работать как метод, а также как функция. Есть что-то подобное с PHP? (Что-то вроде автозагрузки для классов) Я не могу найти хорошее решение или даже ответить - no. Мне это не нужно, мне просто интересно, поэтому мне не нужно писать одну и ту же структуру функций дважды. Я знаю, что могу использовать код вроде public static function printMessage($text) { return printMessage($text); }, но это не то, что я ищу.

+0

Если вы не определяете его как глобальную функцию: нет, вы не можете назвать его глобальной функцией. – deceze

+1

Но что говорит против использования 'MyClass :: printMessage ('test');' в глобальной области? – arkascha

+0

Вы можете использовать инструкцию 'define' для такой вещи, но опять же: _why_? – arkascha

ответ

0

Вы можете отобразить/обернуть функцию класса в глобальной функции:

function printMessage($string){ 
    MyClass::printMessage($string); 
} 

Но Is something like that possible with PHP? Nope. Вызов функции ДОЛЖЕН быть уникальным в PHP.

Вы также можете сделать это:

$printMessage = function($string){MyClass::printMessage($string);}; 

получить стенографии $printMessage($string);

Но лучше всего, чтобы избежать глобальных функций в целом. И если вы собираетесь на следующий уровень кодирования, то также следует избегать статических методов класса.

+1

Я думал о написании этого ответа, но все это является обратным тому, что находится в конце вопроса. Я не думаю, что это то, что хочет OP – Machavity

+0

@Machavity Yep, я заметил, что проводной материал в конце Q слишком поздно. НО, им не последним;))) – JustOnUnderMillions

0

Вы можете либо использовать обертку:

public function printMessage($text){ 
    MyClass::printMessage($text); 
} 

Или объявить функцию как глобальные, которые не кажется, что вы ищете.

Смежные вопросы