anybody's game

日々感じたこと、艦隊これくしょん、千年戦争アイギス、読書記録

Symfonyのconsoleからカスタムコマンドを実行できるようにする【はてなブログ】PHPStormからはてなブログを使う Part.2

前回のおさらい

aods1004.hatenablog.jp

前回は、PHPStorm上にSymfonyをインストールし、Githubソースコードを管理できるようになるところまでやりました。

Synfonyのconsoleからカスタムコマンドを実行できるようにする

PHPStormからはてなブログをいろいろと操作してみる試み第二弾。今回は、独自に書いたスクリプトSymfonyから実行できるところまでがんばりたいと思います。

SymfonyのコンソールをPHPStormに設定する

PHPStormには、Composer同様、Symfonyのコンソールはパスさえ指定すれば動くようにバンドルされているので、 設定します。

f:id:aods1004:20180513122339p:plain

f:id:aods1004:20180513122408p:plain

コマンドラインツールに、s about とうつことで、環境情報が見えるようになりました。

f:id:aods1004:20180513125908p:plain

Composerのワーキングディレクトリを変更する

IDEのルートではなく、git配下でComposerを動かしたいので、PHPStormのComposerのパスに、---working-dir=<PATH_TO_WORK_DIR>を書いておきます。

C:\xampp\php\php.exe D:\documents\MyWorks\HatenaBlog\composer.phar --working-dir=D:\documents\MyWorks\HatenaBlog\phpstorm-hatenablog-client

f:id:aods1004:20180513125445p:plain

コマンドラインからスクリプトを実行できるようにする

ドキュメントを参考に、コマンドラインから独自でかいたスクリプトを実行できるようにしました。 Synfonyでは、指定のルートに配置すると自動的にサービスとして登録されて、各所で使えるようになるんですね。

symfony.com

これを、srs/Command 以下に配置。

<?php

namespace App\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

/**
 * Class FetchHatenaBlogEntriesCommand
 * @package App\Command
 */
class FetchHatenaBlogEntriesCommand extends Command
{
    protected static $defaultName = 'app:fetch-hatena-blog-entries';

    public function __construct()
    {
        parent::__construct();
    }
    /**
     * {@inheritdoc}
     */
    protected function configure()
    {
        $this
            ->setDescription('fetch HatenaBlog entries');
    }

    /**
     * @param InputInterface $input
     * @param OutputInterface $output
     * @return int|null|void
     */
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        echo 'do something.' . PHP_EOL;
    }
}

で、実行。s app:fetch-entriesコマンドラインから打ちます。

> C:\xampp\php\php.exe D:\documents\MyWorks\HatenaBlog\phpstorm-hatenablog-client\bin\console app:fetch-entries
do something.

Process finished with exit code 0 at 14:16:47.
Execution time: 4,849 ms.

「do something.」と表示できました。とりあえず、ここにいろいろと書いていきましょうか。

今回は、ここまで。次回は、HatenaBlogのAPIにアクセスするためのパスワードを設定ファイルとして配置し、スクリプト上から参照できるように頑張りたいと思います。