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

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

前回はPHPでココナラのヘルパークラスの作成に取り組みました。
そしてヘッドレスブラウザの準備をコンストラクタに準備しました。

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

現在の実装

ヘルパークラスの実装は現在以下のようになっています。
※前回、クラス名をちゃんと定義していませんでしたが今回はきちんと決めました。

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

use HeadlessChromium\BrowserFactory;
use HeadlessChromium\Page;

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

class Coconara_Helper {
    // ヘッドレスブラウザ
    
    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でも名前空間を使用できるようです。

PHP: FAQ: 名前空間について知っておくべきこと – Manual

C#でもおなじみですしJavaではパッケージと呼んでいましたね。
名前空間はほかのクラスや機能のクラス名との重複を防いだりすることができる優れものです。
その他にも効果はあったりします。

PHPのnamespaceは「\(Linuxではバックスラッシュ)」で区切るようです。
「com\ik-genety\plugin\coconara」にしようと思ったのですがどうやらハイフンは使用できないようなのでアンダースコアに置き換えて実装しました。

class.coconara-helper.php

namespace com\ik_genety\plugin\coconara;

 

作ったクラスをindex.phpで使用するには

作成したヘルパークラスをindex.phpで使用するには以下のように記述するようです。

【PHP超入門】名前空間(namespace・use)について – Qiita

私の実装スタイルにしっくりくる記述方法にしました😄

index.php

<?php
require_once 'class.coconara-helper.php';

// クラスをまとめてインポート(PHP7.0.0から)
use com\ik_genety\plugin\coconara\{Coconara_Helper};

$coconara = new Coconara_Helper();

こんな感じでいいのかしら?

まとめ

ヘッドレスブラウザの実装の整理を行いました。
namespaceとindex.phpからの呼び出しの実装を行いました。

調べながら実装すると時間かかってしまいますね😅
でもVue.jsの調査よりははるかに楽です(笑
ほんとに動くのか心配ですがもう少し寝かせておきます。

今日はここまで!