FORSMILE
EN
開発記事2022/09/26

Class '~' not found エラーが出たときに確認すること[PHP]

WORDPRESSのプラグインを作成中、PHPのクラス「DOMDocument」を使用しようとしたときに思わずつまづいたため、

ブログ一覧へ / Back to Blog

WORDPRESSのプラグインを作成中、PHPのクラス「DOMDocument」を使用しようとしたときに思わずつまづいたため、

早い話がエラー「Class 'XXXX\DOMDocument' not found in ...」みたいなエラーが出ました。

Classのパス指定が違っていただけですが、PHP自体のClassのパスの指定の方法はどうだったか?

Class '~' not found エラーが出たときに確認すること

まずは「namespace」(名前空間)を使用しているか確認します。

PHP自体のクラスは名前空間でいうと「グローバル空間」に存在しています。

javascript
// 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 の解決方法

上記名前空間のエラーの場合下記二つの方法でエラー解消可能です。

javascript
// 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 8 + MySQL入門ノート XAMPP + MAMP 対応

📦
Amazon で関連書籍・ツールを検索
Web開発 プログラミング 入門
Amazonで探す →(アソシエイトリンク)