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

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

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

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

Q&A

0回答

828閲覧

autoload: クラス名が見つかりません。というエラーの解消方法に関して(PHPを使用したSign In画面を作成)

Eri_ru

総合スコア1

PHP

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

0グッド

0クリップ

投稿2021/12/18 06:50

PHPを使って、Sign In画面を作成しています。

antoloadを使用して、クラスを自動で読み込みをしたいのですが、下記のようなエラーが出てしまいます。
composerの再インストールや、autoloadの設定を見直したりしてみましたが、エラーの解消方法が分かりません。

エラー

php

1Fatal error: Uncaught Error: Class "myapp\controller\signup" not found in /var/www/php/view/signup.php:11 Stack trace: #0 /var/www/php/controller/index.php(21): require_once() #1 /var/www/php/controller/index.php(5): signup(Array, Array) #2 /var/www/html/index.php(21): require_once('/var/www/php/co...') #3 {main} thrown in /var/www/php/view/signup.php on line 11

signup.php

php

1<?php 2const TITLE = "Sign Up"; 3const CSS = "signup"; 4include ('_header.php'); 5 6// 新規登録 7require '../php/vendor/autoload.php'; 8require_once(APP_ROOT. "/config.php"); 9require_once(APP_ROOT. "/util.php"); 10 11$app = new myapp\controller\signup(); 12 13$app->run(); 14 15?> 16 17 <p>Hello<p> 18 19 20 <div id="container"> 21 <form action="" method="post" id="signup"> 22 <p> 23 <input type="text" name="email" placeholder="email"> 24 </p> 25 <p> 26 <input type="password" name="password" placeholder="password"> 27 </p> 28 <div class="btn" onclick="document.getElementById('signup').submit();">Sign Up</div> 29 <p><a href="/login">Log In</a></p> 30 </form> 31 </div> 32 33 34 35<?php 36include ('_header.php'); 37?>

controller/signup.php

php

1<?php 2namespace myapp\controller; 3 4class signup extends \myapp\controller { 5 function run() { 6 if ($this->isLoggedIn()) { 7 header('Location: ' . DOMAIN); 8 exit; 9 } 10 11 if ($_SERVER['REQUEST_METHOD'] === 'POST') { 12 $this->postProcess(); 13 } 14 } 15 16 function postProcess() { 17 // validate 18 try { 19 $this->_validate(); 20 } catch (\myapp\exception\invalidEmail $e) { 21 // メールアドレスの形式が正しくない 22 echo $e->getMessage(); 23 exit; 24 25 } catch (\myapp\exception\invalidPassword $e) { 26 // パスワードの形式が正しくない 27 echo $e->getMessage(); 28 exit; 29 30 } 31 echo "success!"; 32 exit; 33 34 // create user 35 36 // redirect to login 37 } 38 39 function _varidate() { 40 if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 41 throw new \myapp\exception\invalidEmail(); 42 } 43 44 if (!preg_match('/\A[a-zA-Z0-9]+\z/', $_POST['password'])) { 45 throw new \myapp\exception\invalidPassword(); 46 } 47 } 48 49}

vendor/autoload.php

php

1<?php 2 3// autoload.php @generated by Composer 4 5require_once __DIR__ . '/composer/autoload_real.php'; 6 7return ComposerAutoloaderInit0ec4cd6c27310f5756ecb1b3b3bf6516::getLoader(); 8 9 10 11/* 12MyApp 13index.php controller 14MyApp\Controller\Index 15-> lib/Controller/Index.php 16*/ 17 18spl_autoload_register(function($class) { 19 $prefix = 'MyApp\'; 20 if (strpos($class, $prefix) === 0) { 21 $className = substr($class, strlen($prefix)); 22 $classFilePath = __DIR__ . '/../php/' . str_replace('\', '/', $className) . '.php'; 23 if (file_exists($classFilePath)) { 24 require $classFilePath; 25 } 26 } 27});

イメージ説明

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

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

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

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

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

skys215

2021/12/18 13:15

composer.jsonをお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問