PHP30.0 MVC

이제 기본 사항, 기본 사항에 대해 이야기하는 시간을 조금 썼습니다 객체 지향 프로그래밍에 관해서, 나는 실제로 우리가 할 수있는 예제로 들어가고 싶었다

보다 현실적인 환경에서 일부 객체를 구현하는 작업 물론 우리의 색상 예제는 지금까지 우리가이 지점까지 작업 해본 예제입니다 다시 우리의 눈을 되돌아보고 다시 논의 할 수 있을지에 대해 의논합니다 객체 지향적 인 작업 방식 색상 예제에서 여기에 개체를 구현하는 것은 아닙니다

필연적으로 정말 빠르고 간단한 일이 될 것입니다 그것은 상당히 복잡 할 수있다 이렇게함으로써 나는 그것이 실제로 우리가 할 수 있을지에 관해서 이야기하는 것이 중요 할 것이라고 생각한다 노력을 기울일 가치가 있고 목표를 달성하기 위해 객체 지향적 인 작업 방식 그래서 기본적인 이야기는 제가 제 신청서를 보는 방식입니다, 그것은 본질적으로 세 가지 부분으로 구성되어 있습니다

신청서의 일부가 있습니다 기본적으로 상호 작용하는 URL, 기본적으로 어떤 URL을 호출 할 수 있는지, 어떤 매개 변수를 전달할 수 있는지 해당 URL에 실제로 통신 할 때 응용 프로그램이 어떻게 응답합니까? 그 중 하나의 방법으로? 두 번째 부분은 응용 프로그램이 실제로 어떻게 보이는지입니다 어떤 방식 으로든 그것과 상호 작용합니까? 특정 매개 변수가있는 URL을 요청하면 실제로 나에게 보내지는 응답은 어떻게 형식화 되었습니까? 어떻게 나타나나요? 어떤 형식입니까? HTML 또는 다른 유형의 데이터입니까? 세 번째 부분은 애플리케이션이 실제로 내 데이터를 관리합니까? 응용 프로그램에는 여러 가지 방법이 있습니다 작업 할 필요가있는 데이터를 저장하고 작업 할 수 있습니다 이 경우, 물론, 우리는 우리의 컬러 데이터에 대해 이야기하고 있습니다

그러나 어떤면에서 응용 프로그램이 그런 다음 실제로 데이터를 처리합니까? 이들은 본질적으로 세 가지 분리 된 잠재적 인 별개의 부분입니다 이 애플리케이션의 특징 : 데이터를 관리하는 방법, 사용자와 상호 작용하는 방법, 실제 데이터를 관리하는 방법 외관 그러나 실제로 응용 프로그램을 설정하는 방법은 다음 중 두 가지입니다 이 부분들은 실제로 함께 혼합됩니다 내가 지금 설정 한 방법은 응용 프로그램의 모양은 실제로는 별도의 조각이지만 지금은 응용 프로그램의 모양 데이터를 관리하고 응용 프로그램과 상호 작용하는 방식이 실제로 함께 결합됩니다

한 부분으로 여기 우리 페이지 중 일부를 살펴보면 우리가 말하는거야 여기 indexphp라는 내 페이지가 있으며이 페이지가 기본적으로하는 일은 무엇입니까? 그것은 색상을로드하는 것입니다 색상을로드 할 때 실제 수행중인 작업이 그것은 데이터와 직접 상호 작용합니다 내가 정의한이 load_color 함수 호출되는 함수이며 그 함수는 정확히 매우 구체적입니다

색상 저장 방법 이 함수는 현재이 함수가 색상은 텍스트 파일에 저장됩니다 특히 텍스트 파일에서 색상 데이터를로드하고 변환 이 데이터를 텍스트 파일에서 두 요소로 된 2 차원 배열로 반환 한 다음 반환합니다 여기에 실제로 블렌드 된 다른 부분은 아주 분명하지 않습니다 index

php 페이지는 실제로 호출하는 페이지입니다 그래서 이것은 내 응용의 도달 가능한 부분이다 URL을 통해; 특정 신청서를 요청하여 신청서의 특정 부분을 활성화 할 수 있습니다 page – indexphp

그래서 내가 실제로 요청한 페이지는 밀접하게 묶여있다 데이터 자체가 실제로 저장되는 방법에 대해 설명합니다 에 대한 약간의 문제 일 수 있습니다 그 자체가 의미하는 바는, 예를 들어 색상이 어떻게 변했는지 실제로 데이터베이스에 저장된 색으로 전환하고 싶다면, 예를 들어 실제로이 페이지를 변경해야한다는 것을 의미합니다 이는 잠재적으로 바람직하지 않은 것입니다

왜냐하면이 페이지를 변경해야 할 가능성이 가장 높기 때문입니다 나가 나의 색깔이 어떻게에 적재되는지 변화하고 싶으면 나는 각 페이지를 변화해야 할 것을 의미한다 그것은 내가 실제로 벗어나기를 좋아할 것입니다 그래서 그것으로 당신은 볼 수 있습니다 내가 지정한 세 부분 중 두 부분은 서로 아주 긴밀히 묶여있다 사실 이것은 내가 호출하는 페이지이고이 페이지는 데이터로드 방식과 직접 관련되어 있습니다

세 번째 부분은 응용 프로그램이 어떻게 보이는지, 실제로는 이미 정렬 된 부분입니다 자체적으로 회전합니다 내 페이지를 표시하는이 templatized 방식으로 전환했을 때 예를 들어, indexphp와 같이 요청한 페이지는 템플릿 페이지를 요청하고 템플릿 페이지는 응답 형식이 어떻게 바뀌는 지에 대한 토대를 제시하고, 그런 다음 특정 응답에 실제로 채울 데이터를 자체적으로 파악합니다 해당 데이터 형식을 포함하여 예를 들어, index

viewphp라는 페이지가 있습니다 그 부분은 실제로 indexphp 자체에서 실제로 진행되는 것과는 근본적으로 분리되어 있습니다 index

php 페이지가 요청되었는데, 그것은 색상을로드하는 것과 관련이 있습니다 그 대답을 함께 묶는 방법을 결정하는 책임을 맡아 라 이 페이지에서는 현재 템플릿이라고 부릅니다 저기있는 템플릿 페이지 야 그런 다음 실제로 응답을 표시하는 방법을 결정합니다

필요한 데이터가 필요합니다 그 데이터를 적절한 응답으로 통합합니다 그러면 올바른 응답이 반환됩니다 사용자에게 따라서 내 응용 프로그램은 현재 세 가지 다른 부분으로 구성되어 있지만 나는 그 부분들 중 두 부분이 정말로 동일하다고 말했다 그들은 함께 붙어 있습니다

그래서 데이터를 별도로 보았지만 데이터와 상호 작용하는 페이지는 본질적으로, 내가 통과 한 매개 변수는 모두 매우 많이 묶여있다 데이터 자체가 실제로 저장됩니다 그보다 더 좋은 예는 우리가 내 새 페이지 같은 곳에서 색상에 대한 새 페이지는 훨씬 더 분명합니다 요청, 매개 변수 처리 및 데이터 작업은 모두 매우 직접적입니다

함께 묶었습니다 새 페이지에서 실제로 작동하는 부품이 여기에 있습니다 데이터는 매우 분명합니다 여기서 우리는 실제로 파일을 여는 것을 볼 수 있습니다 파일에 쓰는 것은 fwrite 문입니다

그래서 우리는 직접적으로 데이터 및이 데이터가이 페이지에 어떻게 저장되는지에 대해 알아 보도록하겠습니다 데이터가 요청된다는 사실과 관련이 있습니다 데이터를 확인 중이며 데이터를 가져 오는 중입니다 배열에서, 모든 것은 모두 일종의 으깬 것입니다 잠재적으로 그렇게 할 수 있습니다

전에 언급했듯이, 장기적으로는 어떤 문제가 생기게된다 예를 들어 데이터가 실제로 저장되는 방식을 변경하고 싶었습니까? 내가 바꾸고 싶다면 파일 대신 데이터베이스를 사용하는 방법에 대해 알아 보려면이 두 가지를 모두 가져야합니다 부품을 모두 다시 작성하십시오 이 세 부분을 모두 나눌 수 있었다면 그것들은 서로 분리되고 뚜렷해졌으며, 서로 더 잘 캡슐화되었다 잠재적으로 훨씬 더 유연한 응용 프로그램을 만들 수 있습니다

더 쉽게 다른 측면을 교환 할 수 있습니다 예를 들어, 두 부분 지금 당장만큼 친밀하게 연결되지 않았으며, 대신 데이터를 관리하는 플랫 파일로 데이터를 관리하는 애플리케이션 데이터베이스에서 훨씬 쉬운 일이 될 것입니다 그 한 구성 요소를 바꿀 수 있어요 그렇게 생각하고 응용 프로그램의 나머지 부분은 완전히 계속 될 수 있습니다 변하지 않은

나는 이미 그 기본 능력을 그 견해와 함께 가지고있다 내가 결정해야한다면 내가해야하는 모든 반응이 그 템플릿으로 넘어가는 방식을 바꾸고 싶습니다 페이지를 수정하고 코드를 작성하여보기 기반을 변경하는 방법을 결정하도록하십시오 어떤 상황에서 그 데이터의 다른 표현을 반환합니다 나는 할 수 있었다

데이터를 저장하는 방법이나 데이터를 저장하는 방법을 변경하지 않고 바로 지금 수행하십시오 실제 URL 또는 내가 호출 한 매개 변수가 전달됩니다 따라서 확실히 이점이 있습니다 이 점에서 우리의 목표가 잠재적으로 역할을하는 것을 볼 수 있습니다 내가 상상 한 것 우리가 객체를 가지고 데이터를 표현할 수 있다면 우리는 객체로 할 수 있습니다

이 경우 우리의 데이터는 물론 우리의 색상에 대한 데이터이기 때문에 내가 말하는 것에 대해 말하고 있습니다 아마도 색상 클래스와 같을 것입니다 우리가 모든 경영을 할 수 있다면 색상 데이터를 색상 클래스에 넣어 색상 객체를 제공 할 수 있습니다 그 객체들을 캡슐화하고, 객체 내부에서 일어난 일들을 바깥 세계에 아무런 영향을 끼치 지 않았고 그 사물 외부의 것들은 영향을 미치지 않았다 내면에서 무슨 일이 일어 났습니까, 그러면 바로 지금 제가 상황에 처하게 될 것입니다

내 색상 클래스를 사용하여 모든 내 색상 데이터를 저장하고 모든 색상 데이터로 작업 할 수 있습니다 파일로 저장하지만 나중에 모든 색상 데이터를 대신 사용하려는 경우 데이터베이스에서 필요한 것은 색상 클래스를 변경하는 것입니다 아무것도 할 필요가 없었습니다 내 응용 프로그램의 다른 부분에 대해 변경되었습니다 그래서 그것이 내가 할 수있는 필수적인 목표입니다

내 Color 예제를 객체 지향으로 바꾸려는 방향으로 바라보아야합니다 나는 무엇이 될 것인가? 촬영은 실제 데이터 자체로 수행되는 작업을 캡슐화하는 것이며, 실제 데이터를 사용자 및 실제와의 상호 작용으로부터 분리시킵니다 응용 프로그램의 모양 이제이 특별한 아이디어, 응용 프로그램을 설정하는이 패턴, 확실히 내가 꿈꿔 왔던 어떤 것이 아닙니다 이것은 프로그래밍에서 매우 오래된 패턴입니다

그건 꽤 오래되었습니다 이 패턴에서이 세 부분의 응용 프로그램은 일반적으로 데이터를 실제로 처리하는 부분입니다 일반적으로 모델이라고하며, 사용자가 상호 작용하는 부분은 일반적으로 모델이라고 부릅니다 컨트롤러 및 응용 프로그램의 모양을 실제로 결정하는 부분은 일반적으로 보기라는 여기서 우리가 말하는 것은 어플리케이션이있는 패턴입니다 모델, 컨트롤러 및 뷰라는 세 부분으로 나뉩니다

일반적으로 사람들이 이것을 참조 할 때 MVC, 모델 뷰 컨트롤러라고합니다 동일한 기본 아이디어, 모든 것 내가 가진 것보다 약간 다른 순서로 MVC, 모델 뷰 컨트롤러 나처럼 말했다, 그것은 나의 생각이 아니다 외출하여 MVC 또는 모델보기 컨트롤러 용 Google 검색을 수행 할 수 있습니다

MVC를 참조하는 수백, 수천, 수백만의 리소스를 사용하게 될 것입니다 그것은 많은 사람들이 많이 다른 패턴으로 사용 되어온 매우 잘 알려진 패턴입니다 시간과 그것은 본질적으로 내가 당신에게 설명했다 당신은 확실히 웹상에서 나갈 수 있습니다 그것에 대해 자세히 읽어보십시오

사실, 나는 그렇게하도록 분명히 권합니다 그러나이 모든 것들은 본질적으로 이들로 구성된 모듈 식 응용 프로그램을 만드는 것에 관한 것입니다 세 가지 다른 레이어,이 세 가지 기본 요소는 더 쉽게 만들 수 있습니다 우리 프로그램을 더 모듈화 할 수 있도록 부품을 교환 할 수 있도록 더 업그레이드 가능하고 디버그하기 쉽습니다 멋진 장점이 많이 있습니다

이것에 관해서는 우리의 Colors 예제에서 우리가 여기서 쏠 것입니다