src/includes/classes/Core/Utils/Backtrace.php
public function hasCaller($caller, int $at = null, bool $all = false, $___offset = 0): bool
    {
        if (!$caller) {
            return false;
        }
        $caller  = (array) $caller;
        $caller  = array_map('strval', $caller);
        $callers = $this->callers($at, $all, 1 + $___offset);

        $caller  = '.'.implode('.', $caller).'.';
        $callers = '.'.implode('.', $callers).'.';

        if (isset($at)) { // Position matters.
            return mb_stripos($callers, $caller) === 0;
        }
        return mb_stripos($callers, $caller) !== false;
    }
public function hasCaller($caller, int $at = null, bool $all = false, $___offset = 0): bool
    {
        if (!$caller) {
            return false;
        }
        $caller  = (array) $caller;
        $caller  = array_map('strval', $caller);
        $callers = $this->callers($at, $all, 1 + $___offset);

        $caller  = '.'.implode('.', $caller).'.';
        $callers = '.'.implode('.', $callers).'.';

        if (isset($at)) { // Position matters.
            return mb_stripos($callers, $caller) === 0;
        }
        return mb_stripos($callers, $caller) !== false;
    }
Has backtrace callers?

@since 170211.63148 Debugging utilities.

@param string|array $caller    Caller(s).
@param int|null     $at        Starting at position.
@param bool         $all       Include magic middle-men?
@param int          $___offset For internal use only.

@return bool True if has backtrace caller(s).

@note If `$caller` is an array, the order of the given array matters.
i.e., Callers must exist in a matching order as given by the `$caller` param.

@note If `$at` is set (even if `0`), then position matters too.
i.e., Caller(s) must exist starting at the given position.
Conversely, if `$at` is not set, the position does not matter.