PHP Forms – MVC (Part 5)

이제 Model View Controller라는 개념에 대해 살펴 보겠습니다 그러나 우리가 실제로 말하고있는 것은 하나의 패턴입니다

PHP 응용 프로그램을 구조화 할 수있는 많은 방법이 있습니다 Symfony 나 Laravel과 같은 프레이머를 사용하기도합니다 그리고 그들은 PHP 코드를위한 매우 정확한 구조를 규정합니다 아니면 그냥 야생 가서 그냥 PHP 코드를 작성하면 그것은 당신의 마음에 온다 따라서이 게임은 거의 추측 할 수 없으며 HTML로 시작합니다

이것은 PHP와 같은 오래된 야생 서쪽과 털이 PHP입니다 첫 번째 줄은 제목입니다 몇 가지가 있습니다 그리고 그것은 PHP로 떨어지고 약간 인쇄를한다 그런 다음 단락으로 끝나면 끝납니다

그래서 당신은 HTML을 들락날락하고 HTML을 들락날 겁니다 일부 계산을하고 있습니다 넌 뭐든지하고있어 당신은 당신이 원하는 방식으로 그것을 합치십시오 그리고 HTML과 같이 대부분 정적 인 작업을하는 경우, 대부분, 당신이 집어 넣은 몇 가지 작은 것들로, 그건 괜찮습니다

PHP는 아주 작은 비트로 된 템플릿 언어와 같기 때문에 그것의 중간 그게 전부 나쁜 것은 아니지, 그렇지? 그러나 애플리케이션이 복잡해지면, 당신은 꽤 많은 일을 끝내게됩니다 이 들어오는 데이터를 처리합니다 추측하는 게임이 아닙니다 모든 것이 추측 게임만큼 단순하다면 훌륭한 코딩 스타일이 될 것입니다

그래서 Model View Controller와 PHP 스크립트 내에서 수행 할 작업에 대해 신중하게 생각하는 규율 그리고 제가 말한 것처럼 당신은 프레임 워크를 사용하고있을 것입니다 오케이 이 중 일부를 수행하기 위해 프레임 워크를 사용할 수도 있습니다 당신에게 정말 명확한 구조를 줄 것입니다

계산을 할 수있을 때, 데이터베이스와 대화 할 때, 그리고 실제로 출력을 생성 할 때 그래서 저는 제가 사용하는 패턴을 가지고 있습니다 모델보기 컨트롤러의 매우 단순화 된 버전입니다 그리고 내 패턴을 좋아할 수도 있고 그렇지 않을 수도 있습니다 나는이 수업의 나머지 부분에 사용할거야

그러나 어느 시점에서, 당신은 다른 패턴으로 실행됩니다 그러나 지금은 단순한 모델 뷰 컨트롤러를 만드는 것은 정말 좋은 방법입니다 여러 파일에서하지 않고 다른 접근 방식에 대해 내가 싫어하는 것 중 하나는 많은 다른 파일에 모델보기 컨트롤러의 조각 나는 그것을 조금 복잡하게 만드는 초보 프로그래머들에게 생각한다

그러나 이것은 이것이 내가하는 방식입니다 이것이 제가 그것을 조직하는 방법입니다 나는 단순함을 좋아하기 때문에 이렇게 많은 코드를 작성한다 이해하기 쉽고 사용하기 쉽지만 동시에 나는 훈육을 좋아합니다 그러나 Laravel이나 Symfony 또는 Cake와 같은 프레임 워크를 사용하거나 뭐든, 아무 문제 없어, 나랑 잘있어

여기서 배우는 모든 기술은 똑같이 적용됩니다 그것은 단지 여러분이 코드를 두는 곳이 그 프레임 워크에서 조금 다릅니다 그래서 나는 그것을 분명히했다고 생각합니다 그것들은 규칙이 아니며, 내가 따라야 할 규칙이지만 제안 사항입니다 그리고 기본적으로 작동하는 방식은 스크립트를 작성하는 경우, 들어오는 POST 데이터를 처리 할 것입니다

[COUGH] 페이지 출력이 있습니다 페이지 출력은 템플릿이며 맨 아래에 있습니다 그래서 이것은 템플릿과 같습니다 맨 위에는 들어오는 데이터를 처리합니다 따라서 상단에 들어오는 데이터가 있고 출력을 맨 아래에 인쇄합니다

그리고 중요한 점은, 여기에 출력물이 없다는 것입니다 데이터를 처리하면 출력이 생성되지 않습니다 물음표 PHP로 파일의 첫 번째 줄부터 시작하기 때문에, 당신은 당신의 코딩을 상단에서합니다 그런 다음 하단에 템플릿을 만듭니다 따라서 적은 코드를 사용하는 경향이 있습니다

가능한 한 아래쪽에 작은 코드가 있습니다 그리고 당신은 정말로 마크 업을 가지고 있고 변수를 넣습니다 때로는 for-loop를 몰래 빠져 나오거나, 하지만 들어오는 데이터를 처리하는 대부분의 코드를 넣는 경향이 있습니다 위에서 코드의 첫 번째 줄을 시작할 수도 있습니다 그리고 이것은 모델 뷰 컨트롤러의 패턴이므로 모델의 아이디어입니다 보기 컨트롤러를 사용하면 사용자가 버튼을 오른쪽 클릭했을 때부터 요청 응답주기? 그래서 사용자가 버튼을 클릭합니다

그리고 컨트롤러가이 모든 것을 담당합니다 컨트롤러는 오케 스트레이터와 같습니다 모델은 데이터 저장소입니다 따라서 컨트롤러는 모든 데이터를 다시 데이터베이스로 보냅니다 그리고 새로운 사용자 인터페이스가 있습니다

보기는 사용자가보고있는 것으로 사용자에게 돌아갑니다 컨트롤러, 모델, 뷰, 컨트롤러, 모델, 뷰, 컨트롤러, 모델,보기 컨트롤러는이 작업의 오케 스트레이터와 같습니다 뷰가 출력입니다 모델이 데이터를 처리하고 컨트롤러가 데이터를 라우팅합니다

그리고 당신은 무슨 일이 일어날 지 알게 될 것입니다 컨트롤러는 때로는 우리가이 스크립트의 모든 것을 처리했다고 말할 것입니다 다른 대본으로 보내 드리겠습니다 그리고 그것은 라우팅이 무엇인지, 하나의 스크립트 또는 한 페이지가 다른 페이지로 또한 컨트롤러의 일부입니다 따라서 오케스트레이션과 라우팅입니다

그리고 우리의 예제가 더욱 복잡해지면이 모든 것이 더 이해가됩니다 이것은 막 시작하고 있습니다 당신이 내가 사용할 수있는 용어의 일부를 이해하기 시작할 것입니다 너에게 좀 더 복잡한 것을 보여주고있다 그래서 그것이 작동하는 방식입니다, 윗부분은 들어오는 데이터를 처리하고 하단 부분은 출력을 생성하는 부분입니다

이제 출력의 일부는 처리 과정에서 발생합니다 그래서 모델과 모델 사이에 전달되는 약간의 데이터가 있습니다 컨트롤러 그리고 제가 생각하기에 저는 항상 선의 종류를 그릴 수 있기를 바랍니다 그리고이 줄 아래에 출력을 시작할 때와 이 줄 위에있는 것은 내가 내 처리의 대부분을 할 때입니다

하지만, 선 비트 위의 정보를 아래 비트로 전달해야합니다 이 경우에는 추측 게임을 만들고 이 변수를 전달하려고합니다 예전의 추측과 이 줄을 가로 질러 내려간 다음 그 데이터를 여기서 꺼낼 것입니다 좋아요, 그래서 통과 된 데이터에는 다음과 같은 데이터가 있습니다 프로세싱을 개발하는 관점에서 생성됩니다

그것이 통과되었고 우리는 그것을 부릅니다 죄송합니다, 버튼을 눌러야 만합니다 컨텍스트로 불러주세요 그리고 컨텍스트에 대해 이야기하는 다른 프레임 워크에서이 사실을 알게 될 것입니다 컨트롤러가 뷰 등으로 넘어가는지 등

그래서이 상단 부분은 모델이고, 들어오는 데이터를 처리하고, 문맥을 준비합니다 뷰는 컨텍스트를 입력으로 사용하여 출력을 렌더링합니다 그래서 단순한 규칙들 중 하나가이 불가사의 한 마법의 선 위에 있습니다 HTML을 제작하지 않아도 되죠? HTML이 없습니다 그리고이 줄 아래에는 약간의 코드가 있습니다

이 if 문을 얻은 것처럼, 그것은 끔찍한 일이 아닙니다 그러나 확실히 데이터베이스 활동이 없습니다 모든 데이터베이스가 여기에서 발생하므로 모든 SQL이 발생합니다 그리고 나서 그것은 단순한 일종의 단순한 렌더링 일 수도 있습니다 if,하지만 실제로 데이터베이스와 대화하는 것은 아닙니다

이것이 모델 뷰 컨트롤러를 구현하는 방법입니다 그래서 우리가 이것의 윗부분을 본다면 이것의 모델 부분, 모델의 목표는 출력을하지 않고 컨텍스트를 전달하는 것임을 기억하십시오 그리고이 추측 게임이 필요로하는 것은 이전의 추측은 작은 양식 필드에 다시 놓을 수 있도록 게시물 데이터가 높았는지, 낮았는지 또는 좋지 않은지 여부를 알 수 있습니다 따라서 모든 모델보기 컨트롤러에서 볼 수있는 한 가지 점은 큰 'if'문과 '게시자 데이터가 있습니까?' 과 그 중 일부는이 스크립트가 처음 실행될 때, 요청을 얻는 것이므로 출력을 생성합니다 그래서 사실, get 요청에, get 요청은이 작업을 수행하고 다른 모든 작업은 건너 뜁니다

그런 다음 게시물 요청과 함께 데이터를 제출하면 다시 들어 오면 데이터가 여기에 있고 POST 요청을위한 것입니다 그래서 이것은 GET 요청이며 GET 요청은 이것을 건너 뜁니다 POST 요청은 그렇지 않습니다 실제로 GET 요청은이 두 줄을 처리합니다 그래서 GET 요청은 $ oldguess가 비어 있고 메시지가 거짓임을 말합니다

그래서 그 맥락입니다 GET 요청 인 경우 컨텍스트는 $ oldguess 및 $ message입니다 지금 몇 가지 게시물 데이터가있는 경우 게시물 데이터가 있다면 우리는 단지 0을 추가 할 것입니다 나는 가지 않을거야, 나는 여기에 일련의 검증을하지 않았다

나는 그것을 숫자로 바꾸기 위해 0을 추가하는 것뿐입니다 비록 내가 그런 식으로 할 필요조차 없어도 모든 추측은 메시지가, 위의 예에서는 echo 문을 여기에 넣었습니다 이제이 모델 뷰 컨트롤러에서는 echo 문을 사용할 수 없습니다 그래서 우리는 메시지를 전달해야합니다

그래서 메시지는 너무 좋거나 작을 것입니다 그리고 그것은 템플릿으로 전달 될 것입니다 따라서이 두 변수는 get 요청인지 또는 게시물 요청,이 두 변수 oldguess 및 메시지는 모델과 뷰 사이에서 전달되는 컨텍스트입니다 이제 뷰를 살펴보면 뷰를 살펴 봅니다 그래서보기는 실제로 HTML의 시작입니다

그것은 HTML 태그를 가지고 있습니다 우리는 거기에 문서 유형도 넣을 수 있습니다 머리는 [소리]입니다 그리고 나서이 단락을 꺼내기 위해 여기에 약간의 논리를 넣을 수도 있습니다 그 메시지가 거짓인지 확인하기 위해 메시지가 없으면 인쇄하고 싶지 않기 때문이 아닙니다

뷰 부분에서는 괜찮습니다 정말로 뭔가를 확인하고 조건부로 출력을 내고 있습니다 그건 별거 아니에요 그리고 나서 우리는 여기에 오래된 것의 인쇄물을 가지고 있습니다 값 사이에, 맞지? 거기에 이중 따옴표가 필요할 수도 있습니다

나는 그것을 고쳐야한다 그리고 그것이 바로 그 것입니다 따라서 컨텍스트가 여기에 표시되고 컨텍스트가 여기에 있음을 볼 수 있습니다 여기에서 여기까지 거의 모든 HTML이 있습니다 컨텍스트에서 설정되는 몇 가지 작은 동적 비트가 있습니다

좋아요, 그래서 거기에 코드가 있습니다 이것은 윗부분이고, 패스 할 때 올가미와 메시지를 전달합니다 완료되면 이전 값이 표시됩니다 [음악] 그래서 우리는 GET 요청과 POST 요청에 대해 이야기했습니다 우리는 HTML 엔터티, 데이터 유효성 검사, 다양한 양식 필드에 대해 이야기했습니다

HTML 5의 새로운 필드들과 모델 뷰 컨트롤러에 대해 조금 이야기했다 모델보기 컨트롤러는 우리가하는 것처럼 이해할 수 있습니다 그 최고의 부분에서 점점 더 정교한 작업량을 얻습니다 이는 우리가 수행하는 각 스크립트에 대한 자동 처리 유형입니다 [음악]