如何像作曲家那样在 ./app/console 中获得徽标?
How to get a logo in ./app/console like the one composer has?
我为我的 symfony2 应用程序创建了一堆命令。如果我只是 运行 控制台,我会看到相当乏味的:
$ ./app/console
Symfony version 3.0.4-DEV - app/dev/debug
如果您是 运行 作曲家,您会看到一个 ASCII 艺术徽标以及应用程序本身的名称和版本。
$composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.0.2 2016-04-21 12:30:18
他们是如何做到的?因为他们正在使用 symfony2 控制台组件。我查看了命令,但没有找到它定义的地方。
解决方案不在命令中,而是在作曲家的 Application.php
中,它只是扩展了 Symfony\Component\Console\Application
并在那里设置了徽标:
class Application extends BaseApplication
{
private static $logo = ' ______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
';
public function getHelp()
{
return self::$logo . parent::getHelp();
}
}
所以我也照做了。我已经创建了自己的
MyApplication extends Application
{
private static $name = "MyAPP";
/**
* @var string
*/
private static $logo = <<<LOGO
,:',:`,:'
__||_||_||_||__
____["""""""""""""""]____
\ " '''''''''''''''''''' |
~^~^~^^~^~^~^~^~^~^~^~~^~^~^^~~^~^~^~^
LOGO;
/**
* MyApp constructor.
* @param KernelInterface $kernel
* @param string $version
*/
public function __construct(KernelInterface $kernel, $version)
{
parent::__construct($kernel);
$this->setName(static::$name);
$this->setVersion($version);
}
/**
* @return string
*/
public function getHelp()
{
return static::$logo . parent::getHelp();
}
}
并在我的 app/console
:
中使用了它
$kernel = new AppKernel($env, $debug);
$application = new MyApplication($kernel, '1.0.2');
$application->run($input);
现在 $ ./app/console/
打印:
,:',:`,:'
__||_||_||_||__
____["""""""""""""""]____
\ " '''''''''''''''''''' |
~^~^~^^~^~^~^~^~^~^~^~~^~^~^^~~^~^~^~^
MyAPP version 1.0.2
我为我的 symfony2 应用程序创建了一堆命令。如果我只是 运行 控制台,我会看到相当乏味的:
$ ./app/console
Symfony version 3.0.4-DEV - app/dev/debug
如果您是 运行 作曲家,您会看到一个 ASCII 艺术徽标以及应用程序本身的名称和版本。
$composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.0.2 2016-04-21 12:30:18
他们是如何做到的?因为他们正在使用 symfony2 控制台组件。我查看了命令,但没有找到它定义的地方。
解决方案不在命令中,而是在作曲家的 Application.php
中,它只是扩展了 Symfony\Component\Console\Application
并在那里设置了徽标:
class Application extends BaseApplication
{
private static $logo = ' ______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
';
public function getHelp()
{
return self::$logo . parent::getHelp();
}
}
所以我也照做了。我已经创建了自己的
MyApplication extends Application
{
private static $name = "MyAPP";
/**
* @var string
*/
private static $logo = <<<LOGO
,:',:`,:'
__||_||_||_||__
____["""""""""""""""]____
\ " '''''''''''''''''''' |
~^~^~^^~^~^~^~^~^~^~^~~^~^~^^~~^~^~^~^
LOGO;
/**
* MyApp constructor.
* @param KernelInterface $kernel
* @param string $version
*/
public function __construct(KernelInterface $kernel, $version)
{
parent::__construct($kernel);
$this->setName(static::$name);
$this->setVersion($version);
}
/**
* @return string
*/
public function getHelp()
{
return static::$logo . parent::getHelp();
}
}
并在我的 app/console
:
$kernel = new AppKernel($env, $debug);
$application = new MyApplication($kernel, '1.0.2');
$application->run($input);
现在
$ ./app/console/
打印:
,:',:`,:'
__||_||_||_||__
____["""""""""""""""]____
\ " '''''''''''''''''''' |
~^~^~^^~^~^~^~^~^~^~^~~^~^~^^~~^~^~^~^
MyAPP version 1.0.2