Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4072763
Xdebug3Driver.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
Xdebug3Driver.php
View Options
<?php
declare
(
strict_types
=
1
);
/*
* This file is part of phpunit/php-code-coverage.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace
SebastianBergmann\CodeCoverage\Driver
;
use
const
XDEBUG_CC_BRANCH_CHECK
;
use
const
XDEBUG_CC_DEAD_CODE
;
use
const
XDEBUG_CC_UNUSED
;
use
const
XDEBUG_FILTER_CODE_COVERAGE
;
use
const
XDEBUG_PATH_INCLUDE
;
use
function
explode
;
use
function
extension_loaded
;
use
function
getenv
;
use
function
in_array
;
use
function
ini_get
;
use
function
phpversion
;
use
function
sprintf
;
use
function
version_compare
;
use
function
xdebug_get_code_coverage
;
use
function
xdebug_set_filter
;
use
function
xdebug_start_code_coverage
;
use
function
xdebug_stop_code_coverage
;
use
SebastianBergmann\CodeCoverage\Filter
;
use
SebastianBergmann\CodeCoverage\RawCodeCoverageData
;
/**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final
class
Xdebug3Driver
extends
Driver
{
/**
* @throws WrongXdebugVersionException
* @throws Xdebug3NotEnabledException
* @throws XdebugNotAvailableException
*/
public
function
__construct
(
Filter
$filter
)
{
if
(!
extension_loaded
(
'xdebug'
))
{
throw
new
XdebugNotAvailableException
;
}
if
(
version_compare
(
phpversion
(
'xdebug'
),
'3'
,
'<'
))
{
throw
new
WrongXdebugVersionException
(
sprintf
(
'This driver requires Xdebug 3 but version %s is loaded'
,
phpversion
(
'xdebug'
)
)
);
}
$mode
=
getenv
(
'XDEBUG_MODE'
);
if
(
$mode
===
false
||
$mode
===
''
)
{
$mode
=
ini_get
(
'xdebug.mode'
);
}
if
(
$mode
===
false
||
!
in_array
(
'coverage'
,
explode
(
','
,
$mode
),
true
))
{
throw
new
Xdebug3NotEnabledException
;
}
if
(!
$filter
->
isEmpty
())
{
xdebug_set_filter
(
XDEBUG_FILTER_CODE_COVERAGE
,
XDEBUG_PATH_INCLUDE
,
$filter
->
files
()
);
}
}
public
function
canCollectBranchAndPathCoverage
():
bool
{
return
true
;
}
public
function
canDetectDeadCode
():
bool
{
return
true
;
}
public
function
start
():
void
{
$flags
=
XDEBUG_CC_UNUSED
;
if
(
$this
->
detectsDeadCode
()
||
$this
->
collectsBranchAndPathCoverage
())
{
$flags
|=
XDEBUG_CC_DEAD_CODE
;
}
if
(
$this
->
collectsBranchAndPathCoverage
())
{
$flags
|=
XDEBUG_CC_BRANCH_CHECK
;
}
xdebug_start_code_coverage
(
$flags
);
}
public
function
stop
():
RawCodeCoverageData
{
$data
=
xdebug_get_code_coverage
();
xdebug_stop_code_coverage
();
if
(
$this
->
collectsBranchAndPathCoverage
())
{
return
RawCodeCoverageData
::
fromXdebugWithPathCoverage
(
$data
);
}
return
RawCodeCoverageData
::
fromXdebugWithoutPathCoverage
(
$data
);
}
public
function
nameAndVersion
():
string
{
return
'Xdebug '
.
phpversion
(
'xdebug'
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Aug 17 2026, 08:43 (11 w, 2 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
57/3a/ebda9d50f4772f6566029dabf5aa
Default Alt Text
Xdebug3Driver.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment