PHP는 예전에 "끔찍"했기 때문에 지금은 좋지 않은 평가를 받고 있습니다. 이 기사에서는 PHP가 많은 사람들이 말하는 것만큼 나쁘지 않다는 점을 기술 지식이 없는 사람들에게 설명하는 것을 목표로 PHP에 대한 몇 가지 일반적인 주장에 답하려고 합니다.
→이 기사는 https://www.getparthenon.com/blog/php-isnt-that-like-really-bad/
1에서 번역되었습니다.
더 이상은 아닙니다. 과거에는 많은 개발자들이 책을 통해 매우 형편없는 관행을 배웠기 때문에 PHP 코드의 품질이 매우 낮았습니다. PHP는 또한 구축하기는 쉽지만 유지하기에는 악몽이 되는 정말 이상한 일을 할 수 있게 해주곤 했습니다.
이러한 질문은 더 이상 일반적인 질문이 아닙니다. 배우기 쉽고, 쉽게 접근할 수 있는 고품질의 학습 자료를 도입하여 초보 개발자도 PHP를 올바른 방법으로 배울 수 있습니다. 이는 후배 개발자가 올바른 빌드 방법을 모르기 때문에 유지 관리가 매우 어려운 코드를 작성하는 것을 방지합니다.
프레임워크가 도입되면서 많은 나쁜 경험을 초래하는 대부분의 일반적인 코드가 이제 자동으로 수행됩니다. 따라서 개발자는 프레임워크만 사용하면 프레임워크가 이를 올바르게 코딩합니다.
또한 지난 몇 년간 누락된 기능으로 인해 일부 나쁜 관행이 발생하여 허용되어서는 안되는 일이 허용되는 결과를 낳았습니다. 이제 대부분의 경우 이러한 평판을 얻기 위해 이전에 작성된 내용 중 일부를 구현하는 것조차 불가능합니다.
요약
더 이상 나쁜 관행을 조장하지 않습니다...
프레임워크를 사용하여 나쁜 관행을 방지합니다.
언어 기능은 지금 많이 논의되고 있습니다. 잘못된 기능은 더 이상 지원되지 않습니다.
PHP는 다른 언어에 존재하는 기능 전부는 아니더라도 대부분을 추가합니다.
2. 보안이 매우 취약한가요?
과거에는 PHP 애플리케이션의 언어 허용으로 인해 보안이 취약한 경우가 많았습니다. 이제 PHP 애플리케이션 개발이 완전히 다르기 때문에 이러한 것들은 더 이상 사용되지 않습니다.
원격 및 로컬 파일 포함(PHP가 원래 의도한 것과 다른 주소에서 파일을 읽는 경우)은 동적으로 파일을 포함하는 대신 자동 로더를 사용하여 파일을 포함함으로써 제거되었습니다.
PHP에서 직접 HTML을 사용하여 발생하는 교차 사이트 스크립팅 공격(사용자가 다른 사용자에게 표시되는 위치에 JavaScript 스크립트를 추가하는 경우)
SQL에서 준비된 문을 사용하면 SQL 주입 공격을 피할 수 있습니다(이는 SQL 쿼리를 작성하고 사용자가 추가 SQL 명령을 쿼리에 추가할 수 있는 데이터와 함께 쿼리를 보내야 하기 때문에 발생합니다). 또한 ORM의 사용도 일반적입니다. 이를 통해 사용자 데이터와 쿼리가 별도로 전송되고 SQL은 이를 별도의 명령으로 처리할 수 없습니다.
nonce 시스템을 사용하는 널리 사용되는 양식 라이브러리를 사용하여 사이트 간 요청 위조(사용자가 사이트에서 특정 작업을 수행하도록 속일 수 있음)를 방지하세요.
요약
더 이상은 없습니다.
자동 로더(모든 주요 프레임워크의 표준)를 사용하여 원격 및 로컬 파일 포함을 방지합니다.
템플릿 언어를 표준으로 사용하거나 React와 같은 프런트엔드 프레임워크를 사용하여 XSS(교차 사이트 스크립팅) 공격을 방지하세요.
ORM을 사용하고 준비된 문을 광범위하게 사용하여 SQL 주입을 피하세요.
nonce 토큰을 사용하여 CRSF(교차 사이트 요청 위조) 공격을 방지하세요(모든 주요 프레임워크에서 자동으로 지원됨).
3. 정말 느린가요?
무엇과 비교하느냐에 따라 다릅니다. PHP를 Java, C 또는 Go와 비교하면 속도가 느려집니다. 하지만 PHP를 Python, Ruby 등과 비교하면 느리지 않습니다. PHP는 동종 언어 중 가장 빠른 언어 중 하나이며 지속적으로 성능이 향상되고 있습니다.
대부분의 경우 서버에 과부하가 걸리거나 데이터베이스 쿼리가 느리기 때문에 애플리케이션이 느려집니다. 이러한 문제는 모든 언어에 존재합니다.
요약
PHP는 컴파일된 언어에 비해 상대적으로 느립니다.
PHP는 다른 스크립팅 언어에 비해 상대적으로 빠릅니다.
느린 웹사이트는 일반적으로 사용되는 언어가 충분히 빠르지 않아서가 아니라 서버나 데이터베이스로 인한 성능 문제로 인해 발생합니다.
4. 확장성이 정말 나쁜가요?
사실 모든 언어는 확장이 가능합니다. 컴파일된 언어(예: Go, C 또는 Rust)는 스크립팅 언어(예: PHP)보다 확장 비용이 저렴합니다. 그러나 동일한 작업을 위해 설계되지 않았습니다. 사실, 그것들은 모두 동일합니다. 단지 사용하는 서버의 수에 따라 결정됩니다. 충분한 서버를 사용하면 모든 애플리케이션을 확장할 수 있습니다. PHP는 시작하는 데 더 적은 리소스가 필요하고 더 작은 메모리와 더 많은 CPU를 갖춘 서버에서 실행할 수 있기 때문에 다른 스크립팅 언어보다 확장성이 저렴합니다.
또한 확장성을 위해 중요한 것은 데이터베이스입니다. 데이터베이스를 확장할 수 있으면 애플리케이션도 확장할 수 있습니다. 데이터베이스는 애플리케이션 서버보다 확장하기가 더 어렵습니다. 데이터베이스를 읽는 다른 클라이언트를 추가하는 것은 쉽지만 데이터베이스를 빠르게 실행하는 것은 훨씬 어렵습니다.
요약
모든 언어는 사용하는 서버 수에 따라 확장될 수 있습니다.
스케일링의 실제 문제는 사용되는 애플리케이션 언어보다는 데이터베이스입니다.
데이터를 확장할 수 있다면 애플리케이션도 확장할 수 있습니다.
5. 계속 사용해야 할까요?
아니요. 모든 프로그래밍 언어에는 전문 분야가 있습니다. PHP는 웹 애플리케이션에 적합합니다. 웹사이트와 API를 구축하려면 이를 사용해야 합니다.
1밀리초마다 중요한 시스템 애플리케이션을 구축하는 경우 Rust 또는 C를 사용하세요.
인공 지능 애플리케이션을 구축하는 경우 Python이 좋은 선택입니다.
SaaS 애플리케이션을 구축하는 경우 PHP가 좋은 선택입니다.
Android 애플리케이션을 구축하는 경우 Kotlin이 좋은 선택입니다.
여러 플랫폼에서 실행되는 애플리케이션을 구축하는 경우 Java가 좋은 선택입니다.
요약
아니요, 모든 언어에는 최상의 사용 사례가 있습니다.
PHP의 가장 좋은 사용 사례는 웹 애플리케이션입니다.
Go, Rust, C는 시스템 애플리케이션에 적합합니다.
파이썬은 인공지능에 적합합니다.
Android 앱용 Kotlin.
Java는 플랫폼 독립적인 애플리케이션에 적합합니다.
6. 결론
PHP에 관해 이야기되는 많은 것들이 10년이 지났습니다. 우리 생각에는 누군가가 기술적인 주제에 대해 10년이나 지난 정보를 제공한다면 그 사람은 아마도 당신이 신뢰하고 싶은 기술 전문가가 아닐 것입니다.
PHP는 웹 애플리케이션을 만들기 위한 훌륭한 프로그래밍 언어이며 우리는 이것이 웹 애플리케이션 개발에 가장 적합한 언어라고 생각합니다.
요약
이러한 불만 사항 중 상당수는 기한이 10년이 지난 것입니다.
우리는 PHP가 웹 애플리케이션 구축에 가장 적합한 언어라고 생각합니다.