PHP: как проверить, вызван ли метод класса из экземпляра, или статически
Задача: при вызове метода класса, использовать разный код в зависимости от того, как вызвана функция: статически или из класса. Т.е. результат выполнения кода:
$tr=new TRabbit();
$res= $tr->Producer("ocpi_queue", "Hello!");
и кода:
$res= TRabbit::Producer("ocpi_queue", "Hello!");
, должен быть разным.
Решение:
объявим в классе статическую переменную, которая будет изменять свое значение, если был создан экземпляр класса.
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";
}
}
}