WORDPRESSのプラグインを作成中、PHPのクラス「DOMDocument」を使用しようとしたときに思わずつまづいたため、
戒めを込めて記事にしておこうと思います。
普段何気なくやっていたことのおさらいですね。
早い話がエラー「Class ‘XXXX\DOMDocument’ not found in …」みたいなエラーが出ました。
Classのパス指定が違っていただけですが、PHP自体のClassのパスの指定の方法はどうだったか?
ということを解説します。
Class ‘~’ not found エラーが出たときに確認すること
まずは「namespace」(名前空間)を使用しているか確認します。
PHP自体のクラスは名前空間でいうと「グローバル空間」に存在しています。
名前空間を使用しているかどうかでパスが変わってきます。
例)
// none error
<?php
$dom = new DOMDocument();
// class not found error
<?php
namespace WPplugin;
class testClass{
public function test()
{
$dom = new DOMDocument();
}
}
上記エラーが起こる場合「class ‘WPplugin\DOMDocument’ not found」になります。
class not found の解決方法
上記名前空間のエラーの場合下記二つの方法でエラー解消可能です。
// Import Class using "use"
<?php
namespace WPplugin;
use DOMDocument;
class testClass
{
public function test()
{
$dom = new DOMDocument();
}
}
// Using Backslash
<?php
namespace WPplugin;
class testClass
{
public function test()
{
$dom = new \DOMDocument();
}
}
「use」を使ってClassをしっかり呼び出すか、newで呼び出すときにパスを記述するかです。
グローバル関数の場合は、「\」バックスラッシュ(日本語だと¥)明示的に記述します。
補足:DOMDocumentがそもそもインストールされていないケースも
参考:Class ‘DOMDocument’ not found
WORDPRESSを設置している環境によっては上記参考サイトのように、拡張機能自体のインストールが必要になるケースも。
PHPおすすめ書籍
PHPは書籍も多いですが、比較的読みやすそうな奴を紹介します。まぁどれも読み切れば身に付くと思います。
入門用
いきなりはじめるPHP~ワクワク・ドキドキの入門教室
中級用
気づけばプロ並みPHP 改訂版–ゼロから作れる人になる!
PHP8を体系的に学びたい場合
詳細! PHP 8 + MySQL入門ノート XAMPP + MAMP 対応