해결된 질문
작성
·
346
0
안녕하세요, 선생님!
강의는 잘 듣고있습니다.
그런데, 나만의 프레임워크 만들기 목차 중 Http강의에서 코드를 실행하던 중 namespace 내에 class가 발견되지 않는다는 오류를 발견했습니다. 코드는 일단, 모두 똑같은데 어디에서 문제가 발생한 것인지 원인을 잘 모르겠네요..ㅠㅠ
composer.json
{
"name": "pronist/eclair",
"description": "eclair is a simple PHP micro framework.",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {
"Pronist\\Eclair\\": "src/"
}
},
"authors": [
{
"name": "sunwoo"
}
],
"require": {}
}
Request.php
<?php
namespace Eclair\Http;
class Request
{
public static function getMethod()
{
return filter_input($_POST, '__method') ?: $_SERVER['REQUEST_METHOD'];
}
public static function getPath()
{
return $_SERVER['PATH_INFO'] ?? '/';
}
}
-index.php
<?php
require './vendor/autoload.php';
use Eclair\Http\Request;
$_SERVER['REQUEST_METHOD'] = 'GET';
var_dump(Request::getMethod());
디렉토리 구조는
ECLAIR(폴더)
/src
/Database
-adaptor.php
/Http
-Request.php
/vendor
-composer.json
-index.php
디렉토리 구조 또한 강의 중 그것과 동일합니다.
답변 1
1
안녕하세요 :)
올려주신 composer.json 을 살펴보면, psr-4 매핑이 "Pronist\\Eclair\\": "src/" 로 되어있는데,
코드에는 namespace Eclair\Http 와 같이 사용하고 있군요. 즉, 매핑이 잘못되었습니다. composer.json 에 Pronist\\ 를 붙인 이유는 단순하게 벤더 이름을 표기하기 위함입니다. namespace Eclair 와 같이 접근하기 위해서는 "Eclair\\": "src/" 와 같이 해보시기 바랍니다.
선생님이 알려주신 방법으로 해결완료했습니다! 그런데, 다만 저장을 했는데도 불구하고 동일한 에러가 출력되어 자료를 조금 더 찾아보니, composer를 변경한 이후에는 composer update 명령어를 입력해주어야함을 새로 배우게 됐습니다!
다음에도 궁금한 것이 있으면, 한 번 더 찾아뵙겠습니다!감사합니당 ~ :)