MediaWiki  master
eval.php
Go to the documentation of this file.
1 <?php
36 
37 $optionsWithArgs = [ 'd' ];
38 
39 require_once __DIR__ . "/commandLine.inc";
40 
41 if ( 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 
57 if ( $__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
64 while ( ( $__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 ( is_null( $__val ) ) {
85  echo "\n";
86  } elseif ( is_string( $__val ) || is_numeric( $__val ) ) {
87  echo "$__val\n";
88  } else {
89  var_dump( $__val );
90  }
91 }
92 
93 print "\n";
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
static readconsole( $prompt='> ')
Prompt the console for input.
const DB_MASTER
Definition: defines.php:26
const DBO_DEBUG
Definition: defines.php:9
if( $__useReadline) $__e
Definition: eval.php:63
static posix_isatty( $fd)
Wrapper for posix_isatty() We default as considering stdin a tty (for nice readline methods) but trea...
if(isset( $options['d'])) $__useReadline
Definition: eval.php:54
const DB_REPLICA
Definition: defines.php:25
$optionsWithArgs
Definition: eval.php:37