/** * Calls a macro extension (method) with the given parameters * * @internal * * @param string $name The name of the macro * @param array $parameters The optional parameters * * @return mixed */ protected function callMacro($name, $parameters = []) { $callback = static::getExtenableProperty('macros')[$name]; if ($callback instanceof Closure) { return call_user_func_array($callback->bindTo($this, get_class($this)), $parameters); } elseif (is_string($callback) && Str::contains($callback, '@')) { return $this->callClassBasedMacro($callback, $parameters); } }
/** * callExtension method * * @private * * @param $name * @param $parameters * * @return mixed */ protected function callExtension($name, $parameters) { $callback = static::$extensions[$name]; if ($callback instanceof Closure) { return call_user_func_array($callback->bindTo($this, get_class($this)), $parameters); } elseif (is_string($callback) && Str::contains($callback, '@')) { return $this->callClassBasedExtension($callback, $parameters); } }
public function testStrContains() { $this->assertTrue(Str::contains('taylor', 'ylo')); $this->assertTrue(Str::contains('taylor', ['ylo'])); $this->assertFalse(Str::contains('taylor', 'xxx')); $this->assertFalse(Str::contains('taylor', ['xxx'])); $this->assertFalse(Str::contains('taylor', '')); }