%PDF- %PDF-
Direktori : /home/silvzytp/crm-ind-code/vendor/laravel/framework/src/Illuminate/Console/View/Components/ |
Current File : //home/silvzytp/crm-ind-code/vendor/laravel/framework/src/Illuminate/Console/View/Components/Component.php |
<?php namespace Illuminate\Console\View\Components; use Illuminate\Console\OutputStyle; use Illuminate\Console\QuestionHelper; use ReflectionClass; use Symfony\Component\Console\Helper\SymfonyQuestionHelper; use function Termwind\render; use function Termwind\renderUsing; abstract class Component { /** * The output style implementation. * * @var \Illuminate\Console\OutputStyle */ protected $output; /** * The list of mutators to apply on the view data. * * @var array<int, callable(string): string> */ protected $mutators; /** * Creates a new component instance. * * @param \Illuminate\Console\OutputStyle $output * @return void */ public function __construct($output) { $this->output = $output; } /** * Renders the given view. * * @param string $view * @param \Illuminate\Contracts\Support\Arrayable|array $data * @param int $verbosity * @return void */ protected function renderView($view, $data, $verbosity) { renderUsing($this->output); render((string) $this->compile($view, $data), $verbosity); } /** * Compile the given view contents. * * @param string $view * @param array $data * @return void */ protected function compile($view, $data) { extract($data); ob_start(); include __DIR__."/../../resources/views/components/$view.php"; return tap(ob_get_contents(), function () { ob_end_clean(); }); } /** * Mutates the given data with the given set of mutators. * * @param array<int, string>|string $data * @param array<int, callable(string): string> $mutators * @return array<int, string>|string */ protected function mutate($data, $mutators) { foreach ($mutators as $mutator) { $mutator = new $mutator; if (is_iterable($data)) { foreach ($data as $key => $value) { $data[$key] = $mutator($value); } } else { $data = $mutator($data); } } return $data; } /** * Eventually performs a question using the component's question helper. * * @param callable $callable * @return mixed */ protected function usingQuestionHelper($callable) { $property = with(new ReflectionClass(OutputStyle::class)) ->getParentClass() ->getProperty('questionHelper'); $property->setAccessible(true); $currentHelper = $property->isInitialized($this->output) ? $property->getValue($this->output) : new SymfonyQuestionHelper(); $property->setValue($this->output, new QuestionHelper); try { return $callable(); } finally { $property->setValue($this->output, $currentHelper); } } }