Как правильно вызывать функцию класса внутри класса?

имеем класс такого вида
class Price{
  public function calculate($d){
   if($this->booleanCustom($d['selfDelivery'])===true) {
           //код
        }
  }
 private function booleanCustom($b)
    {
        //echo var_dump($b);
        if(in_array($b, ['1', 1, 'true', 'TRUE'])) {
            return true;
        }
        if(in_array($b, ["0", 0, 'false', 'FALSE'])) {
            return false;
        }
        return false;
    }
}


Все было хорошо пока не словил ошибку
PHP Fatal error: Using $this when not in object context in .../Price.php on line 96

После замены вызова с $this->booleanCustom на Price::booleanCustom ошибка ушла.
Мне интересно как правильно вызывать метод класса внутри класса?
Ошибка возникла в тот момент когда класс подключили в файле, в котором была определена функция booleanCustom. Просто функция безовсяких классов. Неужели $this переопределился и при вызове он не указывает на класс Price?
  • Вопрос задан
  • 128 просмотров
Решения вопроса 2
qonand
@qonand
Software Engineer
обычные методы с помощь $this->method(), статические с помощь static::method()
почему в Вашем случае возникала ошибка при использовании $this сложно сказать, нужно смотреть больше кода. Судя по коду приложенному в вопросе - проблем быть не должно. Скорее всего Вы что где-то не так делаете
Ответ написан
Minifets
@Minifets
Hello world!!!
Хоть это и не относится к вопросу, но вместо костыля можно использовать:

filter_var($d['selfDelivery'], FILTER_VALIDATE_BOOLEAN)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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