質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PHPUnit

PHPUnitは、PHP向けのユニット・テスト向けフレームワークで、手動では手間のかかるテスト作業を自動化し、繰り返し実行することが可能です。

Q&A

解決済

1回答

1330閲覧

PHPのエラーで「Class "XXXX\src\Sample" not found」が解決できない

donut4

総合スコア148

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PHPUnit

PHPUnitは、PHP向けのユニット・テスト向けフレームワークで、手動では手間のかかるテスト作業を自動化し、繰り返し実行することが可能です。

0グッド

0クリップ

投稿2023/03/29 20:29

編集2023/03/30 01:05

事象・問題

PHPUnitの動作確認として、テストクラスを実行したのですが、
「Class "XXXX\src\Sample" not found」が発生してうまく解決できなくてはまっています。

use文の使い方が間違っていると思いいろいろ試したのですがそれでもうまくいきませんでいた。
エラーの解消の仕方をご教授お願いします。

ファイル・フォルダ構成

. └── root ├── composer.json ├── src │ └── Sample.php ├── test │ └── SampleTest.php └── vendor

ソースコード

Sample.php

<?php namespace root\src; class Sample { public function hello() { return "Hello"; } }

SampleTest.php

<?php use PHPUnit\Framework\TestCase; use root\src\Sample; class SampleTest extends TestCase { public function testHello() { $sample = new Sample(); ###ここでエラーが起きている $result = $sample->hello(); $this->assertEquals("Hello", $result); } }

composer.json

{ "name": "root/root", "autoload": { "psr-4": { "Root\\Root\\": "src/" } }, "require-dev": { "phpunit/phpunit": "^8" } }

PHPUnit実行結果

rootで vendor/bin/phpunit test/SampleTest.php を実行

root@9d176b81583d:~# vendor/bin/phpunit test/SampleTest.php PHP Warning: PHP Startup: Unable to load dynamic library 'php_mbstring.dll' (tried: /usr/lib/php/20210902/php_mbstring.dll (/usr/lib/php/20210902/php_mbstring.dll: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/php_mbstring.dll.so (/usr/lib/php/20210902/php_mbstring.dll.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHPUnit 8.5.33 by Sebastian Bergmann and contributors. E 1 / 1 (100%) Time: 57 ms, Memory: 4.00 MB There was 1 error: 1) SampleTest::testHello Error: Class "root\src\Sample" not found /root/test/SampleTest.php:11 ERRORS! Tests: 1, Assertions: 0, Errors: 1.

バージョンなど

PHP 8.1.2-1ubuntu2.11 (cli)
PHP Unit 8.5.33

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2023/03/29 20:36

composer.jsonの内容も提示してください。
donut4

2023/03/30 01:05

追記しました
m.ts10806

2023/03/30 01:26

ちなみにそれぞれがどのような設定となっているかは調べられてますか?
guest

回答1

0

ベストアンサー

ひとまず、PHP の namespace (名前空間)と、 composer の autoload の仕様について調べてみましょう。
見た感じ composer が何なのか、という基本を調べず見よう見まねで書いているように見えます。

急がば回れで、 composer の基本について調べてから着手する方が早道ですよ。


ちなみに

composer.json に

"Root\\Root\\": "src/"

とありますが、これは

namespace : Root\Root\ のクラスファイルは src/ 以下にある

を意味します。
namespace: root\src\ のクラスファイルがどこにあるかは定義されていません。
この先は実装上どうしたいか次第ですので、「こうやればいい」という回答はないです。

投稿2023/03/30 02:09

kaz.Suenaga

総合スコア2037

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

donut4

2023/03/30 14:04

composerのautoloadと名前空間について調べました。 autoloadの"Root\\Root\\": "src/" を "App\\": "./" に変えて。 PHPファイルもそれに合わせたらうまくいきました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問