$_GET과 $_POST를 구별하여야한다고 하는데 이건 왜 $_GET입니까 콜백이라서 그런가요? 왜콜백은 그래도 되나요?
475
投稿した質問数 1
function routes($routes)
{
foreach ($routes as [ $path, $method, $callbackString ]) {
[ $file, $callback ] = explode('.', $callbackString);
if (match($path, $method)) {
require_once dirname(__DIR__, 2) . "/app/controllers/{$file}.php";
call_user_func($callback, ...array_values($_GET));
return true;
}
}
return false;
}
回答 1
1
콜백에 $_GET 을 넘긴 것은 단순하게 URL 을 통해 Query String 으로 넘어온 값을 함수 파라미터로 넘기기 위함입니다. 요청방식이 GET 이든 POST 든 요청할 때 쿼리 스트링을 포함시킬 수 있습니다. 이는 질문내용인
$_GET과 $_POST를 구별하여야한다고 하는데 이건 왜 $_GET입니까 콜백이라서 그런가요? 왜콜백은 그래도 되나요?
라는 것과는 달리 콜백인지 아닌지는 전혀 관련성이 없습니다. POST 의 경우 어차피 컨트롤러 내부에서 INPUT_POST 로 접근하는 식으로 작성됩니다.
/**
* @param callback $callback
* @param int $id
*
* @return bool|void
*/
function base($callback, $id = null)
{
$args = filter_input_array(INPUT_POST, [
'title' => FILTER_SANITIZE_FULL_SPECIAL_CHARS,
'content' => FILTER_DEFAULT
]);
if ($id) {
$post = first("SELECT * FROM posts WHERE id = ?", filter_var($id, FILTER_VALIDATE_INT));
if (empty($post)) {
return reject(404);
}
}
return call_user_func($callback, $post ?? [], $args) ?: reject();
}이를테면 이 강의에서 글 읽기 접근 (GET) 은 ?id=1 과 같이 쿼리스트링이 붙고, POST 로 수정이나 삭제를 처리할 때도 마찬가지로 쿼리스트링이 붙습니다. REST API 에서 URL 파라미터로 접근하는 것을 쿼리 스트링으로 대체했을 뿐입니다. 따라서 GET, POST 에 관계없이 쿼리 스트링이 요구됩니다. 쿼리 스트링이 아닌 URL 파라미터를 사용하는 구현은 이 강의가 아닌 객체지향 강의에서 진행합니다.
이 강의에 쓰인 예제코드는 https://github.com/php-courses-inflearn/php7 에서 확인하실 수 있습니다.
53강 레이아웃에서 css git 링크 관련 질문입니다.
0
35
2
[섹션 5]레포지토리 소스파일 오류 위치, 수정 제안
0
180
1
add configuratio.. 자체에
0
268
2
터미널에 글이 안써집니다.
0
635
1
일반적으로 쓰이지 않는 폰트 부분
0
465
1
readmore 클릭시 쿼리내용 받아오는게 이해가 안되요
0
497
1
xdebug 설치가 안됩니다.
0
401
1
xdebug 설치 확인 페이지가 안열립니다
0
360
1
if ~ elseif ~ else 문법 표준적인 코딩 방법에 대한 질문입니다.
1
523
1
mysqli_stmt_close($stmt) 관련 질문드립니다.
0
319
1
DB_CONNECTION 부분 질문
0
267
1
FILTER_VALIDATE FILTER_SANITIZE 차이를 모르겠습니다.
0
296
1
결과 ...
0
244
1
random_bytes
0
319
1
preg_replace_callback 질문드립니다.
0
437
1
호스팅에 php 코드 업로드하면 hash 로직이 보이진 않을까요?
0
266
1
버퍼링 궁금한 점이 있습니다.
0
287
1
restore_include_path 오류
0
316
1
php 에러발생..
0
3759
3
터미널로 php 실행시 document root 지정
0
244
1
posts가 null이라고 나옵니다.
0
209
2
rand() vs random_int() 차이점?
0
520
1
php 8 로 하시는 분들을 위한 ini 팁
1
513
1
xdebug 뭔짓을해도 안됩니다
0
219
1

