Files
sentcms/core/library/think/console/helper/Helper.php
2016-06-21 17:12:08 +08:00

122 lines
3.2 KiB
PHP

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2015 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: yunwuxin <448901948@qq.com>
// +----------------------------------------------------------------------
namespace think\console\helper;
use think\console\helper\Set as HelperSet;
use think\console\output\Formatter;
abstract class Helper
{
protected $helperSet = null;
/**
* 设置与此助手关联的助手集。
* @param HelperSet $helperSet
*/
public function setHelperSet(HelperSet $helperSet = null)
{
$this->helperSet = $helperSet;
}
/**
* 获取与此助手关联的助手集。
* @return HelperSet
*/
public function getHelperSet()
{
return $this->helperSet;
}
/**
* 获取名称
* @return string
*/
abstract public function getName();
/**
* 返回字符串的长度
* @param string $string
* @return int
*/
public static function strlen($string)
{
if (!function_exists('mb_strwidth')) {
return strlen($string);
}
if (false === $encoding = mb_detect_encoding($string)) {
return strlen($string);
}
return mb_strwidth($string, $encoding);
}
public static function formatTime($secs)
{
static $timeFormats = [
[0, '< 1 sec'],
[2, '1 sec'],
[59, 'secs', 1],
[60, '1 min'],
[3600, 'mins', 60],
[5400, '1 hr'],
[86400, 'hrs', 3600],
[129600, '1 day'],
[604800, 'days', 86400],
];
foreach ($timeFormats as $format) {
if ($secs >= $format[0]) {
continue;
}
if (2 == count($format)) {
return $format[1];
}
return ceil($secs / $format[2]) . ' ' . $format[1];
}
return null;
}
public static function formatMemory($memory)
{
if ($memory >= 1024 * 1024 * 1024) {
return sprintf('%.1f GiB', $memory / 1024 / 1024 / 1024);
}
if ($memory >= 1024 * 1024) {
return sprintf('%.1f MiB', $memory / 1024 / 1024);
}
if ($memory >= 1024) {
return sprintf('%d KiB', $memory / 1024);
}
return sprintf('%d B', $memory);
}
public static function strlenWithoutDecoration(Formatter $formatter, $string)
{
$isDecorated = $formatter->isDecorated();
$formatter->setDecorated(false);
// remove <...> formatting
$string = $formatter->format($string);
// remove already formatted characters
$string = preg_replace("/\033\[[^m]*m/", '', $string);
$formatter->setDecorated($isDecorated);
return self::strlen($string);
}
}