Manual:Shell.php/fr

shell.php est un script de maintenance se trouvant dans le répertoire  ; il fournit le shell REPL (read–eval–print loop) que vous pouvez utiliser pour tester en mode réel, les objets MediaWiki ou les fonctions. Il est basé sur PsySH; il remplace qui est moins robuste et possède moins de fonctionnalités.

En plus de la possibilité d'évaluer les instructions PHP, la fonctionnalité comprend la gestion des erreurs et des fautes d'une manière qui ne casse pas le shell, en examinant les variables internes des objets, le code source et la documentation par réflexion, l'intégration d'un éditeur externe et davantage encore.

Utilisation
Mode interactif :

Execution des commandes PHP à partir d'un fichier :

Exemples


Exécution des commandes et gestion des erreurs
 $ php maintenance/shell.php Psy Shell v0.8.5 (PHP 5.6.30-0+deb8u1 — cli) by Justin Hileman

>>> User::newFromName('Foo') => User {#1075 +mId: null, +mName: "Foo", +mRealName: null, +mEmail: null, +mTouched: null, +mEmailAuthenticated: null, +mOptionsLoaded: false, +mFrom: "name", +mBlockedby: -1, +mRights: null, +mHideName: null, +mOptions: null, +mBlock: null, }

>>> $_->mQuickTouched PHP Error: Cannot access protected property User::$mQuickTouched in Psy Shell code on line 2

>>> sudo $_->mQuickTouched => null

>>> User::newFromName( true ) InvalidArgumentException with message '$text must be a string.'

>>> wtf InvalidArgumentException with message '$text must be a string.' -- 0:  at includes/Title.php:283 1: Title::newFromText at includes/user/User.php:1255 2: User::getCanonicalName at includes/user/User.php:588

Use wtf -a to see 10 more lines

Réflexion
 >>> ls Message Class Constants: FORMAT_BLOCK_PARSE, FORMAT_ESCAPED, FORMAT_PARSE, FORMAT_PLAIN, FORMAT_TEXT Class Methods: __construct, __toString, bitrateParam, bitrateParams, content, durationParam, durationParams, escaped, exists, expiryParam, expiryParams, getFormat, getKey, getKeysToTry, getLanguage, getParams, getTitle, inContentLanguage, inLanguage, isBlank, isDisabled, isMultiKey, listParam, newFallbackSequence, newFromKey, newFromSpecifier, numParam, numParams, params, parse, parseAsBlock, plain, plaintextParam, plaintextParams, rawParam, rawParams, serialize, setContext, setInterfaceMessageFlag, sizeParam, sizeParams, text, timeperiodParam, timeperiodParams, title, toString, unserialize, useDatabase

>>> doc Message::setContext public function setContext(IContextSource $context)

Description: Set the language and the title from a context object

Param: IContextSource $context

Return: Message $this

Since: 1.19

>>> show Message::setContext > 724|       public function setContext( IContextSource $context ) { 725|               $this->inLanguage( $context->getLanguage ); 726|               $this->title( $context->getTitle ); 727|               $this->interface = true; 728|    729|                return $this; 730|       }



Sortie de débogage
 $ php maintenance/shell.php --log-all --dbo-debug [debug] [DBReplication] Wikimedia\Rdbms\LBFactory::getChronologyProtector: using request info { "IPAddress": "", "UserAgent": "", "ChronologyProtection": "true" } [debug] [DBConnection] Wikimedia\Rdbms\LoadBalancer::openConnection: calling initLB before first connection. [debug] [DBConnection] Connected to database 0 at '127.0.0.1'. [debug] [DBQuery] wiki SHOW /* Wikimedia\Rdbms\DatabaseMysqlBase::serverIsReadOnly */ GLOBAL VARIABLES LIKE 'read_only' [debug] [DBQuery] SHOW GLOBAL VARIABLES LIKE 'read_only' Psy Shell v0.8.5 (PHP 5.6.30-0+deb8u1 — cli) by Justin Hileman

>>> wfMessage("Recentchanges")->text [debug] [CryptRand] mcrypt_create_iv generated 20 bytes of randomness. [debug] [CryptRand] 0 bytes of randomness leftover in the buffer. [info] [MessageCache] MessageCache::load: Loading en... local cache is empty, got from global cache => "Recent changes"



Intégration de Editline
PsySH peut s'intégrer avec readline ou editline (PHP est habituellement fourni avec ce dernier).

Un exemple de  pour la recherche dans l'historique :

