Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4152975
TraceCommand.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
TraceCommand.php
View Options
<?php
/*
* This file is part of Psy Shell.
*
* (c) 2012-2023 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\Formatter\TraceFormatter
;
use
Psy\Input\FilterOptions
;
use
Psy\Output\ShellOutput
;
use
Symfony\Component\Console\Input\InputInterface
;
use
Symfony\Component\Console\Input\InputOption
;
use
Symfony\Component\Console\Output\OutputInterface
;
/**
* Show the current stack trace.
*/
class
TraceCommand
extends
Command
{
protected
$filter
;
/**
* {@inheritdoc}
*/
public
function
__construct
(
$name
=
null
)
{
$this
->
filter
=
new
FilterOptions
();
parent
::
__construct
(
$name
);
}
/**
* {@inheritdoc}
*/
protected
function
configure
()
{
list
(
$grep
,
$insensitive
,
$invert
)
=
FilterOptions
::
getOptions
();
$this
->
setName
(
'trace'
)
->
setDefinition
([
new
InputOption
(
'include-psy'
,
'p'
,
InputOption
::
VALUE_NONE
,
'Include Psy in the call stack.'
),
new
InputOption
(
'num'
,
'n'
,
InputOption
::
VALUE_REQUIRED
,
'Only include NUM lines.'
),
$grep
,
$insensitive
,
$invert
,
])
->
setDescription
(
'Show the current call stack.'
)
->
setHelp
(
<<<'HELP'
Show the current call stack.
Optionally, include PsySH in the call stack by passing the <info>--include-psy</info> option.
e.g.
<return>> trace -n10</return>
<return>> trace --include-psy</return>
HELP
);
}
/**
* {@inheritdoc}
*
* @return int 0 if everything went fine, or an exit code
*/
protected
function
execute
(
InputInterface
$input
,
OutputInterface
$output
):
int
{
$this
->
filter
->
bind
(
$input
);
$trace
=
$this
->
getBacktrace
(
new
\Exception
(),
$input
->
getOption
(
'num'
),
$input
->
getOption
(
'include-psy'
));
$output
->
page
(
$trace
,
ShellOutput
::
NUMBER_LINES
);
return
0
;
}
/**
* Get a backtrace for an exception or error.
*
* Optionally limit the number of rows to include with $count, and exclude
* Psy from the trace.
*
* @param \Throwable $e The exception or error with a backtrace
* @param int $count (default: PHP_INT_MAX)
* @param bool $includePsy (default: true)
*
* @return array Formatted stacktrace lines
*/
protected
function
getBacktrace
(
\Throwable
$e
,
?
int
$count
=
null
,
bool
$includePsy
=
true
):
array
{
return
TraceFormatter
::
formatTrace
(
$e
,
$this
->
filter
,
$count
,
$includePsy
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Aug 19 2026, 20:34 (7 w, 4 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
97/2d/3f3323105dbf0e505f69cf6036fb
Default Alt Text
TraceCommand.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment