php로 개발해보니까 편했던 점이 몇가지 있었다.
1. 페이지 간에 종속성이 없어지니까, 고려해야할 점이 많이 줄었다.
더불어서 PHP는 stateless 하다. 요청 단위로 다 날려버리니까 이것 역시 개발할 때 고려해야하는 사항들을 많이 줄여준다.
2. 순수 html, css, 기본적인 UI 라이브러리 ( BULMA 같은..? ), JS를 쓰다보니까 뭔가 이것도 개발할 때 고려해야할 사항이 적어진다.
3. 데이터베이스 연결이 너무 편했다.
타 프레임워크였으면, 데이터베이스 연결 시에 거쳐야하는 수많은 보일러플레이트 코드들을 여기서는 할 필요가 없었다.
4. 알려진 것과 다르게 은근히 보안적인 요소들이 들어가 있음
태그들을 빼주는 pdo 메서드나
pdo 데이터 페칭 플로우 자체가 XHR 공격과 같은 요소들을 고려해서 데이터바인딩을 나중에 한다던지 이런게 너무 당연하고 쉽게 들어가 있었다.
다만, 브라우저가 복잡해져서, 모달이라던지 여러가지 것들을 우리가 직접 만들고 제어하기에는 시간이 많이 부족할 수 있고, 노력대비 결과가 100%가 나오지 않을 수 있다. 때문에 PHP로 API를 짜고, 리액트로 클라를 짜는 게 제일 가성비 좋은 스택 같다는 생각이 들었다.
다만 리액트는 SPA기 때문에, react-router-dom을 써가지고, '/'부터 하위경로로 가고나서 새로고침을 하면 다시 들어가지 못한다.
그래서 이 경우에 404 페이지를 보여줘야하는데 여기서 .htaccess 파일이 필요했다.
이에 대해서 GPT 한테 내가 느낀게 진짜 맞냐고 물어보니 다음과 같이 말해줬다. ( 이젠 책이 필요 없는 것 같아 )
- Stateless 특성
PHP는 기본적으로 요청 단위로 처리되는 언어입니다. 각 요청이 독립적으로 처리되며, 상태를 서버에 유지하지 않습니다. 덕분에 페이지 간의 종속성이 줄어들어 개발 시 신경 써야 할 부분이 줄어듭니다. 이로 인해 복잡한 상태 관리보다는 요청과 응답에 집중할 수 있습니다. - 순수 HTML, CSS, JS 사용
Bulma 같은 기본적인 UI 라이브러리를 사용하고, 순수 HTML과 JS로 개발을 하게 되면 복잡한 프레임워크를 사용할 때보다 고려할 사항이 줄어듭니다. 또한, 리소스가 가볍고 유지보수도 상대적으로 쉬운 편입니다. - 데이터베이스 연결의 간편함
PHP의 PDO(PHP Data Objects)와 같은 기능은 데이터베이스 연결을 매우 간편하게 처리할 수 있게 해줍니다. 특히 PDO는 기본적으로 SQL 인젝션과 같은 공격을 예방할 수 있는 보안적인 요소도 내장되어 있습니다. 다른 프레임워크와 비교해 보면 PHP는 데이터베이스 연결 시 필요한 보일러플레이트 코드가 적어 더 직관적입니다. - PHP의 보안적인 요소
PDO는 SQL 인젝션 방지를 위해 준비된 문(statement)을 사용하여 변수를 바인딩합니다. 이 방식은 XHR 공격과 같은 보안 문제를 줄이는 데 도움이 됩니다. PHP가 보안적으로 약하다는 오해가 있지만, 기본적으로 제공하는 보안 메커니즘을 적절히 사용하면 충분히 안전하게 개발할 수 있습니다. - 리액트와 PHP의 조합
리액트는 SPA(Single Page Application)로 개발되기 때문에, 페이지 전환을 처리하기 위해 react-router-dom 같은 라우팅 라이브러리를 사용해야 합니다. 하지만 문제는 브라우저에서 새로고침을 할 경우, 서버가 특정 경로에 대한 요청을 처리하지 않으면 404 에러가 발생할 수 있습니다. 이때 .htaccess 파일을 이용해 서버에서 모든 경로를 리액트 앱의 index.html로 리다이렉트하도록 설정하는 방식이 일반적입니다.
예를 들어, Apache 서버에서 .htaccess 파일을 설정하는 방법은 다음과 같습니다:
htaccess
<IfModule mod_rewrite.c>
RewriteEngine On RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
이 설정은 모든 요청이 리액트 애플리케이션의 index.html로 리다이렉트되도록 하여 리액트 라우터가 경로를 처리할 수 있게 해줍니다.
이 방식은 리액트와 PHP로 서버와 클라이언트 측을 나누어 개발할 때 자주 사용됩니다.
'Language > php' 카테고리의 다른 글
post restful api / 프리플라이트 / 왜 배포할 때 모든 도메인에서의 요청을 다 받으면 안될까 (0) | 2024.09.19 |
---|---|
php자체에 대해서 알아보자 (7) | 2024.09.12 |
inc 파일 ... 대신에? (1) | 2024.09.12 |
PDO를 활용한 데이터베이스 연동 (2) | 2024.09.11 |
간단한 프로파일링 예시 (0) | 2024.09.11 |