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});
composer.jsonをお願いします。
あなたの回答
tips
プレビュー