PHP: как проверить, вызван ли метод класса из экземпляра, или статически
Задача: при вызове метода класса, использовать разный код в зависимости от того, как вызвана функция: статически или из класса. Т.е. результат выполнения кода:
1 2 3 |
$tr=new TRabbit(); $res= $tr->Producer("ocpi_queue", "Hello!"); |
и кода:
1 |
$res= TRabbit::Producer("ocpi_queue", "Hello!"); |
, должен быть разным.
Решение:
объявим в классе статическую переменную, которая будет изменять свое значение, если был создан экземпляр класса.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class TRabbit { public static $isInstance=false; public function __construct(){ self::$isInstance=true; } public static function Producer($queue,$message,$delay=0) { if (self::$isInstance==true) { echo "Код один\n"; } else { echo "Код другой\n"; } } } |