<?php /** * CakePHP(tm) : Rapid Development Framework (https://cakephp.org) * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) * * Licensed under The MIT License * For full copyright and license information, please see the LICENSE.txt * Redistributions of files must retain the above copyright notice. * * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) * @link https://cakephp.org CakePHP(tm) Project * @since 3.0.0 * @license https://opensource.org/licenses/mit-license.php MIT License */ namespace App\Shell; use Cake\Console\ConsoleOptionParser; use Cake\Console\Shell; use Cake\Log\Log; use Psy\Shell as PsyShell; /** * Simple console wrapper around Psy\Shell. */ class ConsoleShell extends Shell { /** * Start the shell and interactive console. * * @return int|null */ public function main() { if (!class_exists('Psy\Shell')) { $this->err('<error>Unable to load Psy\Shell.</error>'); $this->err(''); $this->err('Make sure you have installed psysh as a dependency,'); $this->err('and that Psy\Shell is registered in your autoloader.'); $this->err(''); $this->err('If you are using composer run'); $this->err(''); $this->err('<info>$ php composer.phar require --dev psy/psysh</info>'); $this->err(''); return self::CODE_ERROR; } $this->out("You can exit with <info>`CTRL-C`</info> or <info>`exit`</info>"); $this->out(''); Log::drop('debug'); Log::drop('error'); $this->_io->setLoggers(false); restore_error_handler(); restore_exception_handler(); $psy = new PsyShell(); $psy->run(); } /** * Display help for this console. * * @return \Cake\Console\ConsoleOptionParser */ public function getOptionParser() { $parser = new ConsoleOptionParser('console'); $parser->setDescription( 'This shell provides a REPL that you can use to interact ' . 'with your application in an interactive fashion. You can use ' . 'it to run adhoc queries with your models, or experiment ' . 'and explore the features of CakePHP and your application.' . "\n\n" . 'You will need to have psysh installed for this Shell to work.' ); return $parser; } }