本文整理汇总了PHP中Cli类的典型用法代码示例。如果您正苦于以下问题:PHP Cli类的具体用法?PHP Cli怎么用?PHP Cli使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Cli类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: render_cli_error
private function render_cli_error($heading, array $messages, $traces = [])
{
$cli = new Cli();
$cli->error(sprintf('<underline><bold>%s</bold></underline>', $heading));
foreach ($messages as $label => $message) {
$cli->error(sprintf('%s : <bold>%s</bold>', $label, $message));
}
if ($traces) {
$cli->br()->error('<underline><bold>Backtrace</bold></underline>');
$i = 1;
foreach ($traces as $error) {
$line = isset($error['line']) ? $error['line'] : 'Unknown';
if (isset($error['file'])) {
$console->out(' ' . $i . ') ' . str_replace(FCPATH, './', $error['file']) . ':' . $line);
} else {
$i--;
}
$func = '';
if (isset($error['class'], $error['type'])) {
$func .= $error['class'] . $error['type'];
}
$func .= $error['function'];
$console->error(' ' . $func . '()');
$i++;
}
}
}
示例2: shoulLoadCliCommand
/** @test */
public function shoulLoadCliCommand()
{
$kernel = $this->mockFactory->getKernelMock(array('log'));
$cli = new Cli($kernel);
$kernel->expects($this->at(2))->method('log')->with($this->stringContains('Done'));
$cli->handle(array('c' => 'widget.WithCli.simple'));
}
示例3: main
/**
* Main method.
*/
public static function main()
{
list($command, $arguments, $config) = self::preProcess();
$migration = new Migration($config);
try {
$cli = new Cli();
$cli->execute($migration, $command, $arguments, $config);
} catch (\Exception $e) {
$debug = $migration->getConfig()->get('debug');
$colors = $migration->getConfig()->get('colors');
if (isset($debug) && $debug) {
if ($colors) {
fputs(STDERR, pack('c', 0x1b) . "[1;37;41m" . $e . pack('c', 0x1b) . "[0m\n");
} else {
fputs(STDERR, $e);
}
} else {
if ($colors) {
fputs(STDERR, pack('c', 0x1b) . "[1;37;41m" . $e->getMessage() . pack('c', 0x1b) . "[0m\n");
} else {
fputs(STDERR, $e->getMessage() . "\n");
}
}
}
}
示例4: testRun
/**
* @return void
* @covers \pFlow\Cli<extended>
* @group pflow
* @group unittest
*/
public function testRun()
{
$_SERVER['argv'] = array('pflow', '--recursive', 'some_path');
$analyzerMock = $this->getMock('\\pFlow\\AnalyzerInterface');
$analyzerMock->expects($this->once())->method('setSources')->with($this->equalTo(array('some_path')), $this->isTrue());
$cli = new Cli($analyzerMock, new \ezcConsoleInput());
$cli->run();
}
示例5: testException
/**
* @expectedException RuntimeException
*/
public function testException()
{
$cli = new Cli();
$cli->setTempDir(sys_get_temp_dir());
$cli->setLogger($this->getMockBuilder('Monolog\\Logger')->disableOriginalConstructor()->getMock());
$code = Code::fromString('throw new \\Exception("test");');
$result = $cli->run($code);
}
示例6: show_php_error
public static function show_php_error(\Exception $e)
{
$data['type'] = get_class($e);
$data['severity'] = $e->getCode();
$data['message'] = $e->getMessage();
$data['filepath'] = $e->getFile();
$data['error_line'] = $e->getLine();
$data['backtrace'] = $e->getTrace();
$data['severity'] = !isset(static::$levels[$data['severity']]) ? $data['severity'] : static::$levels[$data['severity']];
if (\Fuel::$is_cli) {
\Cli::write(\Cli::color($data['severity'] . ' - ' . $data['message'] . ' in ' . \Fuel::clean_path($data['filepath']) . ' on line ' . $data['error_line'], 'red'));
return;
}
$debug_lines = array();
foreach ($data['backtrace'] as $key => $trace) {
if (!isset($trace['file'])) {
unset($data['backtrace'][$key]);
} elseif ($trace['file'] == COREPATH . 'classes/error.php') {
unset($data['backtrace'][$key]);
}
}
$debug_lines = array('file' => $data['filepath'], 'line' => $data['error_line']);
$data['severity'] = !isset(static::$levels[$data['severity']]) ? $data['severity'] : static::$levels[$data['severity']];
$data['debug_lines'] = \Debug::file_lines($debug_lines['file'], $debug_lines['line']);
$data['filepath'] = \Fuel::clean_path($debug_lines['file']);
$data['filepath'] = str_replace("\\", "/", $data['filepath']);
$data['error_line'] = $debug_lines['line'];
echo \View::factory('errors' . DS . 'php_error', $data);
}
示例7: init
public static function init($args)
{
try {
if (!isset($args[1])) {
static::help();
return;
}
switch ($args[1]) {
case 'g':
case 'generate':
switch ($args[2]) {
case 'controller':
case 'model':
case 'view':
case 'views':
case 'migration':
call_user_func('Oil\\Generate::' . $args[2], array_slice($args, 3));
break;
case 'scaffold':
call_user_func('Oil\\Scaffold::generate', array_slice($args, 3));
break;
default:
Generate::help();
}
break;
case 'c':
case 'console':
new Console();
case 'r':
case 'refine':
$task = isset($args[2]) ? $args[2] : null;
call_user_func('Oil\\Refine::run', $task, array_slice($args, 3));
break;
case 'p':
case 'package':
switch ($args[2]) {
case 'install':
case 'uninstall':
call_user_func_array('Oil\\Package::' . $args[2], array_slice($args, 3));
break;
default:
Package::help();
}
break;
case '-v':
case '--version':
\Cli::write('Fuel: ' . \Fuel::VERSION);
break;
case 'test':
\Fuel::add_package('octane');
call_user_func('\\Fuel\\Octane\\Tests::run_' . $args[2], array_slice($args, 3));
break;
default:
static::help();
}
} catch (Exception $e) {
\Cli::write(\Cli::color('Error: ' . $e->getMessage(), 'light_red'));
\Cli::beep();
}
}
示例8: __construct
/**
* ChallengeAbstract constructor.
*/
public function __construct()
{
if (!Cli::isCli()) {
throw new \DomainException('This challenge is supposed to be run from cli');
}
$this->solve();
}
示例9: run
/**
* Run the credential importer
*
* @param string $json_file The JSON file that contains a list of the APIs and their credentials
*/
public static function run($json_file = null)
{
if (empty($json_file) || file_exists($json_file) === false) {
exit('You must specify a valid JSON file that contains your credentials.' . PHP_EOL);
}
if (($json = json_decode(file_get_contents($json_file), true)) === null) {
exit('The JSON file does not contain valid JSON text.' . PHP_EOL);
}
// Find the API version to use for importing the keys
$version = 'V1';
if (!empty($json[0]['version'])) {
if (is_int($json[0]['version']) && \Module::exists('V' . $json[0]['version'])) {
\Module::load('V' . $json[0]['version']);
$version = 'V' . $json[0]['version'];
} else {
\Module::load($version);
}
array_shift($json);
} else {
\Module::load($version);
}
$error = false;
foreach ($json as $entry) {
// We need these keys for each entry.
if (!array_key_exists('api', $entry) || !array_key_exists('credentials', $entry)) {
echo \Cli::color('The JSON data is in the wrong format. Skipping.' . PHP_EOL, 'yellow');
$error = true;
continue;
}
if (!is_string($entry['api'])) {
echo \Cli::color('The API name must be a string. Skipping.' . PHP_EOL, 'yellow');
$error = true;
continue;
}
// Make sure that we have credentials to add to the DB.
if (empty($entry['credentials']) || !is_array($entry['credentials'])) {
echo \Cli::color('The array of credentials for ' . $entry['api'] . ' is empty. Skipping.' . PHP_EOL, 'yellow');
$error = true;
continue;
}
$response = call_user_func('\\' . $version . '\\Keyring::set_credentials', $entry['credentials'], $entry['api']);
// Show and log the result
if ($response === true) {
$success_text = 'Successfully imported the credentials for API: ' . $entry['api'];
echo \Cli::color($success_text . PHP_EOL, 'green');
\Log::logger('INFO', 'CLI:ADD_CREDENTIALS', $success_text, __METHOD__, array('api' => $entry['api']));
} else {
$error_text = 'Failed to import the credentials for API: ' . $entry['api'];
echo \Cli::color('Warning: ' . $error_text . PHP_EOL, 'red');
$error = true;
\Log::logger('ERROR', 'CLI:ADD_CREDENTIALS', $error_text, __METHOD__, array('api' => $entry['api']));
}
}
// Display the summary.
if ($error === true) {
echo \Cli::color(PHP_EOL . 'Some credentials were not added to the database. See the error log for more details.' . PHP_EOL, 'red');
} else {
echo \Cli::color(PHP_EOL . 'All credentials were successfully added to the database.' . PHP_EOL, 'green');
}
}
示例10: receive_sqs_for_multi
public static function receive_sqs_for_multi()
{
$t1 = microtime(true);
$pcount = 3;
$pstack = array();
for ($i = 1; $i <= $pcount; $i++) {
$pid = pcntl_fork();
if ($pid == -1) {
die('fork できません');
} else {
if ($pid) {
// 親プロセスの場合
$pstack[$pid] = true;
if (count($pstack) >= $pcount) {
unset($pstack[pcntl_waitpid(-1, $status, WUNTRACED)]);
}
} else {
sleep(1);
self::receive_sqs_message();
exit;
//処理が終わったらexitする。
}
}
}
//先に処理が進んでしまうので待つ
while (count($pstack) > 0) {
unset($pstack[pcntl_waitpid(-1, $status, WUNTRACED)]);
}
$t2 = microtime(true);
$process_time = $t2 - $t1;
\Cli::write("Process time = " . $process_time);
}
示例11: monitor
public function monitor($file, $channel)
{
if (false === ($fp = @fopen($file, "r"))) {
Cli::error("Failed to open {$file}");
} else {
Cli::out("Monitoring file: {$file}");
}
while (1) {
if (-1 === fseek($fp, 0, SEEK_END) or !($pos = ftell($fp))) {
goto retry;
}
if ($this->lastPosition === null or $this->lastPosition > $pos) {
$this->lastPosition = $pos;
goto retry;
}
if ($this->lastPosition < $pos) {
fseek($fp, $this->lastPosition - $pos, SEEK_CUR);
if (false === ($content = fread($fp, $pos - $this->lastPosition))) {
goto retry;
}
try {
$this->client->send($content, $channel);
} catch (\Exception $ex) {
Cli::error($ex->getMessage());
}
$this->lastPosition = $pos;
}
retry:
usleep(200000);
}
}
示例12: run
public static function run($task, $args)
{
// Make sure something is set
if ($task === null or $task === 'help') {
static::help();
return;
}
// Just call and run() or did they have a specific method in mind?
list($task, $method) = array_pad(explode(':', $task), 2, 'run');
$task = ucfirst(strtolower($task));
// Find the task
if (!($file = \Fuel::find_file('tasks', $task))) {
throw new Exception(sprintf('Task "%s" does not exist.', $task));
return;
}
require $file;
$task = '\\Fuel\\Tasks\\' . $task;
$new_task = new $task();
// The help option hs been called, so call help instead
if (\Cli::option('help') && is_callable(array($new_task, 'help'))) {
$method = 'help';
}
if ($return = call_user_func_array(array($new_task, $method), $args)) {
\Cli::write($return);
}
}
示例13: exitWithFailedRequest
/**
* @param string $msg A message to display before exiting
*
* @author Panagiotis Vagenas <pan.vagenas@gmail.com>
* @since 0-dev
*/
public static function exitWithFailedRequest($msg = '')
{
if ($msg) {
Cli::writeError($msg);
}
self::exitWith(self::EXIT_CODE_VALID_REQUEST_FAILED);
}
示例14: test_spawn_speed
public function test_spawn_speed()
{
$start = time();
\Cli::spawn('sleep 2');
$stop = time();
$this->assertEquals($start, $stop);
}
示例15: uri
/**
* Detects and returns the current URI based on a number of different server
* variables.
*
* @return string
*/
public static function uri()
{
if (static::$detected_uri !== null) {
return static::$detected_uri;
}
if (\Fuel::$is_cli) {
if ($uri = \Cli::option('uri') !== null) {
static::$detected_uri = $uri;
} else {
static::$detected_uri = \Cli::option(1);
}
return static::$detected_uri;
}
// We want to use PATH_INFO if we can.
if (!empty($_SERVER['PATH_INFO'])) {
$uri = $_SERVER['PATH_INFO'];
} elseif (!empty($_SERVER['ORIG_PATH_INFO']) and ($path = str_replace($_SERVER['SCRIPT_NAME'], '', $_SERVER['ORIG_PATH_INFO'])) != '') {
$uri = $path;
} else {
// Fall back to parsing the REQUEST URI
if (isset($_SERVER['REQUEST_URI'])) {
$uri = $_SERVER['REQUEST_URI'];
} else {
throw new \FuelException('Unable to detect the URI.');
}
// Remove the base URL from the URI
$base_url = parse_url(\Config::get('base_url'), PHP_URL_PATH);
if ($uri != '' and strncmp($uri, $base_url, strlen($base_url)) === 0) {
$uri = substr($uri, strlen($base_url));
}
// If we are using an index file (not mod_rewrite) then remove it
$index_file = \Config::get('index_file');
if ($index_file and strncmp($uri, $index_file, strlen($index_file)) === 0) {
$uri = substr($uri, strlen($index_file));
}
// When index.php? is used and the config is set wrong, lets just
// be nice and help them out.
if ($index_file and strncmp($uri, '?/', 2) === 0) {
$uri = substr($uri, 1);
}
// Lets split the URI up in case it contains a ?. This would
// indicate the server requires 'index.php?' and that mod_rewrite
// is not being used.
preg_match('#(.*?)\\?(.*)#i', $uri, $matches);
// If there are matches then lets set set everything correctly
if (!empty($matches)) {
$uri = $matches[1];
$_SERVER['QUERY_STRING'] = $matches[2];
parse_str($matches[2], $_GET);
}
}
// Strip the defined url suffix from the uri if needed
if (strpos($uri, '.') !== false) {
static::$detected_ext = preg_replace('#(.*)\\.#', '', $uri);
$uri = substr($uri, 0, -(strlen(static::$detected_ext) + 1));
}
// Do some final clean up of the uri
static::$detected_uri = \Security::clean_uri($uri, true);
return static::$detected_uri;
}