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 対応