PHP 初心者が WordPress の プラグイン 作成 ! part44 ( コードを整理 01 )

この記事では PHP 初心者 が WordPress プラグイン を 作成 します。 part44 では今までのコードを少し整理してみます。

前回ついにヘッドレスブラウザを用いてココナラのブログに投稿することに成功しました。

PHP 初心者が WordPress の プラグイン 作成 ! part43 ( ヘッドレスブラウザでココナラのブログを投稿成功!)

ひと段落

とりあえず投稿ができたのでひと段落です😄
このまま次の実装にすすんでもいいかと思うのですが惰性で実装してきたのでコードがなかなか読みにくい状態になってきています。
ここらでもう少し処理をコンパクトにまとめてみようと思います。

こういった作業を「リファクタリング」というんでしょうかね。

流れ

実装の大きな流れとしてを記述しました。

  1. ヘッドレスブラウザをインスタンス化
  2. ココナラのページに遷移
  3. ヘッドレスブラウザでJavaScriptを実行
  4. デバッグ用スクリーンショット
  5. 3と4を何回か実行
  6. おしまい

日本語にするとあまり複雑なことはしていませんね😅

クラスを作る

現在、全ての処理をindex.phpで処理しています。
これまずやめようと思います。
読みにくいですし何より後で修正が大変です。
またココナラブログ投稿の部分だけ他の機能に組み込むときにindex.phpの関係ない部分まで確認しながら移行しなければならなくなってしまいます。

ココナラ専用のヘルパークラスを作成

今回はココナラに関係する処理を行うココナラヘルパークラス「class.coconara-helper.php」を作成します。
PHPでのファイルの命名規則はこれでいいのかしら?
あとで変更できるしこれでいいということにしておきます。

VSコードの左ペイン、エクスプローラーのウィンドウで何もないところを右クリックします。

「新しいファイル」をクリック。

 

「class.coconara-helper.php」と入力してエンターキーで確定します。

これでファイルの作成は完了です。
index.phpと同じ階層に作成されたことを確認しておきましょう。

これからPHPにおけるクラスの作成に取り組みます!

実装する

まずはコンストラクタでブラウザの生成をしておきたいですねぇ🤔

いろんなところで有名な とほほ さんのページにクラスの作成方法がありましたのでこれをお手本に記述してみたいと思います。
PHP入門 – クラス – とほほのWWW入門 (tohoho-web.com)

<?php
// autoloadを読み込む
require 'vendor/autoload.php';

use HeadlessChromium\BrowserFactory;
use HeadlessChromium\Page;

use HeadlessChromium\Exception\OperationTimedOut;
use HeadlessChromium\Exception\NavigationExpired;

class MyClass {
    // ヘッドレスブラウザ
    
    private $browser;
    function __construct() {
        // whereis chromiumでパスを探した
        $browserFactory = new BrowserFactory('/usr/bin/chromium');

        // for Docker option
        $options = [
            'headless' => true,
            'noSandbox' => true ,
            'sendSyncDefaultTimeout' => 100000,
            'windowSize'      => [1920, 1000],
            'userAgent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
            'enableImages'    => false,
        ];

        // starts headless chrome
        $this->browser = $browserFactory->createBrowser($options);

    }
}

 

見よう見まねで作ってみました。
PHPでのコンストラクタは__construct()と記載するということです。
またオブジェクト変数は$xxxxで記述し、使用する際は$this -> xxxxとするようです。
1行目の<?phpも必要なようです。

ヘッドレスブラウザのオブジェクトだけフィールドに定義し、コンストラクタでヘッドレスブラウザの準備をするようにしました。
実装はindex.phpで実装したものとあまり変化はありません。

index.phpでの該当部分

// autoloadを読み込む
require 'vendor/autoload.php';

use HeadlessChromium\BrowserFactory;
use HeadlessChromium\Page;

use HeadlessChromium\Exception\OperationTimedOut;
use HeadlessChromium\Exception\NavigationExpired;

// whereis chromiumでパスを探した
$browserFactory = new BrowserFactory('/usr/bin/chromium');

// for Docker option
$options = [
    'headless' => true,
    'noSandbox' => true ,
    'sendSyncDefaultTimeout' => 100000,
    'windowSize'      => [1920, 1000],
    'userAgent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
    'enableImages'    => false,
];

// starts headless chrome
$browser = $browserFactory->createBrowser($options);

ひとまずここまでにしておきます。
動作確認したいところですがもう少し実装してからにすることにしました。

まとめ

コードの整理を行うため、ココナラのヘルパークラスを作成しました。

コンストラクタにヘッドレスブラウザの準備処理を実装してあります。
次回は画面遷移のことやJavaScript実行部分をココナラのヘルパークラスに持ってきたいと思います。

今日はここまで!