$this->options['bypass_shell'] = true; $commandline = $this->prepareWindowsCommandLine($commandline, $env); } elseif (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { // last exit code is output on the fourth pipe and caught to work around --enable-sigchild $descriptors[3] = array('pipe', 'w'); // See https://unix.stackexchange.com/questions/71205/background-process-pipe-input $commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;'; $commandline .= 'pid=$!; echo $pid >&3; wait $pid; code=$?; echo $code >&3; exit $code'; // Workaround for the bug, when PTS functionality is enabled. // @see : https://bugs.php.net/69442 $ptsWorkaround = fopen(__FILE__, 'r'); } if (!is_dir($this->cwd)) { @trigger_error('The provided cwd does not exist. Command is currently ran against getcwd(). This behavior is deprecated since version 3.4 and will be removed in 4.0.', E_USER_DEPRECATED); } $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $env, $this->options); if (!is_resource($this->process)) { throw new RuntimeException('Unable to launch a new process.'); } $this->status = self::STATUS_STARTED; if (isset($descriptors[3])) { $this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]); } if ($this->tty) { return; } $this->updateStatus(false); $this->checkTimeout(); } /** * Restarts the process.
"Array to string conversion"
$this->options['bypass_shell'] = true; $commandline = $this->prepareWindowsCommandLine($commandline, $env); } elseif (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { // last exit code is output on the fourth pipe and caught to work around --enable-sigchild $descriptors[3] = array('pipe', 'w'); // See https://unix.stackexchange.com/questions/71205/background-process-pipe-input $commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;'; $commandline .= 'pid=$!; echo $pid >&3; wait $pid; code=$?; echo $code >&3; exit $code'; // Workaround for the bug, when PTS functionality is enabled. // @see : https://bugs.php.net/69442 $ptsWorkaround = fopen(__FILE__, 'r'); } if (!is_dir($this->cwd)) { @trigger_error('The provided cwd does not exist. Command is currently ran against getcwd(). This behavior is deprecated since version 3.4 and will be removed in 4.0.', E_USER_DEPRECATED); } $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $env, $this->options); if (!is_resource($this->process)) { throw new RuntimeException('Unable to launch a new process.'); } $this->status = self::STATUS_STARTED; if (isset($descriptors[3])) { $this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]); } if ($this->tty) { return; } $this->updateStatus(false); $this->checkTimeout(); } /** * Restarts the process.
"/usr/local/bin/wkhtmltopdf --lowquality --orientation 'portrait' --page-size 'a4' '/tmp/knp_snappy660667ca6b0ed0.82155683.html' '/tmp/knp_snappy660667ca6b1720.96121748.pdf'"
array:3 [ 0 => array:2 [ 0 => "pipe" 1 => "r" ] 1 => array:2 [ 0 => "pipe" 1 => "w" ] 2 => array:2 [ 0 => "pipe" 1 => "w" ] ]
array:3 [ 0 => Closed resource @304 1 => Closed resource @305 2 => Closed resource @306 ]
"/home/flobha/public_html/public"
array:45 [ "USER" => "flobha" "HOME" => "/home/flobha" "SCRIPT_NAME" => "/index.php" "REQUEST_URI" => "/download-pattern/534" "QUERY_STRING" => "" "REQUEST_METHOD" => "GET" "SERVER_PROTOCOL" => "HTTP/1.1" "GATEWAY_INTERFACE" => "CGI/1.1" "REDIRECT_URL" => "/download-pattern/534" "REMOTE_PORT" => "41562" "SCRIPT_FILENAME" => "/home/flobha/public_html/public/index.php" "SERVER_ADMIN" => "webmaster@bharatfloorings.com" "CONTEXT_DOCUMENT_ROOT" => "/home/flobha/public_html/public" "CONTEXT_PREFIX" => "" "REQUEST_SCHEME" => "https" "DOCUMENT_ROOT" => "/home/flobha/public_html/public" "REMOTE_ADDR" => "54.224.43.79" "SERVER_PORT" => "443" "SERVER_ADDR" => "95.216.37.147" "SERVER_NAME" => "bharatfloorings.com" "SERVER_SOFTWARE" => "Apache" "SERVER_SIGNATURE" => "" "PATH" => "/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/opt/bin" "HTTP_X_HTTPS" => "1" "HTTP_HOST" => "bharatfloorings.com" "HTTP_USER_AGENT" => "claudebot" "HTTP_ACCEPT" => "*/*" "proxy-nokeepalive" => "1" "SSL_TLS_SNI" => "bharatfloorings.com" "HTTPS" => "on" "SCRIPT_URI" => "https://bharatfloorings.com/download-pattern/534" "SCRIPT_URL" => "/download-pattern/534" "UNIQUE_ID" => "ZgZnypfmwTtY3aTgtnCofQAAADk" "REDIRECT_STATUS" => "200" "REDIRECT_SSL_TLS_SNI" => "bharatfloorings.com" "REDIRECT_HTTPS" => "on" "REDIRECT_SCRIPT_URI" => "https://bharatfloorings.com/download-pattern/534" "REDIRECT_SCRIPT_URL" => "/download-pattern/534" "REDIRECT_UNIQUE_ID" => "ZgZnypfmwTtY3aTgtnCofQAAADk" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1711695818.3644 "REQUEST_TIME" => 1711695818 "argv" => [] "argc" => 0 ]
array:1 [ "suppress_errors" => true ]
* * The STDOUT and STDERR are also available after the process is finished * via the getOutput() and getErrorOutput() methods. * * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * @param array $env An array of additional env vars to set when running the process * * @return int The exit status code * * @throws RuntimeException When process can't be launched * @throws RuntimeException When process stopped after receiving signal * @throws LogicException In case a callback is provided and output has been disabled * * @final since version 3.3 */ public function run($callback = null/*, array $env = array()*/) { $env = 1 < func_num_args() ? func_get_arg(1) : null; $this->start($callback, $env); return $this->wait(); } /** * Runs the process. * * This is identical to run() except that an exception is thrown if the process * exits with a non-zero exit code. * * @param callable|null $callback * @param array $env An array of additional env vars to set when running the process * * @return self * * @throws RuntimeException if PHP was compiled with --enable-sigchild and the enhanced sigchild compatibility mode is not enabled * @throws ProcessFailedException if the process didn't terminate successfully * * @final since version 3.3 */
null
null
* Executes the given command via shell and returns the complete output as * a string. * * @param string $command * * @return array(status, stdout, stderr) */ protected function executeCommand($command) { if (method_exists(Process::class, 'fromShellCommandline')) { $process = Process::fromShellCommandline($command, null, $this->env); } else { $process = new Process($command, null, $this->env); } if (false !== $this->timeout) { $process->setTimeout($this->timeout); } $process->run(); return [ $process->getExitCode(), $process->getOutput(), $process->getErrorOutput(), ]; } /** * Prepares the specified output. * * @param string $filename The output filename * @param bool $overwrite Whether to overwrite the file if it already * exist * * @throws Exception\FileAlreadyExistsException * @throws \RuntimeException * @throws \InvalidArgumentException */ protected function prepareOutput($filename, $overwrite)
if (null === $this->binary) { throw new \LogicException( 'You must define a binary prior to conversion.' ); } $this->prepareOutput($output, $overwrite); $command = $this->getCommand($input, $output, $options); $inputFiles = is_array($input) ? implode('", "', $input) : $input; $this->logger->info(sprintf('Generate from file(s) "%s" to file "%s".', $inputFiles, $output), [ 'command' => $command, 'env' => $this->env, 'timeout' => $this->timeout, ]); try { list($status, $stdout, $stderr) = $this->executeCommand($command); $this->checkProcessStatus($status, $stdout, $stderr, $command); $this->checkOutput($output, $command); } catch (\Exception $e) { // @TODO: should be replaced by \Throwable when support for php5.6 is dropped $this->logger->error(sprintf('An error happened while generating "%s".', $output), [ 'command' => $command, 'status' => isset($status) ? $status : null, 'stdout' => isset($stdout) ? $stdout : null, 'stderr' => isset($stderr) ? $stderr : null, ]); throw $e; } $this->logger->info(sprintf('File "%s" has been successfully generated.', $output), [ 'command' => $command, 'stdout' => $stdout, 'stderr' => $stderr, ]); }
"/usr/local/bin/wkhtmltopdf --lowquality --orientation 'portrait' --page-size 'a4' '/tmp/knp_snappy660667ca6b0ed0.82155683.html' '/tmp/knp_snappy660667ca6b1720.96121748.pdf'"
$fetchUrlContent = $option === 'xsl-style-sheet' && $this->isOptionUrl($value); if ($saveToTempFile || $fetchUrlContent) { $fileContent = $fetchUrlContent ? file_get_contents($value) : $value; $options[$option] = $this->createTemporaryFile($fileContent, $this->optionsWithContentCheck[$option]); } } } return $options; } /** * {@inheritdoc} */ public function generate($input, $output, array $options = [], $overwrite = false) { $options = $this->handleOptions($this->mergeOptions($options)); parent::generate($input, $output, $options, $overwrite); } /** * Convert option content or url to file if it is needed. * * @param $option * * @return bool */ protected function isOptionUrl($option) { return (bool) filter_var($option, FILTER_VALIDATE_URL); } /** * {@inheritdoc} */ protected function configure() { $this->addOptions([
array:1 [ 0 => "/tmp/knp_snappy660667ca6b0ed0.82155683.html" ]
"/tmp/knp_snappy660667ca6b1720.96121748.pdf"
array:3 [ "lowquality" => true "orientation" => "portrait" "page-size" => "a4" ]
false
$fileNames = []; if (is_array($html)) { foreach ($html as $htmlInput) { $fileNames[] = $this->createTemporaryFile($htmlInput, 'html'); } } else { $fileNames[] = $this->createTemporaryFile($html, 'html'); } $this->generate($fileNames, $output, $options, $overwrite); } /** * {@inheritdoc} */ public function getOutput($input, array $options = []) { $filename = $this->createTemporaryFile(null, $this->getDefaultExtension()); $this->generate($input, $filename, $options); $result = $this->getFileContents($filename); return $result; } /** * {@inheritdoc} */ public function getOutputFromHtml($html, array $options = []) { $fileNames = []; if (is_array($html)) { foreach ($html as $htmlInput) { $fileNames[] = $this->createTemporaryFile($htmlInput, 'html'); } } else { $fileNames[] = $this->createTemporaryFile($html, 'html'); }
array:1 [ 0 => "/tmp/knp_snappy660667ca6b0ed0.82155683.html" ]
"/tmp/knp_snappy660667ca6b1720.96121748.pdf"
array:3 [ "lowquality" => true "orientation" => "portrait" "page-size" => "a4" ]
$result = $this->getFileContents($filename); return $result; } /** * {@inheritdoc} */ public function getOutputFromHtml($html, array $options = []) { $fileNames = []; if (is_array($html)) { foreach ($html as $htmlInput) { $fileNames[] = $this->createTemporaryFile($htmlInput, 'html'); } } else { $fileNames[] = $this->createTemporaryFile($html, 'html'); } $result = $this->getOutput($fileNames, $options); return $result; } /** * Defines the binary. * * @param string $binary The path/name of the binary */ public function setBinary($binary) { $this->binary = $binary; } /** * Returns the binary. * * @return string */ public function getBinary()
array:1 [ 0 => "/tmp/knp_snappy660667ca6b0ed0.82155683.html" ]
[]
* @return $this */ public function loadView($view, $data = array(), $mergeData = array()) { $view = View::make($view, $data, $mergeData); return $this->loadHTML($view); } /** * Output the PDF as a string. * * @return string The rendered PDF as string * @throws \InvalidArgumentException */ public function output() { if ($this->html) { return $this->snappy->getOutputFromHtml($this->html, $this->options); } if ($this->file) { return $this->snappy->getOutput($this->file, $this->options); } throw new \InvalidArgumentException('PDF Generator requires a html or file in order to produce output.'); } /** * Save the PDF to a file * * @param $filename * @return $this */ public function save($filename, $overwrite = false) { if ($this->html)
""" <!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="utf-8">\n <meta http-equiv="X-UA-Compatible" content="IE=edge">\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <meta name="robots" content="noindex">\n <meta name="csrf-token" content="j1yNLeVsPxC0d0BqWJzlkelmF8zaHxQJpxW4cCGm" />\n <meta name="description" content="The Bharat Floorings Group is the leader in quality cement floorings - a reputation held for 90 years">\n <meta name="keywords" content="Bharat, Floorings,premium, quality, tiles, civil, contractors, maintenance.">\n <link href="https://fonts.googleapis.com/css?family=Roboto:400,500,700,900" rel="stylesheet">\n <!-- <link type="text/css" rel="stylesheet" href="https://bharatfloorings.com/css/website/all.css"> -->\n <title>PHULKARI - Bharat Floorings & Tiles Pvt. Ltd.</title>\n <script type="text/javascript">\n window.bft = {\n elements: false,\n };\n </script>\n <style>\n *, ::after, ::before {\n box-sizing: border-box;\n }\n body {\n overflow-x: hidden;\n font-size: 1rem;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-family: Roboto,sans-serif;\n overscroll-behavior-y: none;\n overscroll-behavior-x: none;\n }\n .container {\n width: 900px;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .col-md-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .ml-auto, .mx-auto {\n margin-left: auto!important;\n margin-right: auto!important;\n }\n .text-center {\n text-align: center!important;\n }\n .floor_share_print .logo_share {\n width: 150px;\n }\n .img-fluid {\n max-width: 100%;\n height: auto;\n }\n .floor_share_print h5 {\n border-bottom: 1px solid #000;\n padding-bottom: 7px;\n margin-bottom: 15px;\n font-size: 1.25rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n }\n .floor_share_content p {\n margin: 0;\n }\n .floor_share_print .floor {\n background: #f6f6f6;\n margin: 30px auto;\n text-align: center;\n padding: 80px;\n }\n .grid__item {\n padding: 1.25rem;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n position: relative;\n width: 100%;\n min-height: 1px;\n }\n .tile-box {\n background: #f6f6f6;\n padding: 42px 0;\n position: relative;\n text-align: center;\n clear: both;\n overflow: hidden;\n width: 290px;\n height: 290px;\n margin: auto;\n font-size: 0;\n display: inline-block;\n transition: box-shadow 1s ease-in-out;\n box-shadow: 0 0 0 0 rgba(78,84,87,.08);\n }\n .grp-tiles {\n clear: both;\n overflow: hidden;\n font-size: 0;\n text-align: center;\n max-width: 300px;\n margin: auto;\n }\n .floor .grp-tiles .single-tiles-svg {\n width: 50%;\n }\n .single-tiles-svg {\n display: inline-block;\n border-left: 1px solid #fff;\n border-bottom: 1px solid #fff;\n cursor: pointer;\n width: 50%;\n }\n .single-tiles-svg svg {\n width: 144px;\n height: 144px;\n }\n .row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .col-md-6 {\n // -ms-flex: 0 0 50%;\n // flex: 0 0 50%;\n max-width: 50%;\n width:50%;\n float:left;\n position: relative;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n }\n .floor_share_print .tiles-used-box {\n margin-bottom: 30px;\n }\n .floor_share_print .tiles-used-box h5 {\n font-size: 18px;\n line-height: 26px;\n color: #000;\n border-bottom: 1px solid #000;\n padding-bottom: 7px;\n margin-bottom: 15px;\n font-weight: 500;\n }\n .floor_share_print .tiles-used-box p {\n font-size: 18px;\n line-height: 26px;\n color: #656565;\n margin: 0;\n }\n .small, small {\n font-size: 80%;\n font-weight: 400;\n }\n .list-inline {\n padding-left: 0;\n list-style: none;\n }\n .collection-tiles .list-inline li {\n margin-top: 10px;\n width: 46%;\n }\n .list-inline-item {\n display: inline-block;\n }\n .list-inline-item:not(:last-child) {\n margin-right: .5rem;\n }\n .collection-tiles .list-inline .color-box {\n width: 20px;\n height: 20px;\n margin-right: 10px;\n vertical-align: top;\n display: inline-block;\n }\n .collection-tiles .list-inline label {\n display: inline-block;\n margin-bottom: 0;\n width: calc(100% - 35px);\n font-size: 14px;\n vertical-align: top;\n }\n .floor_share_footer {\n border-top: 1px solid #656565;\n padding: 20px;\n clear:both;\n }\n .floor_share_footer p {\n color: #656565;\n font-size: 14px;\n text-align: center;\n }\n .rotate-0 {\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n .rotate-60 {\n -webkit-transform: rotate(60deg);\n -moz-transform: rotate(60deg);\n -o-transform: rotate(60deg);\n -ms-transform: rotate(60deg);\n transform: rotate(60deg);\n }\n .rotate-90 {\n -webkit-transform: rotate(90deg);\n -moz-transform: rotate(90deg);\n -o-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n transform: rotate(90deg);\n }\n .rotate-120 {\n -webkit-transform: rotate(120deg);\n -moz-transform: rotate(120deg);\n -o-transform: rotate(120deg);\n -ms-transform: rotate(120deg);\n transform: rotate(120deg);\n }\n .rotate-180 {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n -o-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n }\n .rotate-240 {\n -webkit-transform: rotate(240deg);\n -moz-transform: rotate(240deg);\n -o-transform: rotate(240deg);\n -ms-transform: rotate(240deg);\n transform: rotate(240deg);\n }\n .rotate-270 {\n -webkit-transform: rotate(270deg);\n -moz-transform: rotate(270deg);\n -o-transform: rotate(270deg);\n -ms-transform: rotate(270deg);\n transform: rotate(270deg);\n }\n .rotate-300 {\n -webkit-transform: rotate(300deg);\n -moz-transform: rotate(300deg);\n -o-transform: rotate(300deg);\n -ms-transform: rotate(300deg);\n transform: rotate(300deg);\n }\n .floor-container {\n width: 600px;\n height: 618px;\n overflow: auto;\n margin-bottom: 30px;\n }\n .floor-tiles {\n font-size: 0;\n width: 600px;\n position: relative;\n margin: auto;\n }\n .floor-box {\n position: relative;\n height: auto;\n overflow: hidden;\n }\n .floor-box .border-tiles-content:before {\n content: "Border";\n font-size: 12px;\n position: absolute;\n color: gray;\n left: 20px;\n top: 15px;\n }\n .floor-box .indoor-tiles-content {\n position: absolute;\n top: 0px;\n margin: 50px;\n width: 500px;\n height: 500px;\n background: #fff;\n }\n .floor-tiles .indoor-tiles {\n display: inline-block;\n width: 50px;\n height: 50px;\n background: #dcdcdc;\n border-right: 1px solid #a9a9a9;\n border-bottom: 1px solid #a9a9a9;\n }\n .floor-box .indoor-hexagon-tiles-content {\n position: absolute;\n top: 0px;\n margin: 50px;\n width: 500px;\n height: 500px;\n background: #fff;\n overflow: hidden;\n }\n .floor-box .indoor-hexagon-tiles-content-even {\n position: relative;\n left: -38px;\n top: -13px;\n white-space: nowrap;\n }\n .floor-box .indoor-hexagon-tiles-content-odd {\n position: relative;\n margin-top: -27px;\n margin-left: -13px;\n white-space: nowrap;\n }\n .floor-tiles .indoor-hexagon-tiles {\n display: inline-block;\n width: 50px;\n height: 57.71px;\n margin: 1px 0.5px 0 0.5px;\n }\n .floor-tiles .indoor-hexagon-tiles-content-even .indoor-hexagon-tiles {\n margin: 0px 0.5px 0px 0.5px;\n }\n \n .floor-tiles .indoor-tiles svg,\n .floor-tiles .border-tiles svg {\n width: 100%;\n height: 100%;\n }\n .floor-tiles .border-tiles {\n background: #d2d2d2;\n display: inline-block;\n width: 50px;\n height: 50px;\n border-right: 1px solid #a9a9a9;\n border-bottom: 1px solid #a9a9a9;\n vertical-align: top;\n line-height: 50px;\n }\n .floor-tiles .not-border-tiles {\n background: #fff;\n display: inline-block;\n width: 50px;\n height: 50px;\n border-right: 1px solid #a9a9a9;\n border-bottom: 1px solid #a9a9a9;\n }\n .floor-tiles .border-tiles.vertical-ending {\n border-right: 0;\n }\n .floor-tiles .border-tiles.horizontal-ending {\n border-bottom: 0;\n }\n .single-tiles-collection-hexagon-svg {\n display: inline-block;\n border-left: 0;\n border-bottom: 0;\n cursor: pointer;\n width: 204px;\n line-height: 0;\n height: 204px;\n }\n .tiles-hexagon-pattern {\n overflow: hidden;\n height: 204px;\n }\n .tile-row {\n white-space: nowrap;\n height: 101px;\n font-size: 0;\n }\n .tile-row .tile-col {\n width: 84px;\n height: 96px;\n display: inline-block;\n }\n .tile-row .tile-col svg {\n width: 84px;\n height: 97px;\n }\n .tile-row:nth-child(odd){\n margin-left: -47px;\n margin-top: -29px;\n }\n .tile-row:nth-child(1){\n margin-top: -73px;\n }\n .tile-row:nth-child(even) {\n margin-left: -89px;\n margin-top: -29px;\n }\n .tiles-background {\n white-space: nowrap;\n height: 206px;\n font-size: 0;\n }\n .tiles-background-hexagon {\n margin-top: -54px;\n margin-left: -88px;\n height: 204px;\n }\n .tiles-background-hexagon:nth-child(even){\n margin-top: -51px;\n margin-left: 0px;\n }\n .pattern-watermark {\n position: absolute;\n top: 49%;\n left: 50%;\n /*left: 80px;*/\n -webkit-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n text-align: center;\n z-index: 1;\n opacity: 0.8;\n }\n </style>\n </head>\n <body>\n <div class="container floor_share_print">\n <div class="col-md-12 mx-auto">\n <p class="text-center">\n <a href="https://bharatfloorings.com" title="Bharat Floorings & Tiles Pvt. Ltd.">\n <img src="https://bharatfloorings.com/img/BFT_logo_name.svg" class="img-fluid logo_share" alt="Bharat Floorings & Tiles Pvt. Ltd." />\n </a>\n </p>\n <div class="floor_share_content">\n <h5>Pattern created on www.bharatfloorings.com</h5>\n <p>Pattern Name: PHULKARI</p>\n <p>Collection Name: Made in India</p>\n </div>\n <div class="floor">\n <div class="pattern-watermark">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100px" height="100px" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd"\n viewBox="0 0 100 100"\n xmlns:xlink="http://www.w3.org/1999/xlink">\n <g id="Layer_x0020_1">\n <metadata id="CorelCorpID_0Corel-Layer"/>\n <g id="_181987400">\n <path id="_181988216" fill="#ffffff" fill-rule="nonzero" d="M38.8952 88.8409l-1.03938 0.809061c-0.118111,0.0944889 -0.230317,0.103938 -0.333073,-0.01063l-0.278742 -0.307089c-0.0897645,-0.108662 -0.0354333,-0.243309 0.0342522,-0.3189l2.03269 -1.96419 0.387405 0c0.139371,0 0.261026,0.131103 0.261026,0.269293l0 9.29535c0,0.150001 -0.121655,0.284648 -0.261026,0.284648l-0.526776 0c-0.155907,0 -0.27638,-0.134647 -0.27638,-0.284648l0 -7.7729z"/>\n <path id="_181988144" fill="#ffffff" fill-rule="nonzero" d="M47.4819 91.3968c0.252758,-1.45867 -0.317719,-3.62247 -2.2949,-3.62247 -1.22245,0 -2.17679,1.05237 -2.17679,2.29962 0,1.25316 0.973236,2.26301 2.18742,2.26301 1.34647,0 2.28427,-0.940165 2.28427,-0.940165zm-3.90357 4.83311c0.649611,-0.219687 3.21617,-1.65474 3.71696,-3.6083 0,0 -0.953157,0.655517 -2.19923,0.655517 -1.63702,0 -3.11459,-1.21655 -3.11459,-3.13821 0,-1.8319 1.46458,-3.32247 3.20554,-3.32247 2.3386,0 3.37089,1.82364 3.37089,4.12208 0,3.85042 -3.30239,5.62327 -4.76579,6.20084 -0.146458,0.0543311 -0.263388,-0.0118111 -0.311813,-0.141733l-0.158269 -0.349609c-0.0779534,-0.172442 -0.02126,-0.32953 0.256301,-0.418114z"/>\n <path id="_181988072" fill="#ffffff" fill-rule="nonzero" d="M49.935 96.1862c1.18465,-1.27442 2.35986,-2.56892 3.5457,-3.83507 0.982685,-1.07245 1.46222,-1.94293 1.46222,-2.62443 0,-0.827959 -0.539768,-1.84017 -2.03033,-1.84017 -0.894102,0 -1.60277,0.60591 -2.05395,1.08544 -0.11693,0.11693 -0.27638,0.11693 -0.39331,0l-0.288191 -0.27638c-0.0897645,-0.0885834 -0.108662,-0.252758 -0.0141733,-0.370869 0,0 1.02757,-1.4197 2.74963,-1.4197 2.07167,0 3.12758,1.30867 3.12758,2.79097 0,1.27324 -0.809061,2.20986 -1.81064,3.28349 -0.930716,0.992134 -1.84962,1.99254 -2.77679,2.96459l4.25909 0c0.140552,0 0.27638,0.137009 0.27638,0.283467l0 0.387405c0,0.144096 -0.135828,0.277561 -0.27638,0.277561l-5.5028 0c-0.160631,0 -0.274018,-0.133466 -0.274018,-0.277561l0 -0.428744z"/>\n <path id="_181988000" fill="#ffffff" fill-rule="nonzero" d="M57.3796 96.1862c1.19174,-1.27442 2.3634,-2.56892 3.5516,-3.83507 0.982685,-1.07245 1.46104,-1.94293 1.46104,-2.62443 0,-0.827959 -0.538587,-1.84017 -2.02915,-1.84017 -0.897645,0 -1.60395,0.60591 -2.05986,1.08544 -0.112206,0.11693 -0.270475,0.11693 -0.390948,0l-0.28701 -0.27638c-0.0874023,-0.0885834 -0.112206,-0.252758 -0.0118111,-0.370869 0,0 1.02875,-1.4197 2.74963,-1.4197 2.06931,0 3.12758,1.30867 3.12758,2.79097 0,1.27324 -0.810243,2.20986 -1.81301,3.28349 -0.928354,0.992134 -1.8508,1.99254 -2.77797,2.96459l4.25673 0c0.145277,0 0.278742,0.137009 0.278742,0.283467l0 0.387405c0,0.144096 -0.133466,0.277561 -0.278742,0.277561l-5.49689 0c-0.161812,0 -0.279923,-0.133466 -0.279923,-0.277561l0 -0.428744z"/>\n <path id="_181987928" fill="#ffffff" fill-rule="nonzero" d="M37.0243 72.1234c0,-0.132285 0.108662,-0.251577 0.253939,-0.251577l5.2276 0c0.145277,0 0.251577,0.119292 0.251577,0.251577l0 0.390948c0,0.126379 -0.1063,0.252758 -0.251577,0.252758l-4.45988 0 0 3.2327 3.81027 0c0.134647,0 0.257482,0.118111 0.257482,0.249215l0 0.389767c0,0.14882 -0.122836,0.249215 -0.257482,0.249215l-3.81027 0 0 3.39097 4.45988 0c0.145277,0 0.251577,0.120473 0.251577,0.249215l0 0.389767c0,0.132285 -0.1063,0.249215 -0.251577,0.249215l-5.2276 0c-0.145277,0 -0.253939,-0.11693 -0.253939,-0.249215l0 -8.79456z"/>\n <path id="_181987856" fill="#ffffff" fill-rule="nonzero" d="M44.02 79.777c0.0720478,-0.0814967 0.131103,-0.175986 0.200789,-0.25512 0.132285,-0.172442 0.282286,-0.278742 0.460634,-0.119292 0.0968512,0.0791345 1.06772,1.01103 2.25002,1.01103 1.07363,0 1.77403,-0.68032 1.77403,-1.4634 0,-0.916543 -0.79725,-1.46458 -2.3197,-2.09647 -1.45631,-0.638981 -2.3386,-1.24017 -2.3386,-2.74608 0,-0.907094 0.708667,-2.36931 2.8264,-2.36931 1.31222,0 2.27364,0.676777 2.27364,0.676777 0.0755911,0.0401578 0.231498,0.199608 0.0755911,0.45709 -0.0496067,0.0685045 -0.107481,0.167718 -0.161812,0.246852 -0.115749,0.187797 -0.251577,0.243309 -0.455909,0.120473 -0.0992134,-0.05315 -0.937803,-0.617721 -1.74686,-0.617721 -1.4008,0 -1.83427,0.910637 -1.83427,1.46812 0,0.889377 0.682683,1.4008 1.79529,1.87561 1.79529,0.727565 2.94687,1.40198 2.94687,2.94569 0,1.3819 -1.31222,2.38821 -2.86538,2.38821 -1.56143,0 -2.62561,-0.917724 -2.79687,-1.07599 -0.114568,-0.0885834 -0.24449,-0.196065 -0.0838589,-0.44646z"/>\n <path id="_181987784" fill="#ffffff" fill-rule="nonzero" d="M52.739 72.7707l-2.30789 0c-0.145277,0 -0.25512,-0.129922 -0.25512,-0.256301l0 -0.392129c0,-0.131103 0.109843,-0.250396 0.25512,-0.250396l5.63154 0c0.142915,0 0.248033,0.119292 0.248033,0.250396l0 0.392129c0,0.126379 -0.105119,0.256301 -0.248033,0.256301l-2.3138 0 0 8.14731c0,0.132285 -0.115749,0.245671 -0.249215,0.245671l-0.51024 0c-0.128741,0 -0.250396,-0.113387 -0.250396,-0.245671l0 -8.14731z"/>\n <path id="_181987712" fill="#ffffff" fill-rule="nonzero" d="M59.8977 77.827c1.45277,0 2.50396,-1.06891 2.50396,-2.52049 0,-1.45159 -1.05119,-2.50159 -2.50396,-2.50159l-1.2945 0 0 5.02209 1.2945 0zm-2.29608 -5.76382c0,-0.101576 0.0755911,-0.192521 0.173623,-0.192521l2.26183 0c1.89923,0 3.45357,1.5508 3.45357,3.43585 0,1.91104 -1.55434,3.45357 -3.45357,3.45357l-2.26183 0c-0.0980323,0 -0.173623,-0.0897645 -0.173623,-0.186616l0 -6.51029z"/>\n <polygon id="_181987640" fill="#ffffff" fill-rule="nonzero" points="63.4895,81.1672 57.6005,81.1672 57.6005,80.325 63.4895,80.325 "/>\n <path id="_181987568" fill="#ffffff" fill-rule="nonzero" d="M19.3183 55.0563c0,-0.852763 -0.328349,-1.52009 -0.976779,-2.01261 -0.657879,-0.504335 -1.70671,-0.751187 -3.16184,-0.751187l-6.47722 0 0 5.59965 6.65556 0c1.23781,0 2.20159,-0.219687 2.90553,-0.676777 0.714573,-0.442917 1.05473,-1.14686 1.05473,-2.08939l0 -0.0696856zm-1.41379 -10.1835c0,-0.843314 -0.315357,-1.4882 -0.948433,-1.9382 -0.624808,-0.454728 -1.54135,-0.675596 -2.72601,-0.675596l-5.5276 0 0 5.38233 5.16618 0c1.23426,0 2.2134,-0.216143 2.94451,-0.636619 0.724021,-0.427562 1.09135,-1.11261 1.09135,-2.05986l0 -0.0720478zm6.2717 14.0044c-0.452366,0.87166 -1.08544,1.5945 -1.92521,2.17561 -0.837408,0.582288 -1.84017,1.02048 -3.00475,1.31694 -1.17402,0.290553 -2.48388,0.428744 -3.90239,0.428744l-12.0946 0 0 -25.4435 11.7993 0c2.61144,0 4.66067,0.592918 6.14887,1.78112 1.48702,1.18465 2.22758,2.78388 2.22758,4.79649l0 0.0696856c0,0.73347 -0.0791345,1.36773 -0.268112,1.92049 -0.178348,0.562209 -0.416932,1.06891 -0.716935,1.51891 -0.302365,0.448822 -0.656698,0.837408 -1.04765,1.17875 -0.394491,0.338979 -0.822054,0.630714 -1.2756,0.874023 1.47285,0.555122 2.62325,1.3134 3.46774,2.27364 0.843314,0.961425 1.26379,2.28427 1.26379,3.97798l0 0.0732289c0,1.16694 -0.222049,2.18033 -0.672053,3.0579z"/>\n <polygon id="_181987496" fill="#ffffff" fill-rule="nonzero" points="89.6688,42.5177 89.6688,62.8009 84.0656,62.8009 84.0656,42.5177 76.3293,42.5177 76.3293,37.3538 97.411,37.3538 97.411,42.5177 "/>\n <polygon id="_181986224" fill="#ffffff" fill-rule="nonzero" points="46.2488,8.07998 46.2488,13.4966 58.3823,13.4966 58.3823,18.5872 46.2488,18.5872 46.2488,28.44 40.6456,28.44 40.6456,2.99176 60.0241,2.99176 60.0241,8.07998 "/>\n <polygon id="_181986416" fill="#ffffff" fill-rule="nonzero" points="97.6874,2.99294 2.99057,97.6838 2.3138,97.0082 97.0082,2.31498 "/>\n <polygon id="_181986632" fill="#ffffff" fill-rule="nonzero" points="97.6874,97.0082 97.0082,97.685 2.3138,2.99176 2.99057,2.31734 "/>\n <polygon id="_181986656" fill="#ffffff" fill-rule="nonzero" points="53.6803,53.678 46.3197,53.678 46.3197,46.3173 53.6803,46.3173 "/>\n </g>\n </g>\n </svg>\n </div>\n <div class="col-md-12 grid__item pattern-container" data-name="Phulkari3">\n <div class="tiles-overlay">\n <div class="tiles-overlay-bg">\n <div class="tile-box" style="height: auto;">\n <div class="grp-tiles">\n <div class="single-tiles-svg top-left-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100" height="100" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(0)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#cab38a" fill-rule="nonzero" points="-0.0661418,-0.0720474 529.067,-0.0720474 529.067,529.071 -0.0661418,529.071 " class="tile-element" data-element="1"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="163.533,45.7489 134.087,45.7489 134.087,16.3075 163.533,16.3075 " class="tile-element" data-element="2" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="222.417,45.7489 192.979,45.7489 192.979,16.3075 222.417,16.3075 " class="tile-element" data-element="3" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="281.313,45.7489 251.859,45.7489 251.859,16.3075 281.313,16.3075 " class="tile-element" data-element="4" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,163.542 16.2957,163.542 16.2957,134.091 45.7501,134.091 " class="tile-element" data-element="5" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,222.429 16.2957,222.429 16.2957,192.978 45.7501,192.978 " class="tile-element" data-element="6" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,281.328 16.2957,281.328 16.2957,251.879 45.7501,251.879 " class="tile-element" data-element="7" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="104.64,45.7501 104.64,16.3087 75.1903,16.3087 45.7477,16.3087 45.7477,45.7501 16.2981,45.7501 16.2981,75.1997 16.2981,104.642 45.7477,104.642 45.7477,75.1997 75.1903,75.1997 75.1903,45.7501 " class="tile-element" data-element="8" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="104.638,75.1997 75.1879,75.1997 75.1879,104.649 104.638,104.649 " class="tile-element" data-element="9" data-connected="element_2"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="152.537,119.804 119.801,119.804 119.801,152.546 152.537,152.546 " class="tile-element" data-element="10" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="316.247,283.516 283.509,283.516 283.509,316.258 316.247,316.258 " class="tile-element" data-element="11" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="348.988,316.258 316.247,316.258 316.247,348.991 348.988,348.991 " class="tile-element" data-element="12" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="381.729,348.991 348.988,348.991 348.988,381.738 381.729,381.738 " class="tile-element" data-element="13" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="447.209,152.554 414.464,152.554 414.464,185.295 447.209,185.295 " class="tile-element" data-element="14" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="185.28,414.487 152.537,414.487 152.537,447.22 185.28,447.22 " class="tile-element" data-element="15" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="218.026,447.22 185.288,447.22 185.288,479.966 218.026,479.966 " class="tile-element" data-element="16" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="479.951,185.295 447.209,185.295 447.209,218.028 479.951,218.028 " class="tile-element" data-element="17" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="479.949,316.257 479.949,316.257 479.949,283.516 447.207,283.516 447.207,250.783 414.453,250.783 414.453,250.773 414.491,250.773 414.491,218.037 414.474,218.037 414.474,185.294 381.741,185.294 381.741,218.037 381.749,218.037 381.749,250.773 381.728,250.773 381.728,283.516 381.728,316.257 381.728,348.99 414.453,348.99 414.453,349.003 414.453,381.745 447.207,381.745 447.207,414.486 479.949,414.486 479.949,447.22 512.691,447.22 512.691,414.486 512.691,381.745 512.691,349.003 512.691,316.257 " class="tile-element" data-element="18" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="316.251,479.968 316.243,479.968 283.509,479.968 283.509,447.226 250.759,447.226 250.759,414.48 250.759,414.501 218.021,414.501 218.021,414.485 185.285,414.485 185.285,381.751 218.021,381.751 218.021,381.768 250.759,381.768 250.759,381.747 283.509,381.747 316.243,381.747 348.988,381.747 348.988,414.48 381.726,414.48 381.726,447.226 414.459,447.226 414.459,479.968 447.201,479.968 447.201,512.709 414.459,512.709 381.726,512.709 348.988,512.709 316.251,512.709 " class="tile-element" data-element="19" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="512.688,479.975 479.946,479.975 479.946,512.708 512.688,512.708 " class="tile-element" data-element="20" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="185.283,119.805 185.283,152.551 152.542,152.551 152.542,185.293 119.796,185.293 119.796,218.034 152.542,218.034 185.283,218.034 218.021,218.034 218.021,185.293 218.021,152.551 218.021,119.805 " class="tile-element" data-element="21" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="250.76,185.294 250.76,218.035 218.024,218.035 218.024,250.778 185.273,250.778 185.273,283.515 218.024,283.515 250.76,283.515 283.503,283.515 283.503,250.778 283.503,218.035 283.503,185.294 " class="tile-element" data-element="22" data-connected="element_10"></polygon> </g></svg>\n </div>\n <div class="single-tiles-svg top-right-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100" height="100" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(90)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#cab38a" fill-rule="nonzero" points="-0.0661418,-0.0720474 529.067,-0.0720474 529.067,529.071 -0.0661418,529.071 " class="tile-element" data-element="1"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="163.533,45.7489 134.087,45.7489 134.087,16.3075 163.533,16.3075 " class="tile-element" data-element="2" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="222.417,45.7489 192.979,45.7489 192.979,16.3075 222.417,16.3075 " class="tile-element" data-element="3" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="281.313,45.7489 251.859,45.7489 251.859,16.3075 281.313,16.3075 " class="tile-element" data-element="4" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,163.542 16.2957,163.542 16.2957,134.091 45.7501,134.091 " class="tile-element" data-element="5" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,222.429 16.2957,222.429 16.2957,192.978 45.7501,192.978 " class="tile-element" data-element="6" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,281.328 16.2957,281.328 16.2957,251.879 45.7501,251.879 " class="tile-element" data-element="7" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="104.64,45.7501 104.64,16.3087 75.1903,16.3087 45.7477,16.3087 45.7477,45.7501 16.2981,45.7501 16.2981,75.1997 16.2981,104.642 45.7477,104.642 45.7477,75.1997 75.1903,75.1997 75.1903,45.7501 " class="tile-element" data-element="8" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="104.638,75.1997 75.1879,75.1997 75.1879,104.649 104.638,104.649 " class="tile-element" data-element="9" data-connected="element_2"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="152.537,119.804 119.801,119.804 119.801,152.546 152.537,152.546 " class="tile-element" data-element="10" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="316.247,283.516 283.509,283.516 283.509,316.258 316.247,316.258 " class="tile-element" data-element="11" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="348.988,316.258 316.247,316.258 316.247,348.991 348.988,348.991 " class="tile-element" data-element="12" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="381.729,348.991 348.988,348.991 348.988,381.738 381.729,381.738 " class="tile-element" data-element="13" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="447.209,152.554 414.464,152.554 414.464,185.295 447.209,185.295 " class="tile-element" data-element="14" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="185.28,414.487 152.537,414.487 152.537,447.22 185.28,447.22 " class="tile-element" data-element="15" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="218.026,447.22 185.288,447.22 185.288,479.966 218.026,479.966 " class="tile-element" data-element="16" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="479.951,185.295 447.209,185.295 447.209,218.028 479.951,218.028 " class="tile-element" data-element="17" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="479.949,316.257 479.949,316.257 479.949,283.516 447.207,283.516 447.207,250.783 414.453,250.783 414.453,250.773 414.491,250.773 414.491,218.037 414.474,218.037 414.474,185.294 381.741,185.294 381.741,218.037 381.749,218.037 381.749,250.773 381.728,250.773 381.728,283.516 381.728,316.257 381.728,348.99 414.453,348.99 414.453,349.003 414.453,381.745 447.207,381.745 447.207,414.486 479.949,414.486 479.949,447.22 512.691,447.22 512.691,414.486 512.691,381.745 512.691,349.003 512.691,316.257 " class="tile-element" data-element="18" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="316.251,479.968 316.243,479.968 283.509,479.968 283.509,447.226 250.759,447.226 250.759,414.48 250.759,414.501 218.021,414.501 218.021,414.485 185.285,414.485 185.285,381.751 218.021,381.751 218.021,381.768 250.759,381.768 250.759,381.747 283.509,381.747 316.243,381.747 348.988,381.747 348.988,414.48 381.726,414.48 381.726,447.226 414.459,447.226 414.459,479.968 447.201,479.968 447.201,512.709 414.459,512.709 381.726,512.709 348.988,512.709 316.251,512.709 " class="tile-element" data-element="19" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="512.688,479.975 479.946,479.975 479.946,512.708 512.688,512.708 " class="tile-element" data-element="20" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="185.283,119.805 185.283,152.551 152.542,152.551 152.542,185.293 119.796,185.293 119.796,218.034 152.542,218.034 185.283,218.034 218.021,218.034 218.021,185.293 218.021,152.551 218.021,119.805 " class="tile-element" data-element="21" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="250.76,185.294 250.76,218.035 218.024,218.035 218.024,250.778 185.273,250.778 185.273,283.515 218.024,283.515 250.76,283.515 283.503,283.515 283.503,250.778 283.503,218.035 283.503,185.294 " class="tile-element" data-element="22" data-connected="element_10"></polygon> </g></svg>\n </div>\n <div class="single-tiles-svg bottom-left-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100" height="100" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(270)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#cab38a" fill-rule="nonzero" points="-0.0661418,-0.0720474 529.067,-0.0720474 529.067,529.071 -0.0661418,529.071 " class="tile-element" data-element="1"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="163.533,45.7489 134.087,45.7489 134.087,16.3075 163.533,16.3075 " class="tile-element" data-element="2" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="222.417,45.7489 192.979,45.7489 192.979,16.3075 222.417,16.3075 " class="tile-element" data-element="3" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="281.313,45.7489 251.859,45.7489 251.859,16.3075 281.313,16.3075 " class="tile-element" data-element="4" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,163.542 16.2957,163.542 16.2957,134.091 45.7501,134.091 " class="tile-element" data-element="5" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,222.429 16.2957,222.429 16.2957,192.978 45.7501,192.978 " class="tile-element" data-element="6" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,281.328 16.2957,281.328 16.2957,251.879 45.7501,251.879 " class="tile-element" data-element="7" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="104.64,45.7501 104.64,16.3087 75.1903,16.3087 45.7477,16.3087 45.7477,45.7501 16.2981,45.7501 16.2981,75.1997 16.2981,104.642 45.7477,104.642 45.7477,75.1997 75.1903,75.1997 75.1903,45.7501 " class="tile-element" data-element="8" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="104.638,75.1997 75.1879,75.1997 75.1879,104.649 104.638,104.649 " class="tile-element" data-element="9" data-connected="element_2"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="152.537,119.804 119.801,119.804 119.801,152.546 152.537,152.546 " class="tile-element" data-element="10" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="316.247,283.516 283.509,283.516 283.509,316.258 316.247,316.258 " class="tile-element" data-element="11" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="348.988,316.258 316.247,316.258 316.247,348.991 348.988,348.991 " class="tile-element" data-element="12" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="381.729,348.991 348.988,348.991 348.988,381.738 381.729,381.738 " class="tile-element" data-element="13" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="447.209,152.554 414.464,152.554 414.464,185.295 447.209,185.295 " class="tile-element" data-element="14" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="185.28,414.487 152.537,414.487 152.537,447.22 185.28,447.22 " class="tile-element" data-element="15" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="218.026,447.22 185.288,447.22 185.288,479.966 218.026,479.966 " class="tile-element" data-element="16" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="479.951,185.295 447.209,185.295 447.209,218.028 479.951,218.028 " class="tile-element" data-element="17" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="479.949,316.257 479.949,316.257 479.949,283.516 447.207,283.516 447.207,250.783 414.453,250.783 414.453,250.773 414.491,250.773 414.491,218.037 414.474,218.037 414.474,185.294 381.741,185.294 381.741,218.037 381.749,218.037 381.749,250.773 381.728,250.773 381.728,283.516 381.728,316.257 381.728,348.99 414.453,348.99 414.453,349.003 414.453,381.745 447.207,381.745 447.207,414.486 479.949,414.486 479.949,447.22 512.691,447.22 512.691,414.486 512.691,381.745 512.691,349.003 512.691,316.257 " class="tile-element" data-element="18" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="316.251,479.968 316.243,479.968 283.509,479.968 283.509,447.226 250.759,447.226 250.759,414.48 250.759,414.501 218.021,414.501 218.021,414.485 185.285,414.485 185.285,381.751 218.021,381.751 218.021,381.768 250.759,381.768 250.759,381.747 283.509,381.747 316.243,381.747 348.988,381.747 348.988,414.48 381.726,414.48 381.726,447.226 414.459,447.226 414.459,479.968 447.201,479.968 447.201,512.709 414.459,512.709 381.726,512.709 348.988,512.709 316.251,512.709 " class="tile-element" data-element="19" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="512.688,479.975 479.946,479.975 479.946,512.708 512.688,512.708 " class="tile-element" data-element="20" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="185.283,119.805 185.283,152.551 152.542,152.551 152.542,185.293 119.796,185.293 119.796,218.034 152.542,218.034 185.283,218.034 218.021,218.034 218.021,185.293 218.021,152.551 218.021,119.805 " class="tile-element" data-element="21" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="250.76,185.294 250.76,218.035 218.024,218.035 218.024,250.778 185.273,250.778 185.273,283.515 218.024,283.515 250.76,283.515 283.503,283.515 283.503,250.778 283.503,218.035 283.503,185.294 " class="tile-element" data-element="22" data-connected="element_10"></polygon> </g></svg>\n </div>\n <div class="single-tiles-svg bottom-right-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100" height="100" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(180)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#cab38a" fill-rule="nonzero" points="-0.0661418,-0.0720474 529.067,-0.0720474 529.067,529.071 -0.0661418,529.071 " class="tile-element" data-element="1"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="163.533,45.7489 134.087,45.7489 134.087,16.3075 163.533,16.3075 " class="tile-element" data-element="2" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="222.417,45.7489 192.979,45.7489 192.979,16.3075 222.417,16.3075 " class="tile-element" data-element="3" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="281.313,45.7489 251.859,45.7489 251.859,16.3075 281.313,16.3075 " class="tile-element" data-element="4" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,163.542 16.2957,163.542 16.2957,134.091 45.7501,134.091 " class="tile-element" data-element="5" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,222.429 16.2957,222.429 16.2957,192.978 45.7501,192.978 " class="tile-element" data-element="6" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="45.7501,281.328 16.2957,281.328 16.2957,251.879 45.7501,251.879 " class="tile-element" data-element="7" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="104.64,45.7501 104.64,16.3087 75.1903,16.3087 45.7477,16.3087 45.7477,45.7501 16.2981,45.7501 16.2981,75.1997 16.2981,104.642 45.7477,104.642 45.7477,75.1997 75.1903,75.1997 75.1903,45.7501 " class="tile-element" data-element="8" data-connected="element_2"></polygon> <polygon fill="#f7f7f7" fill-rule="nonzero" points="104.638,75.1997 75.1879,75.1997 75.1879,104.649 104.638,104.649 " class="tile-element" data-element="9" data-connected="element_2"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="152.537,119.804 119.801,119.804 119.801,152.546 152.537,152.546 " class="tile-element" data-element="10" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="316.247,283.516 283.509,283.516 283.509,316.258 316.247,316.258 " class="tile-element" data-element="11" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="348.988,316.258 316.247,316.258 316.247,348.991 348.988,348.991 " class="tile-element" data-element="12" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="381.729,348.991 348.988,348.991 348.988,381.738 381.729,381.738 " class="tile-element" data-element="13" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="447.209,152.554 414.464,152.554 414.464,185.295 447.209,185.295 " class="tile-element" data-element="14" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="185.28,414.487 152.537,414.487 152.537,447.22 185.28,447.22 " class="tile-element" data-element="15" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="218.026,447.22 185.288,447.22 185.288,479.966 218.026,479.966 " class="tile-element" data-element="16" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="479.951,185.295 447.209,185.295 447.209,218.028 479.951,218.028 " class="tile-element" data-element="17" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="479.949,316.257 479.949,316.257 479.949,283.516 447.207,283.516 447.207,250.783 414.453,250.783 414.453,250.773 414.491,250.773 414.491,218.037 414.474,218.037 414.474,185.294 381.741,185.294 381.741,218.037 381.749,218.037 381.749,250.773 381.728,250.773 381.728,283.516 381.728,316.257 381.728,348.99 414.453,348.99 414.453,349.003 414.453,381.745 447.207,381.745 447.207,414.486 479.949,414.486 479.949,447.22 512.691,447.22 512.691,414.486 512.691,381.745 512.691,349.003 512.691,316.257 " class="tile-element" data-element="18" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="316.251,479.968 316.243,479.968 283.509,479.968 283.509,447.226 250.759,447.226 250.759,414.48 250.759,414.501 218.021,414.501 218.021,414.485 185.285,414.485 185.285,381.751 218.021,381.751 218.021,381.768 250.759,381.768 250.759,381.747 283.509,381.747 316.243,381.747 348.988,381.747 348.988,414.48 381.726,414.48 381.726,447.226 414.459,447.226 414.459,479.968 447.201,479.968 447.201,512.709 414.459,512.709 381.726,512.709 348.988,512.709 316.251,512.709 " class="tile-element" data-element="19" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="512.688,479.975 479.946,479.975 479.946,512.708 512.688,512.708 " class="tile-element" data-element="20" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="185.283,119.805 185.283,152.551 152.542,152.551 152.542,185.293 119.796,185.293 119.796,218.034 152.542,218.034 185.283,218.034 218.021,218.034 218.021,185.293 218.021,152.551 218.021,119.805 " class="tile-element" data-element="21" data-connected="element_10"></polygon> <polygon fill="#f5deb5" fill-rule="nonzero" points="250.76,185.294 250.76,218.035 218.024,218.035 218.024,250.778 185.273,250.778 185.273,283.515 218.024,283.515 250.76,283.515 283.503,283.515 283.503,250.778 283.503,218.035 283.503,185.294 " class="tile-element" data-element="22" data-connected="element_10"></polygon> </g></svg>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-6">\n <div class="tiles-used-box">\n <h5>Details</h5>\n <p><small>Size: 20cm x 20cm</small></p>\n </div>\n </div>\n <div class="col-md-6">\n <div class="tiles-used-box">\n <h5>Colours Used</h5>\n <div class="collection-tiles">\n <ul class="list-inline pattern-colors-container">\n <li class="list-inline-item">\n <span class="color-box" style="background: #cab38a;"></span>\n <label>Macau</label>\n </li>\n <li class="list-inline-item">\n <span class="color-box" style="background: #f7f7f7;"></span>\n <label>White</label>\n </li>\n <li class="list-inline-item">\n <span class="color-box" style="background: #f5deb5;"></span>\n <label>Light Cream</label>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <div class="floor_share_footer">\n <p>\n Disclaimer: Colours and designs are indicative <br/>\n Please check physical sample as colours may vary\n </p>\n </div>\n </div>\n </div>\n <script type="text/javascript" src="/home/flobha/public_html/public/js/website/jquery-3.2.1.min.js"></script>\n <script type="text/javascript">\n $(document).ready(function() {\n var tiles = $('.floor').find('svg');\n \n if (tiles && tiles.length) {\n $.each($(tiles), function(idx, tile) {\n var current_rotation = $(tile).attr('transform');\n \n if (current_rotation) {\n var rotate_degree = parseInt(current_rotation.replace("rotate(", "").replace(")", ""));\n rotate_degree = (rotate_degree == 360) ? 0 : rotate_degree;\n $(tile).addClass('rotate-' + rotate_degree);\n }\n \n if (bft.elements) {\n $.each($(tile).find('polygon, path'), function(e_idx, ele) {\n if ($(ele).data("element")) {\n $.each(bft.elements, function(ele_no, color) {\n if (parseInt($(ele).data("element")) == parseInt(ele_no)) {\n $(ele).attr('fill', color);\n return false;\n }\n });\n }\n });\n }\n });\n }\n });\n </script>\n </body>\n </html>\n """
[]
{ $this->snappy->generateFromHtml($this->html, $filename, $this->options, $overwrite); } elseif ($this->file) { $this->snappy->generate($this->file, $filename, $this->options, $overwrite); } return $this; } /** * Make the PDF downloadable by the user * * @param string $filename * @return \Illuminate\Http\Response */ public function download($filename = 'document.pdf') { return new Response($this->output(), 200, array( 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'attachment; filename="'.$filename.'"' )); } /** * Return a response with the PDF to show in the browser * * @param string $filename * @return \Illuminate\Http\Response */ public function inline($filename = 'document.pdf') { return new Response($this->output(), 200, array( 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'inline; filename="'.$filename.'"', )); } /**
if ($tile) { // return view('website.pattern_pdf', compact('pattern', 'tile', 'elements', 'colors')); $proceed = true; $document_name = $tile->name; $view = View::make('website.pattern_pdf', compact('pattern', 'tile', 'elements', 'colors')); $html = $view->render(); } else { $msg = 'No such pattern found, cannot download'; } } else { $msg = 'No such pattern found, cannot download'; } if ($proceed && $html) { $pdf = PDF::loadHTML($html) ->setPaper('a4', 'portrait') ->setWarnings(false); return $pdf->download($document_name . '.pdf'); } else { return back()->with(['success' => false, 'msg' => $msg], 200); } } }
"PHULKARI.pdf"
/** * Get the middleware assigned to the controller. * * @return array */ public function getMiddleware() { return $this->middleware; } /** * Execute an action on the controller. * * @param string $method * @param array $parameters * @return \Symfony\Component\HttpFoundation\Response */ public function callAction($method, $parameters) { return call_user_func_array([$this, $method], $parameters); } /** * Handle calls to missing methods on the controller. * * @param string $method * @param array $parameters * @return mixed * * @throws \BadMethodCallException */ public function __call($method, $parameters) { throw new BadMethodCallException("Method [{$method}] does not exist on [".get_class($this).'].'); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
"534"
/** * Get the middleware assigned to the controller. * * @return array */ public function getMiddleware() { return $this->middleware; } /** * Execute an action on the controller. * * @param string $method * @param array $parameters * @return \Symfony\Component\HttpFoundation\Response */ public function callAction($method, $parameters) { return call_user_func_array([$this, $method], $parameters); } /** * Handle calls to missing methods on the controller. * * @param string $method * @param array $parameters * @return mixed * * @throws \BadMethodCallException */ public function __call($method, $parameters) { throw new BadMethodCallException("Method [{$method}] does not exist on [".get_class($this).'].'); } }
array:2 [ 0 => PatternController {#327} 1 => "downloadPattern" ]
array:2 [ 0 => Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" } "id" => "534" ]
{ $this->container = $container; } /** * Dispatch a request to a given controller and method. * * @param \Illuminate\Routing\Route $route * @param mixed $controller * @param string $method * @return mixed */ public function dispatch(Route $route, $controller, $method) { $parameters = $this->resolveClassMethodDependencies( $route->parametersWithoutNulls(), $controller, $method ); if (method_exists($controller, 'callAction')) { return $controller->callAction($method, $parameters); } return $controller->{$method}(...array_values($parameters)); } /** * Get the middleware for the controller instance. * * @param \Illuminate\Routing\Controller $controller * @param string $method * @return array */ public function getMiddleware($controller, $method) { if (! method_exists($controller, 'getMiddleware')) { return []; } return collect($controller->getMiddleware())->reject(function ($data) use ($method) { return static::methodExcludedByOptions($method, $data['options']);
"downloadPattern"
array:2 [ 0 => Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" } "id" => "534" ]
protected function runCallable() { $callable = $this->action['uses']; return $callable(...array_values($this->resolveMethodDependencies( $this->parametersWithoutNulls(), new ReflectionFunction($this->action['uses']) ))); } /** * Run the route action and return the response. * * @return mixed * * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException */ protected function runController() { return $this->controllerDispatcher()->dispatch( $this, $this->getController(), $this->getControllerMethod() ); } /** * Get the controller instance for the route. * * @return mixed */ public function getController() { if (! $this->controller) { $class = $this->parseControllerCallback()[0]; $this->controller = $this->container->make(ltrim($class, '\\')); } return $this->controller; } /**
* * @throws \UnexpectedValueException */ protected function parseAction($action) { return RouteAction::parse($this->uri, $action); } /** * Run the route action and return the response. * * @return mixed */ public function run() { $this->container = $this->container ?: new Container; try { if ($this->isControllerAction()) { return $this->runController(); } return $this->runCallable(); } catch (HttpResponseException $e) { return $e->getResponse(); } } /** * Checks whether the route's action is a controller. * * @return bool */ protected function isControllerAction() { return is_string($this->action['uses']); } /** * Run the route action and return the response.
/** * Run the given route within a Stack "onion" instance. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware) ->then(function ($request) use ($route) { return $this->prepareResponse( $request, $route->run() ); }); } /** * Gather the middleware for the given route with resolved class names. * * @param \Illuminate\Routing\Route $route * @return array */ public function gatherRouteMiddleware(Route $route) { $middleware = collect($route->gatherMiddleware())->map(function ($name) { return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); })->flatten(); return $this->sortMiddleware($middleware); } /**
use Symfony\Component\Debug\Exception\FatalThrowableError; /** * This extended pipeline catches any exceptions that occur during each slice. * * The exceptions are converted to HTTP responses for proper middleware handling. */ class Pipeline extends BasePipeline { /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { try { return $destination($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry();
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/ public function __construct(Registrar $router) { $this->router = $router; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $this->router->substituteBindings($route = $request->route()); $this->router->substituteImplicitBindings($route); return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#328 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#322 …} } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Illuminate\Session\TokenMismatchException */ public function handle($request, Closure $next) { if ( $this->isReading($request) || $this->runningUnitTests() || $this->inExceptArray($request) || $this->tokensMatch($request) ) { return $this->addCookieToResponse($request, $next($request)); } throw new TokenMismatchException; } /** * Determine if the HTTP request uses a ‘read’ verb. * * @param \Illuminate\Http\Request $request * @return bool */ protected function isReading($request) { return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']); } /** * Determine if the application is running unit tests. * * @return bool
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#413 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#328 …} : "Illuminate\Routing\Middleware\SubstituteBindings" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // If the current session has an "errors" variable bound to it, we will share // its value with all view instances so the views can easily access errors // without having to bind. An empty bag is set when there aren't errors. $this->view->share( 'errors', $request->session()->get('errors') ?: new ViewErrorBag ); // Putting the errors in the view for every view allows the developer to just // assume that some errors are always available, which is convenient since // they don't have to continually run checks for the presence of errors. return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#414 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#413 …} : "BFT\Http\Middleware\VerifyCsrfToken" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $this->sessionHandled = true; // If a session driver has been configured, we will need to start the session here // so that the data is ready for an application. Note that the Laravel sessions // do not make use of PHP "native" sessions in any way since they are crappy. if ($this->sessionConfigured()) { $request->setLaravelSession( $session = $this->startSession($request) ); $this->collectGarbage($session); } $response = $next($request); // Again, if the session has been configured we will need to close out the session // so that the attributes may be persisted to some storage medium. We will also // add the session identifier cookie to the application response headers now. if ($this->sessionConfigured()) { $this->storeCurrentUrl($request, $session); $this->addCookieToResponse($response, $session); } return $response; } /** * Perform any final actions for the request lifecycle. * * @param \Illuminate\Http\Request $request * @param \Symfony\Component\HttpFoundation\Response $response * @return void */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#415 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#414 …} : "Illuminate\View\Middleware\ShareErrorsFromSession" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Create a new CookieQueue instance. * * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookies * @return void */ public function __construct(CookieJar $cookies) { $this->cookies = $cookies; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); foreach ($this->cookies->getQueuedCookies() as $cookie) { $response->headers->setCookie($cookie); } return $response; } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#416 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#415 …} : "Illuminate\Session\Middleware\StartSession" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Disable encryption for the given cookie name(s). * * @param string|array $cookieName * @return void */ public function disableFor($cookieName) { $this->except = array_merge($this->except, (array) $cookieName); } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { return $this->encrypt($next($this->decrypt($request))); } /** * Decrypt the cookies on the request. * * @param \Symfony\Component\HttpFoundation\Request $request * @return \Symfony\Component\HttpFoundation\Request */ protected function decrypt(Request $request) { foreach ($request->cookies as $key => $c) { if ($this->isDisabled($key)) { continue; } try { $request->cookies->set($key, $this->decryptCookie($c)); } catch (DecryptException $e) { $request->cookies->set($key, null); }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#417 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#416 …} : "Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method) { $this->method = $method; return $this; } /** * Run the pipeline with a final destination callback. * * @param \Closure $destination * @return mixed */ public function then(Closure $destination) { $pipeline = array_reduce( array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination) ); return $pipeline($this->passable); } /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { return $destination($passable); }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware) ->then(function ($request) use ($route) { return $this->prepareResponse( $request, $route->run() ); }); } /** * Gather the middleware for the given route with resolved class names. * * @param \Illuminate\Routing\Route $route * @return array */ public function gatherRouteMiddleware(Route $route) { $middleware = collect($route->gatherMiddleware())->map(function ($name) { return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); })->flatten(); return $this->sortMiddleware($middleware); } /** * Sort the given middleware by priority. *
return $route; } /** * Return the response for the given route. * * @param Route $route * @param Request $request * @return mixed */ protected function runRoute(Request $request, Route $route) { $request->setRouteResolver(function () use ($route) { return $route; }); $this->events->dispatch(new Events\RouteMatched($route, $request)); return $this->prepareResponse($request, $this->runRouteWithinStack($route, $request) ); } /** * Run the given route within a Stack "onion" instance. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware)
Route {#212}
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function dispatch(Request $request) { $this->currentRequest = $request; return $this->dispatchToRoute($request); } /** * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request * @return mixed */ public function dispatchToRoute(Request $request) { return $this->runRoute($request, $this->findRoute($request)); } /** * Find the route matching a given request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Routing\Route */ protected function findRoute($request) { $this->current = $route = $this->routes->match($request); $this->container->instance(Route::class, $route); return $route; } /** * Return the response for the given route. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Route {#212}
* @return mixed */ public function respondWithRoute($name) { $route = tap($this->routes->getByName($name))->bind($this->currentRequest); return $this->runRoute($this->currentRequest, $route); } /** * Dispatch the request to the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function dispatch(Request $request) { $this->currentRequest = $request; return $this->dispatchToRoute($request); } /** * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request * @return mixed */ public function dispatchToRoute(Request $request) { return $this->runRoute($request, $this->findRoute($request)); } /** * Find the route matching a given request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Routing\Route */ protected function findRoute($request)
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @return void */ public function bootstrap() { if (! $this->app->hasBeenBootstrapped()) { $this->app->bootstrapWith($this->bootstrappers()); } } /** * Get the route dispatcher callback. * * @return \Closure */ protected function dispatchToRouter() { return function ($request) { $this->app->instance('request', $request); return $this->router->dispatch($request); }; } /** * Call the terminate method on any terminable middleware. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Response $response * @return void */ public function terminate($request, $response) { $this->terminateMiddleware($request, $response); $this->app->terminate(); } /** * Call the terminate method on any terminable middleware. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
use Symfony\Component\Debug\Exception\FatalThrowableError; /** * This extended pipeline catches any exceptions that occur during each slice. * * The exceptions are converted to HTTP responses for proper middleware handling. */ class Pipeline extends BasePipeline { /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { try { return $destination($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry();
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
{ $this->config = $config; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * * @throws \Symfony\Component\HttpKernel\Exception\HttpException * * @return mixed */ public function handle($request, Closure $next) { $this->setTrustedProxyHeaderNames($request); $this->setTrustedProxyIpAddresses($request); return $next($request); } /** * Sets the trusted proxies on the request to the value of trustedproxy.proxies * * @param \Illuminate\Http\Request $request */ protected function setTrustedProxyIpAddresses($request) { $trustedIps = $this->proxies ?: $this->config->get('trustedproxy.proxies'); // We only trust specific IP addresses if (is_array($trustedIps)) { return $this->setTrustedProxyIpAddressesToSpecificIps($request, $trustedIps); } // We trust any IP address that calls us, but not proxies further // up the forwarding chain. // TODO: Determine if this should only trust the first IP address // Currently it trusts the entire chain (array of IPs),
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#122 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#23 …} } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* The additional attributes passed to the middleware. * * @var array */ protected $attributes = []; /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, ...$attributes) { $this->attributes = $attributes; $this->clean($request); return $next($request); } /** * Clean the request's data. * * @param \Illuminate\Http\Request $request * @return void */ protected function clean($request) { $this->cleanParameterBag($request->query); if ($request->isJson()) { $this->cleanParameterBag($request->json()); } else { $this->cleanParameterBag($request->request); } } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#223 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#122 …} : "BFT\Http\Middleware\TrustProxies" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* The additional attributes passed to the middleware. * * @var array */ protected $attributes = []; /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, ...$attributes) { $this->attributes = $attributes; $this->clean($request); return $next($request); } /** * Clean the request's data. * * @param \Illuminate\Http\Request $request * @return void */ protected function clean($request) { $this->cleanParameterBag($request->query); if ($request->isJson()) { $this->cleanParameterBag($request->json()); } else { $this->cleanParameterBag($request->request); } } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#299 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#223 …} : "Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
class ValidatePostSize { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Illuminate\Http\Exceptions\PostTooLargeException */ public function handle($request, Closure $next) { $max = $this->getPostMaxSize(); if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) { throw new PostTooLargeException; } return $next($request); } /** * Determine the server 'post_max_size' as bytes. * * @return int */ protected function getPostMaxSize() { if (is_numeric($postMaxSize = ini_get('post_max_size'))) { return (int) $postMaxSize; } $metric = strtoupper(substr($postMaxSize, -1)); $postMaxSize = (int) $postMaxSize; switch ($metric) { case 'K': return $postMaxSize * 1024; case 'M':
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#300 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#299 …} : "BFT\Http\Middleware\TrimStrings" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Symfony\Component\HttpKernel\Exception\HttpException */ public function handle($request, Closure $next) { if ($this->app->isDownForMaintenance()) { $data = json_decode(file_get_contents($this->app->storagePath().'/framework/down'), true); throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']); } return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#301 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#300 …} : "Illuminate\Foundation\Http\Middleware\ValidatePostSize" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method) { $this->method = $method; return $this; } /** * Run the pipeline with a final destination callback. * * @param \Closure $destination * @return mixed */ public function then(Closure $destination) { $pipeline = array_reduce( array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination) ); return $pipeline($this->passable); } /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { return $destination($passable); }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Send the given request through the middleware / router. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ protected function sendRequestThroughRouter($request) { $this->app->instance('request', $request); Facade::clearResolvedInstance('request'); $this->bootstrap(); return (new Pipeline($this->app)) ->send($request) ->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware) ->then($this->dispatchToRouter()); } /** * Bootstrap the application for HTTP requests. * * @return void */ public function bootstrap() { if (! $this->app->hasBeenBootstrapped()) { $this->app->bootstrapWith($this->bootstrappers()); } } /** * Get the route dispatcher callback. * * @return \Closure */ protected function dispatchToRouter()
$router->middlewareGroup($key, $middleware); } foreach ($this->routeMiddleware as $key => $middleware) { $router->aliasMiddleware($key, $middleware); } } /** * Handle an incoming HTTP request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function handle($request) { try { $request->enableHttpMethodParameterOverride(); $response = $this->sendRequestThroughRouter($request); } catch (Exception $e) { $this->reportException($e); $response = $this->renderException($request, $e); } catch (Throwable $e) { $this->reportException($e = new FatalThrowableError($e)); $response = $this->renderException($request, $e); } $this->app['events']->dispatch( new Events\RequestHandled($request, $response) ); return $response; } /** * Send the given request through the middleware / router. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/ $app = require_once __DIR__.'/../bootstrap/app.php'; /* |-------------------------------------------------------------------------- | Run The Application |-------------------------------------------------------------------------- | | Once we have the application, we can handle the incoming request | through the kernel, and send the associated response back to | the client's browser allowing them to enjoy the creative | and wonderful application we have prepared for them. | */ $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); $response->send(); $kernel->terminate($request, $response);
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/534" #requestUri: "/download-pattern/534" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Key | Value |
USER | "flobha"
|
HOME | "/home/flobha"
|
SCRIPT_NAME | "/index.php"
|
REQUEST_URI | "/download-pattern/534"
|
QUERY_STRING | "" |
REQUEST_METHOD | "GET"
|
SERVER_PROTOCOL | "HTTP/1.1"
|
GATEWAY_INTERFACE | "CGI/1.1"
|
REDIRECT_URL | "/download-pattern/534"
|
REMOTE_PORT | "41562"
|
SCRIPT_FILENAME | "/home/flobha/public_html/public/index.php"
|
SERVER_ADMIN | "webmaster@bharatfloorings.com"
|
CONTEXT_DOCUMENT_ROOT | "/home/flobha/public_html/public"
|
CONTEXT_PREFIX | "" |
REQUEST_SCHEME | "https"
|
DOCUMENT_ROOT | "/home/flobha/public_html/public"
|
REMOTE_ADDR | "54.224.43.79"
|
SERVER_PORT | "443"
|
SERVER_ADDR | "95.216.37.147"
|
SERVER_NAME | "bharatfloorings.com"
|
SERVER_SOFTWARE | "Apache"
|
SERVER_SIGNATURE | "" |
PATH | "/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/opt/bin"
|
HTTP_X_HTTPS | "1"
|
HTTP_HOST | "bharatfloorings.com"
|
HTTP_USER_AGENT | "claudebot"
|
HTTP_ACCEPT | "*/*"
|
proxy-nokeepalive | "1"
|
SSL_TLS_SNI | "bharatfloorings.com"
|
HTTPS | "on"
|
SCRIPT_URI | "https://bharatfloorings.com/download-pattern/534"
|
SCRIPT_URL | "/download-pattern/534"
|
UNIQUE_ID | "ZgZnypfmwTtY3aTgtnCofQAAADk"
|
REDIRECT_STATUS | "200"
|
REDIRECT_SSL_TLS_SNI | "bharatfloorings.com"
|
REDIRECT_HTTPS | "on"
|
REDIRECT_SCRIPT_URI | "https://bharatfloorings.com/download-pattern/534"
|
REDIRECT_SCRIPT_URL | "/download-pattern/534"
|
REDIRECT_UNIQUE_ID | "ZgZnypfmwTtY3aTgtnCofQAAADk"
|
FCGI_ROLE | "RESPONDER"
|
PHP_SELF | "/index.php"
|
REQUEST_TIME_FLOAT | 1711695818.3644
|
REQUEST_TIME | 1711695818
|
argv | [] |
argc | 0
|