programing

대규모 프로젝트를 위한 PHP가 없습니까?왜 안 되나요?

i4 2023. 7. 25. 20:27
반응형

대규모 프로젝트를 위한 PHP가 없습니까?왜 안 되나요?

저는 사람들이 PHP를 대규모 프로젝트에 사용해서는 안 된다고 언급한 게시물을 몇 개 읽었습니다(제안하지 않음, 논의하지 않음, 제안하지 않음).

주로 PHP 개발자인 저는 두 가지 질문을 합니다.

  1. 무엇이 "대규모 프로젝트"를 정의합니까?
  2. 왜 안 되나요?PHP를 사용할 때의 함정은 무엇입니까?

저는 소규모 개발 팀을 운영하고 있으며, 경험을 통해 품질 구축, 조직, 문서화, 주석 작성 및 캡슐화가 우리의 최우선 과제라는 것을 알고 있습니다.우리는 자체 프레임워크와 접근 방식을 사용하여 훌륭한 프로젝트를 개발할 수 있지만, 시간을 낭비한다면 더 이상 투자하고 싶지 않습니다.

생각은?

저는 사람들이 PHP가 형편없는 언어라고 말하는 것을 정말 싫어합니다. 왜냐하면 당신은 프레젠테이션과 논리를 혼합하는 코드를 쓸 수 있고, 그것이 당신에게 SQL 주입을 허용하기 때문입니다.그것은 언어와 전혀 관련이 없습니다. 바로 개발자입니다.

PHP는 높은 확장성을 입증했습니다.위키피디아는 인터넷에서 가장 크고 가장 인기 있는 사이트 중 하나이며 PHP를 실행합니다.충분히 말했습니까?

작업할 수 있는 프레임워크를 제공하는 툴/라이브러리가 많이 있으므로 누군가가 부실하고 유지보수가 덜한 코드를 작성할 가능성이 낮습니다. 예를 들어 CakePHP, Symfony, PDO, Smarty 등을 참조하십시오.

그것은 진입 장벽이 매우 낮은 언어이기 때문에 나쁜 평가를 받았습니다: 그것은 무료이고, 당신은 매우 저렴한 PHP 호스팅을 받을 수 있습니다. 문서는 최고입니다. 온라인에는 많은 튜토리얼이 있습니다. 게다가 그것은 많은 것들을 매우 쉽게 만듭니다(예: URL을 열고 파일의 내용을 가져옵니다:file('http://www.google.com');이것은 많은 초보자들이 그것을 집어들고 그것으로 매우 수상쩍은 사이트를 많이 만들었지만, 여러분이 처음으로 선택한 언어에서는 그것이 일어날 것이라는 것을 의미합니다.

탄탄한 ORM 프레임워크(SO에 대한 질문이 30개 정도 있음)로 작업하면 도움이 될 것입니다.

그것을 사용하지 않는다고 말하는 많은 사람들은 정말로 PHP 4를 사용하지 말라고 말하고 있습니다.결론은 이렇습니다.

당신은 어떤 언어로도 좋은 코드를 쓸 수 있습니다.

그리고.

당신은 어떤 언어로도 나쁜 코드를 쓸 수 있습니다.

PHP는 종종 엉킨 스파게티 코드 라이브러리가 되어 당신의 '애플리케이션'을 정말로 일련의 스크립트로 만들 수 있습니다(이것의 좋은 예는 Moodle을 참조하십시오...)

저는 많은 '대형 물건에 PHP를 사용하지 마세요'가 PHP의 원래 목적인 템플릿 언어에서 해킹당한 것이라고 생각합니다.저는 이해할 수 있지만, 당신이 그것을 할 수 있다는 것을 증명하는 많은 프로젝트들이 있습니다(드루팔, 미디어위키, 페이스북).

대형 프로젝트에 PHP를 사용할 수 없는 이유는 없습니다.결국, 페이스북은 PHP를 기반으로 합니다.하지만 큰 프로젝트에도 문제가 있을 것입니다.

PHP를 널리 보급하는 이유는 진입 장벽이 낮고 호스팅 비용이 저렴하기 때문입니다.Apache 확장으로 실행되며 코딩을 거의 시작할 수 있습니다.와 같은 더 많은 엔터프라이즈 플랫폼으로 이동하는 경우.Net 또는 Java는 진입 장벽이 훨씬 높지만 애플리케이션을 확장할 수 있도록 지원하는 많은 인프라도 제공합니다.

예를 들어, PHP의 데이터베이스 추상화는 (imho) 비참합니다.공급업체마다 다릅니다.MySQL을 사용하면 다음과 같은 작업을 수행하는 경향이 있습니다.

function get_users($surname) {
  mysql_query("select * from users where surname = '$surname'");
  ...
}

다음과 같은 몇 가지 이유로 인해 좋지 않습니다.

  • 쿼리 캐시를 잘못 사용합니다.
  • 캐릭터 탈출은 처리하지 않습니다(물론, 그것은 할 수 있습니다).mysql_escape_string()은 사람들이 얼마나 않는지 그리고 ;▁but고그하▁and)리;▁don▁how▁surprised다.
  • SQL 주입 공격을 허용하는 방식으로 코딩하는 것은 매우 쉽습니다.

개인적으로 나는 위의 모든 이유로 mysqli를 선호하지만 그것 자체의 문제가 있습니다. 즉, LONGTEXT 필드를 사용하면 mysqli가 충돌하고 2005년 이후로 여전히 해결책이 없다는 것입니다(네, 저와 몇몇 다른 사람들이 버그를 제기했습니다).

이를 Java(제가 더 잘 알고 있음)와 비교해 보십시오. JPA 또는 Ibatis는 시작 비용이 더 높은 훨씬 더 나은 ORM 솔루션이지만 엔터프라이즈 규모에서 도움이 될 것입니다.

그래서 당신은 PHP에서 큰 프로젝트를 하는 것이 금지되지 않습니다.다른 플랫폼이 제공하는 것을 복제하기 위해 점점 더 많은 작업을 직접 수행해야 한다는 점에서 더 어렵습니다.

그렇긴 하지만, PHP + memcached/APC + beanstalkd는 많은 도움이 됩니다.

아, 그것은 또 다른 문제입니다. PHP는 백그라운드 처리나 스레드화를 실제로 지원하지 않습니다.이를 위해 다른 기능(또는 독립 실행형 스크립트)이 필요합니다.다른 것을 사용하고 있다면 웹 자료(예: Java, Ruby, .Net 등)에도 사용하는 것이 어떻습니까?

제가 링크한 질문이 삭제되었기 때문에 여기에 일부를 놓겠습니다.

질문.


저는 PHP를 끔찍한 언어라고 부르는 다른 질문 스레드에서 혀를 내둘렀고 그것은 미친 듯이 다운 투표되었습니다.분명히 여기에는 PHP를 사랑하는 사람들이 많이 있습니다.

그래서 저는 진심으로 궁금합니다.제가 무엇을 빠뜨리고 있나요?PHP를 좋은 언어로 만드는 것은 무엇입니까?

제가 그것을 싫어하는 이유는 다음과 같습니다.

  • PHP에는 기본 제공 기능과 라이브러리 기능의 이름이 일치하지 않습니다.예측 가능한 명명 패턴은 모든 설계에서 중요합니다.

  • PHP는 내장 함수의 매개 변수 순서가 일관되지 않습니다. 예를 들어 array_map vs. array_filter는 단순한 경우에 성가시고 모든 종류의 예상치 못한 동작이나 더 나쁜 동작을 유발합니다.

  • PHP 개발자들은 내장된 기능과 낮은 수준의 기능을 지속적으로 사용하지 않습니다.좋은 예는 기능에 대한 기준 전달을 사용하지 않는 경우입니다.이것은 기능 콜백을 하는 모든 사람들에게 악몽을 만들었습니다.

  • 재설계에 대한 고려 부족.위의 권장 사항은 많은 경우 함수에 대한 기본 키워드 값을 제공하는 기능을 제거했습니다.그들은 이것을 PHP 5에서 수정했지만, PHP 4에서 우회 참조를 사용하지 않았습니다!

  • 이름 공간이 제대로 실행되지 않았습니다(이전에는 이름 공간이 전혀 없음).이제 이름 공간이 존재하는데, 참조 취소 문자로 무엇을 사용할까요?백슬래시!PHP에서도 탈출을 위해 보편적으로 사용되는 캐릭터!

  • 지나치게 광범위한 암시적 형식 변환은 버그를 초래합니다.예를 들어, float에서 정수로 또는 다시 float으로 암시적으로 변환이 없습니다.하지만 PHP(내가 마지막으로 확인한 것)는 기꺼이 배열을 정수로 변환하려고 할 것입니다.

  • 재귀 성능이 좋지 않습니다.재귀는 모든 언어로 작성하는 데 근본적으로 중요한 도구입니다. 복잡한 알고리즘을 훨씬 더 단순하게 만들 수 있습니다.빈약한 지원은 용서할 수 없습니다.

  • 함수는 대소문자를 구분하지 않습니다.나는 그들이 이것에 대해 무슨 생각을 하고 있었는지 전혀 모릅니다.프로그래밍 언어는 컴퓨터와 코드 판독기 모두에게 모호함 없이 동작을 지정하는 방법입니다.대소문자 불감증은 많은 모호성을 초래합니다.

  • PHP는 처리와 프레젠테이션의 결합을 장려합니다(실제로 필요합니다).네, 그렇게 하지 않는 PHP를 작성할 수 있지만, 실제로는 (소리 디자인 관점에서) 잘못된 방식으로 코드를 작성하는 것이 더 쉽습니다.

  • 캐싱을 하지 않으면 PHP 성능이 최악입니다.PHP용 상용 캐싱 제품을 판매하는 사람이 있습니까?오, 보세요, PHP의 디자이너들은 그렇습니다.

무엇보다도, PHP는 사람들에게 웹 애플리케이션을 설계하는 것이 쉽다고 확신시킵니다.그리고 그것은 실제로 관련된 많은 노력을 훨씬 더 쉽게 만듭니다.하지만 사실 안전하고 효율적인 웹 애플리케이션을 설계하는 것은 매우 어려운 일입니다.

많은 사람들이 프로그래밍을 하도록 설득함으로써, PHP는 프로그래머들의 전체 하위 그룹에게 나쁜 습관과 나쁜 디자인을 가르쳤습니다.이를 통해 안전하게 사용할 수 없는 기능에 액세스할 수 있습니다.이로 인해 PHP는 안전하지 않다는 평판을 얻었습니다.

(하지만 PHP가 다른 웹 프로그래밍 언어보다 더 안전하지도 덜 안전하지도 않다는 것은 쉽게 인정하겠습니다.)

제가 PHP에 대해 부족한 점은 무엇입니까?저는 유기적으로 성장하고, 제대로 관리되지 않은 언어의 엉망진창이 형편없는 프로그래머들을 양산하고 있는 것을 보고 있습니다.

그러니 다른 방법으로 설득해 보세요!


최고 등급의 답변


제가 당신의 각 총알 지점에 대응해 보겠습니다.

PHP에는 기본 제공 기능과 라이브러리 기능의 이름이 일치하지 않습니다.예측 가능한 명명 패턴은 모든 설계에서 중요합니다.

저는 이 주제를 사랑하기도 하고 싫어하기도 합니다.그 핵심은 이 문제가 옳기 때문입니다.일부 바이워드 함수는 밑줄로 분할되고 일부는 그렇지 않은 이유는 무엇입니까?Needle 및 haystack 매개 변수가 인수 서명의 위치를 가끔 교환하는 이유는 무엇입니까?참 우습죠.하지만 결국엔...이것이 정말 중요합니까?인텔리센스와 php.net 을 갖춘 제 IDE는 브라우저를 클릭하기만 하면 됩니다. 이것은 그렇게 큰 문제가 아닙니다.언어로서의 PHP에 대한 부정적인 것입니까?네. 효율적인 프로그래머가 되는 데 방해가 되나요?아니요.

PHP 개발자들은 내장된 기능과 낮은 수준의 기능을 지속적으로 사용하지 않습니다.좋은 예는 기능에 대한 기준 전달을 사용하지 않는 경우입니다.이것은 기능 콜백을 하는 모든 사람들에게 악몽을 만들었습니다.

개인적으로, 저는 이것이 좋은 지적이 아니라고 생각합니다.언어의 진화, 특히 PHP만큼 기교가 풍부한 언어의 진화에 있어서는 더 이상 사용하지 않는 것이 필요합니다.PHP는 "나쁜 프로그래머가 되기 쉽다*"는 비난을 많이 받지만, 동시에 PHP 그룹은 호출 시간별 참조와 같은 언어에서 멍청한 구조체를 제거하려고 할 때 문제가 발생합니다.통화 시간 기준을 없애는 것은 그들이 했던 최고의 조치 중 하나였습니다.초보 개발자가 이 "기능"을 사용하는 것보다 자신의 발을 쏘는 것이 쉬운 방법은 없었습니다.

재설계에 대한 고려 부족.위의 권장 사항은 많은 경우 함수에 대한 기본 키워드 값을 제공하는 기능을 제거했습니다.그들은 이것을 PHP 5에서 수정했지만, PHP 4에서 우회 참조를 사용하지 않았습니다!

일반적인 배려가 전혀 부족하다고는 생각하지 않습니다, 방금 이 특정한 변화에 쏘여서 입안에 신맛이 남아있는 것 같습니다.언어 변화는 종종 몇 년 전까지는 아니더라도 몇 달 전으로 알려져 있습니다.4에서 5로 이동하기 위한 마이그레이션 가이드가 제공되었으며 버전 차이는 설명서에 나와 있습니다.콜 타임 패스 바이 레퍼런스는 끔찍한 "기능"이었으며 개발자에게 다른 수단으로는 얻을 수 없는 표현력을 제공하지 않습니다.(마법 인용문과 같은 다른 헛소리와 함께) 없어져서 기쁩니다.

이름 공간이 제대로 실행되지 않았습니다(이전에는 이름 공간이 전혀 없음).이제 이름 공간이 존재하는데, 참조 취소 문자로 무엇을 사용할까요?백슬래시!PHP에서도 탈출을 위해 보편적으로 사용되는 캐릭터!

저는 이것에 대해 복잡한 감정을 가지고 있습니다.제 일부는 "누가 신경 쓰든, 캐릭터 탈출은 어차피 끈 밖에서 의미가 없다"고 생각하고, 일부는 "그들이 더 나은 것을 사용할 수 있을 것이다"라고 생각합니다.하지만 그럴 수 있을까요?글쎄요, 저는 젠드 파서의 개발자가 아닙니다.5.3 PHP가 네임스페이스를 전혀 가지고 있지 않은 것은 큰 실수입니까?네, 물론이죠.

지나치게 광범위한 암시적 형식 변환은 버그를 초래합니다.예를 들어, float에서 정수로 또는 다시 float으로 암시적으로 변환이 없습니다.하지만 PHP(내가 마지막으로 확인한 것)는 기꺼이 배열을 정수로 변환하려고 할 것입니다.

저는 PHP가 이것을 하는 방법에 동의하지 않는 것은 괜찮다고 생각하지만, 그것이 언어를 "나쁘게" 만든다는 것에는 동의하지 않습니다.하지만 제가 이 주제에 얼마나 앉아서 약한 유형과 강한 유형에 대해 논쟁하고 싶은지 물어보세요. (P.S. 저는 전혀 그렇지 않습니다.) 참고로: PHP는 주장의 유형이 중요하고 강제로 해결할 수 없을 때 E_WARNING 수준의 오류를 발행합니다.

재귀 성능이 좋지 않습니다.재귀는 모든 언어로 작성하는 데 근본적으로 중요한 도구입니다. 복잡한 알고리즘을 훨씬 더 단순하게 만들 수 있습니다.빈약한 지원은 용서할 수 없습니다.

PHP는 웹용 DSL입니다.저는 8년 동안 그것을 풀타임으로 해왔고 보통 어떤 종류의 성가신 디렉토리나 XML 트래버설을 위해 4번 또는 5번 재귀를 사용했습니다.그것은 웹 개발에 필요한 패턴이 아닙니다.성능이 느린 것을 용서하는 것은 아니지만, 이것은 생산 문제보다 훨씬 더 학문적인 문제입니다.정말 강력한 재귀 성능이 필요하다면, PHP는 이미 잘못된 언어입니다.

함수는 대소문자를 구분하지 않습니다.나는 그들이 이것에 대해 무슨 생각을 하고 있었는지 전혀 모릅니다.프로그래밍 언어는 컴퓨터와 코드 판독기 모두에게 모호함 없이 동작을 지정하는 방법입니다.대소문자 불감증은 많은 모호성을 초래합니다.

저는 전적으로 이것에 100% 동의합니다.

PHP는 처리와 프레젠테이션의 결합을 장려합니다(실제로 필요합니다).네, 그렇게 하지 않는 PHP를 작성할 수 있지만, 실제로는 (소리 디자인 관점에서) 잘못된 방식으로 코드를 작성하는 것이 더 쉽습니다.

*흠, 이 주제는 아주 친숙하게 들리네요...

하지만 정말로, 저는 사람들이 당신이 원하는 출력 시스템(PHP 템플릿 시스템의 순수한 볼륨과 스타일만으로도 이것을 말할 수 있다)을 100% 구현할 수 있는 언어에 대해 불평할 것이라는 것이 놀랍습니다. 아니면, 모든 오버헤드를 건너뛰고 직접 출력만 할 것입니다.이것은 PHP를 전혀 나쁘게 만들지 않습니다.그것은 PHP를 좋게 만드는 것의 일부입니다.

캐싱을 하지 않으면 PHP 성능이 최악입니다.PHP용 상용 캐싱 제품을 판매하는 사람이 있습니까?오, 보세요, PHP의 디자이너들은 그렇습니다.

바이트코드 캐싱(액셀러레이터 등) 또는 출력 캐싱을 의미합니까?

만약 전자라면, 저는 제가 이 주제에 대해 얼마나 신경을 쓰는지 잘 모르겠습니다.가속기는 무료이며 실행하기 쉽습니다.우리는 왜 그것이 언어의 일부가 아닌지에 대해 논쟁할 수 있지만, 결국, 나는 그것이 크게 중요하지 않다고 생각합니다.

출력 캐싱에 대해 말씀하시는 거라면 뭐라고 말씀드려야 할지 모르겠습니다.트래픽이 많은 모든 웹 프로젝트는 캐싱이 필요합니다(예: 시드 팟캐스트 #27).이것은 전혀 PHP만의 문제가 아닙니다.

요약하자면, 저는 당신이 PHP를 매우 학문적인 방식으로 "나쁜" 언어라고 생각한다고 생각합니다.그리고 당신의 이전 게시물에서 당신은 아마도 PHP를 사용하여 "일을 마무리"하는 나와 같은 사람들에 의해 부결되었을 것입니다.


두 번째로 높은 평가를 받은 답변


당신의 모든 비판(및 그 이상)은 유효합니다.당신은 PHP를 싫어하는 것이 허용되고 심지어 예상됩니다.

그러나 다음과 같은 이점이 있습니다.

  • 유비쿼터스
  • 빠른 속도(특히 opcode 캐시 사용)
  • 거대한 커뮤니티(및 훌륭한 문서)
  • 작동하다

마지막으로, 여러분은 다른 언어로 작성할 좋은 코드를 작성함으로써 많은 단점을 극복할 수 있습니다.견고하고 안전하며 좋은 냄새 코드를 PHP로 작성할 수 있습니다. PHP는 많은 대안보다 더 빠르게 실행되고 호스팅 및 확장이 용이합니다.


세 번째로 높은 평가를 받은 답변


제가 PHP에 대해 부족한 점은 무엇입니까?저는 유기적으로 성장하고, 제대로 관리되지 않은 언어의 엉망진창이 형편없는 프로그래머들을 양산하고 있는 것을 보고 있습니다.

간단합니다. 가난한 프로그래머들이 그들의 언어에 대해 매우 방어적이라는 사실입니다.;) PHP는 학습하기 쉽고, 대안보다 훨씬 쉬우며, 일단 학습하고 나면 1) PHP의 무엇이 문제인지, 2) 대안이 어떻게 더 나은지, 3) 대안 중 하나로 전환하고 학습하는 방법은 정확히 명확하지 않습니다.

그리고 아마도 사람들이 어떤 대안을 가지고 있을까요? ASP? 대부분의 웹 서버(Apache)에서 실행할 수 없는 것에서부터 터무니없고 지나치게 엔지니어링된 디자인 선택(Webforms)에 이르기까지 그 자체로 많은 문제를 가지고 있습니다.상태 보기?비동기식" 요청이 인터셉트되어 순차적으로 실행되는 AJAX?)루비 온 레일즈?글쎄요, 아마도, 몇 개의 웹 서버가 그것을 다시 지원하는 것을 제외하고는요?현재로서는 쉽게 접근할 수 없습니다.그리고 느립니다.그래서 아마도 PHP의 "장점"은 좋은 대안이 존재하지 않는다는 것입니다.적어도 이것이 제가 가능한 모든 웹 프로그래밍을 멀리하는 이유입니다.PHP는 형편없고, 저도 어떤 대안도 별로 좋아하지 않습니다.

PHP는 근본적인 문제가 너무 많아서 재미도 없습니다.유니코드 지원 부족, 예상치 못한 보안 취약점을 초래하는 수많은 암묵적인 유형 변환, 프레젠테이션의 완벽한 혼합 및...다른 모든 것 또는 매개 변수화된 쿼리를 사용하지 않는 기본 데이터베이스 모듈입니다.우리는 두 가지를 위해 만들어진 언어에 대해 이야기하고 있습니다. 데이터베이스 액세스와 HTML 생성입니다. 둘 다 끔찍합니다.

언어를 설계할 자격이 없거나 능력이 없는 사람들에 의해 설계된 언어인 끔찍한 엉망진창일 뿐입니다. ;)


저에게 최악의 PHP 죄목은 프레젠테이션과 비즈니스 로직의 결합입니다.더 나은 방법으로 쓸 수 없는 것은 아니지만, 그렇게 하도록 격려하지도 않고, 오히려 그렇게 하지 않도록 격려합니다.

수많은 보안 취약성이 PHP 사이트와도 관련되어 있습니다.저는 그것이 불균형적이라는 것을 증명할 수 없지만(많은 사이트가 PHP로 작성되었기 때문에), 저는 그것이 그렇다고 생각합니다.제 말이 맞다면 보안 취약성은 버그의 한 종류이기 때문에 PHP 사이트가 전체적으로 더 버그가 많은 경향이 있다고 생각합니다.

(저는 몇몇 큰 사이트를 가리키며 그들이 PHP로 그것을 할 수 있었다고 말하는 것이 이것에 반대하는 어떠한 주장도 아니라고 생각합니다.옆집 사람이 담배를 피우고 100살까지 살았기 때문에 담배가 암을 유발하지 않는다고 말하는 것과 같습니다.)

이 유사한 질문을 확인하십시오. - PHP는 Java뿐만 아니라 엔터프라이즈 수준의 사이트도 처리할 수 있습니까?

리캡핑 - 페이스북, 위키백과, Yahoo.com , Digg, Flickr 및 많은 다른 거대 사이트들이 PHP에서 실행되고 있습니다.만약 당신이 그 정도의 능력을 가진 것을 만들 수 있다면, 당신은 여전히 PHP로 거기에 도달할 수 있다고 확신할 수 있습니다.

애플리케이션의 유지보수성, 확장성, 안정성, 보안 및 성능은 전적으로 사용자에게 달려 있으며 언어에 구애받지 않습니다.PHP를 선호하지만, 그것은 웹 애플리케이션을 구축하기 위한 매우 편리한 도구를 가지고 있습니다.

저는 대규모 또는 심지어 거대한 프로젝트에 대해 이야기하면 (주로) 한 단어로 요약됩니다.종속성.

스크립팅 언어의 문제는 세상의 모든 것과 같습니다.가장 큰 장점은 동시에 가장 큰 단점입니다.

가장 큰 장점은 자유롭고 빠르게 코딩할 수 있다는 것입니다.스크립트를 작성하기만 하면 목적을 달성할 수 있습니다.상세한 설명이 필요 없습니다. 코드만 입력하면 됩니다.

가장 큰 단점은 어떻게 보면 이 스크립트가 다른 스크립트를 방해하지 않는지 확인하는 것입니다.또는 그 이상:다른 사용자가 의존하는 이전 스크립트를 변경합니다.모든 종속성이 원하는 대로 작동합니까?

여기서 일반적인 의미가 무엇이든 "일반적인" 웹 페이지 생성에는 해당되지 않습니다.그러나 우리는 소스 코드의 약 50만 줄에 의존하는 제품을 보유하고 있으며, 클라이언트를 위한 사용자 정의도 추가적인 100만 줄의 코드로 구성되어 있습니다.그리고 컴파일러가 모든 종속성을 확인하고 내가 잘못한 경우(예: 여기서 가장 낮은 수준으로 말하는 것, 변수 또는 메서드 호출을 잘못 입력하는 것)에 대해 경고/오류를 하는 것이 매우 기쁩니다.

저는 이것과 다른 언어들이 그 특성상 더 사용하기 쉬운 "엔터프라이즈" 기능(즉, "은행 사용"을 위한 애플리케이션 서버)을 제공한다는 사실이 많은 사람들이 대형(또는 더 나은: 거대한) 프로젝트에서 PHP를 보지 못하는 이유를 요약한다고 생각합니다.

우리 회사는 PHP를 사용하여 여러 개의 대형 웹 사이트를 운영하고 있으며, 언어와 관련된 문제는 없었습니다.

PHP 언어를 구성하는 것에 대해 저에게 부족한 점이 있습니다.예를 들어 함수의 이름입니다.한 언어로 함수의 이름을 지정하는 여러 가지 방법을 사용하는 것은 비모범적인 방법입니다.밑줄(function_name), 단어가 서로 붙어 있음(function name) 등의 혼합물입니다.제 말은, 이건 정말 엉망진창이에요.매우 비슷하거나 같은 일을 하는 기능이 너무 많은데 이름이 너무 헷갈립니다.이것은 좋은 프로그래밍 언어의 특성이 아닙니다.

대규모 배포에서는 언어가 쓰기에 충분히 쉽고 구체적이어야 합니다.PHP가 생략하는 변수 유형 선언과 같은 것은 나중에 이해하고 처리하기가 매우 어려워집니다.

또 다른 점은 기능을 지속적으로 추가하고 다른 기능을 취소하는 것입니다.PHP 5에 OOP를 추가하면 프로그래머들이 쉽게 작업할 수 있을 것으로 예상되지만, 백 호환성에 대한 고려 사항은 어떻습니까?

이 프로그래밍 언어가 이와 같은 주된 이유는 그 기원 때문입니다.개인 홈 페이지.대규모 배포를 위해 설계되지 않았습니다.

저는 이 언어를 엔터프라이즈급 언어로 만들기 위한 많은 노력이 있다는 것을 알고 있습니다. 그리고 개인적으로 저는 충분한 오픈 소스 서버 측 프로그래밍 언어를 기다리고 있습니다. 하지만 이 날이 오기 전까지는 많은 것을 할 수 있을 것입니다.

이것들은 모두 좋은 대답입니다.

저는 초보자였습니다.저는 코딩을 한 지 5년밖에 되지 않았지만 85개의 소규모에서 대규모 웹사이트를 직접 지원하고 관리합니다. 웹사이트가 하루 동안 다운되어 소송을 당할 가능성이 있는 것은 어떻게 더 나은 코드를 만들고 배우고자 하는 여러분의 욕구에 많은 기여를 할 것입니다.

기성 개발자들이 이 문제에 대해 의견을 나누는 것을 들으니 기쁩니다.저는 PHP가 최고라고 생각하지 않지만, "베스트 프랙티스"에 대한 저의 투자는 잘 제공되는 것 같습니다.

여러분 감사합니다!

참조: http://www.ukuug.org/events/linux2002/papers/html/php/

언급URL : https://stackoverflow.com/questions/385203/no-php-for-large-projects-why-not

반응형