MediaWiki REL1_35
eval.php
Go to the documentation of this file.
1<?php
36
38
39require_once __DIR__ . "/commandLine.inc";
40
41if ( isset( $options['d'] ) ) {
42 $d = $options['d'];
43 if ( $d > 0 ) {
44 LoggerFactory::registerProvider( new ConsoleSpi );
45 // Some services hold Logger instances in object properties
46 MediaWikiServices::resetGlobalInstance();
47 }
48 if ( $d > 1 ) {
49 wfGetDB( DB_MASTER )->setFlag( DBO_DEBUG );
50 wfGetDB( DB_REPLICA )->setFlag( DBO_DEBUG );
51 }
52}
53
54$__useReadline = function_exists( 'readline_add_history' )
55 && Maintenance::posix_isatty( 0 /*STDIN*/ );
56
57if ( $__useReadline ) {
58 $__historyFile = isset( $_ENV['HOME'] ) ?
59 "{$_ENV['HOME']}/.mweval_history" : "$IP/maintenance/.mweval_history";
60 readline_read_history( $__historyFile );
61}
62
63$__e = null; // PHP exception
64while ( ( $__line = Maintenance::readconsole() ) !== false ) {
65 if ( $__e && !preg_match( '/^(exit|die);?$/', $__line ) ) {
66 // Internal state may be corrupted or fatals may occur later due
67 // to some object not being set. Don't drop out of eval in case
68 // lines were being pasted in (which would then get dumped to the shell).
69 // Instead, just absorb the remaning commands. Let "exit" through per DWIM.
70 echo "Exception was thrown before; please restart eval.php\n";
71 continue;
72 }
73 if ( $__useReadline ) {
74 readline_add_history( $__line );
75 readline_write_history( $__historyFile );
76 }
77 try {
78 $__val = eval( $__line . ";" );
79 } catch ( Exception $__e ) {
80 fwrite( STDERR, "Caught exception " . get_class( $__e ) .
81 ": {$__e->getMessage()}\n" . $__e->getTraceAsString() . "\n" );
82 continue;
83 }
84 if ( $__val === null ) {
85 echo "\n";
86 } elseif ( is_string( $__val ) || is_numeric( $__val ) ) {
87 echo "$__val\n";
88 } else {
89 var_dump( $__val );
90 }
91}
92
93print "\n";
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
static readconsole( $prompt='> ')
Prompt the console for input.
static posix_isatty( $fd)
Wrapper for posix_isatty() We default as considering stdin a tty (for nice readline methods) but trea...
PSR-3 logger instance factory.
MediaWikiServices is the service locator for the application scope of MediaWiki.
while(( $__line=Maintenance::readconsole()) !==false) print
Definition eval.php:64
if(isset( $options['d'])) $__useReadline
Definition eval.php:54
$optionsWithArgs
Definition eval.php:37
if( $__useReadline) $__e
Definition eval.php:63
const DB_REPLICA
Definition defines.php:25
const DB_MASTER
Definition defines.php:29
const DBO_DEBUG
Definition defines.php:9