質問: new MongoClient(); } catch (Exception $e) { echo $e->getMessage(); return; } ``` ### 試したこと cakeの外(1つ上階層)で通常のPHPファイルに書いた場合は、問題なく接続できます。 ### 補足情報(言語/FW/ツール等のバージョンなど)
回答: CakePHPは3系からPSR-4ベースでファイルがオートロードされるため、 各クラスには格納ディレクトリに対応するnamespace(名前空間)が付けられています。 コントローラには`App\Controller`というnamespaceが付いているため、このクラス内で普通に `MongoClient`と書くとそれは`App\Controller\MongoClient`と解釈され、 app/controllerディレクトリにMongoClientを探しにいきます。 これを避けるためには`new \MongoClient();`とクラス名の前にバックスラッシュを付けて グローバル空間のクラスであることを明示するか、コントローラクラスの前で `use MongoClient;`とクラスの使用を宣言する必要があります。 名前空間の概要 名前空間の使用法: エイリアス/インポート