File Manager Lite
Dir:
/home/codewavebd/public_html/vendor/psy/psysh/src/Command
Upload
[..]
BufferCommand.php (3.2 KB)
Edit
Rename
Del
ClearCommand.php (1.11 KB)
Edit
Rename
Del
CodeArgumentParser.php (1.51 KB)
Edit
Rename
Del
Command.php (8.88 KB)
Edit
Rename
Del
Config/
Rename
Del
ConfigCommand.php (11.44 KB)
Edit
Rename
Del
CopyCommand.php (3.42 KB)
Edit
Rename
Del
EditCommand.php (7 KB)
Edit
Rename
Del
ExitCommand.php (1.14 KB)
Edit
Rename
Del
ListCommand/
Rename
Del
ListCommand.php (10.14 KB)
Edit
Rename
Del
ParseCommand.php (3.75 KB)
Edit
Rename
Del
PsyVersionCommand.php (964 B)
Edit
Rename
Del
ReflectingCommand.php (11.82 KB)
Edit
Rename
Del
ShowCommand.php (9.65 KB)
Edit
Rename
Del
SudoCommand.php (3.24 KB)
Edit
Rename
Del
ThrowUpCommand.php (3.34 KB)
Edit
Rename
Del
TimeitCommand/
Rename
Del
TimeitCommand.php (5.13 KB)
Edit
Rename
Del
TraceCommand.php (2.68 KB)
Edit
Rename
Del
WhereamiCommand.php (3.72 KB)
Edit
Rename
Del
WtfCommand.php (3.75 KB)
Edit
Rename
Del
YoloCommand.php (2.29 KB)
Edit
Rename
Del
Edit: WhereamiCommand.php
<?php /* * This file is part of Psy Shell. * * (c) 2012-2026 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Psy\Command; use Psy\ConfigPaths; use Psy\Formatter\CodeFormatter; use Psy\Shell; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * Show the context of where you opened the debugger. */ class WhereamiCommand extends Command { private array $backtrace; public function __construct() { $this->backtrace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS); parent::__construct(); } /** * {@inheritdoc} */ protected function configure(): void { $this ->setName('whereami') ->setDefinition([ new InputOption('num', 'n', InputOption::VALUE_OPTIONAL, 'Number of lines before and after.', '5'), new InputOption('file', 'f|a', InputOption::VALUE_NONE, 'Show the full source for the current file.'), ]) ->setDescription('Show where you are in the code.') ->setHelp( <<<'HELP' Show where you are in the code. Optionally, include the number of lines before and after you want to display, or --file for the whole file. e.g. <return>> whereami </return> <return>> whereami -n10</return> <return>> whereami --file</return> HELP ); } /** * Obtains the correct stack frame in the full backtrace. * * @return array */ protected function trace(): array { foreach (\array_reverse($this->backtrace) as $stackFrame) { if ($this->isDebugCall($stackFrame)) { return $stackFrame; } } return \end($this->backtrace); } private static function isDebugCall(array $stackFrame): bool { $class = isset($stackFrame['class']) ? $stackFrame['class'] : null; $function = isset($stackFrame['function']) ? $stackFrame['function'] : null; return ($class === null && $function === 'Psy\\debug') || ($class === Shell::class && \in_array($function, ['__construct', 'debug'])); } /** * Determine the file and line based on the specific backtrace. * * @return array */ protected function fileInfo(): array { $stackFrame = $this->trace(); if (\preg_match('/eval\(/', $stackFrame['file'])) { \preg_match_all('/([^\(]+)\((\d+)/', $stackFrame['file'], $matches); $file = $matches[1][0]; $line = (int) $matches[2][0]; } else { $file = $stackFrame['file']; $line = $stackFrame['line']; } return \compact('file', 'line'); } /** * {@inheritdoc} * * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output): int { $shellOutput = $this->shellOutput($output); $info = $this->fileInfo(); $num = $input->getOption('num'); $lineNum = $info['line']; $startLine = \max($lineNum - $num, 1); $endLine = $lineNum + $num; $code = \file_get_contents($info['file']); if ($input->getOption('file')) { $startLine = 1; $endLine = null; } $shellOutput->startPaging(); $output->writeln(\sprintf('From <info>%s:%s</info>:', ConfigPaths::prettyPath($info['file']), $lineNum)); $output->write(CodeFormatter::formatCode($code, $startLine, $endLine, $lineNum), false); $shellOutput->stopPaging(); return 0; } }
Simpan