PHP: вызвать статический метод без имени класса - PullRequest
2 голосов
/ 30 октября 2011

У меня есть простой вопрос как здесь: static-method-invocation , но в PHP.Просто я хочу, чтобы класс был таким:

static class ClassName{
   static public function methodName(){
         //blah blah blah
   }
}

, и я хочу вызвать метод-член без имени od class, например:

require_once(ClassName.php);

methodName();

Возможно ли это в PHP?Спасибо за ваши ответы!

Ответы [ 2 ]

4 голосов
/ 30 октября 2011

Вы не можете делать то, что ищете.Пример вызова, который вы даете:

methodName();

Вызывает глобальную функцию.Даже статические функции классов также являются глобальными, им всегда нужно, чтобы имя класса вызывалось:

ClassName::methodName();

Это вызывает глобальную функцию статического класса, созданную вами во включаемом файле.

Я могу только догадываться, чего бы вы хотели достичь, может быть, вы можете воспользоваться функцией, которая может возвращать значения:

static class ClassName{
   static public function methodName(){
         //blah blah blah
   }
}
return 'ClassName';

В том числе:

$className = require_once(ClassName.php);
$className::methodName();

Однако это победило 't работать с reguire_once, когда файл был загружен ранее.

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

Имейте в виду, что язык Java отличается от PHP.Эквивалентом статической функции java будет глобальная функция в PHP:

function methodName(){
    //blah blah blah
}

Включая:

require_once(ClassName.php);
methodName();

Это эквивалент PHP.

0 голосов
/ 30 октября 2011

единственный способ

$ClassName = 'MyClass';
require_once($ClassName.'.php');

$ClassName::methodName();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...