MVC는 PHP 프로그래밍의 SEO일까요?


9

약한 "PHP 프레임 워크"가 있습니다. 그리고 그들 대부분은 MVC 패턴 을 따르는 것으로 스스로 청구합니다 . osCommerce 코딩 스타일 (SQL 및 HTML과 많이 혼합 된 처리 로직)을 극복하는 것이 좋지만 유지 관리 가능한 응용 프로그램 디자인을 얻는 방법은 간단하고 따르기 쉽습니다.

원래 MVC 개념은 GUI 응용 프로그램을 대상으로합니다. 그리고 Gtk / Python의 경우 그에 따라 따르는 것이 가능해 보입니다. 그러나 PHP 웹 앱은 라이브 뷰 (GUI 요소) 및 영구 컨트롤러 런타임에서 작동하지 않습니다. 사용 된 코드 + 디렉토리 그룹화 또는 클래스 이름 지정을 설명하면 분명히 잘못된 이름입니다.

"MVC"는 PHP 프레임 워크의 전문 용어처럼 사용됩니다. 그리고 실제로 하나 또는 두 개의 성숙한 PHP 프레임 워크가 그것을 인정하지만, 어쨌든 interna와 일치하도록 문구를 재정의하는 것을 보았습니다.
일반적으로 뱀 기름입니까? 더 나은 용어가 사용되지 않고 유지 관리 가능한 PHP에 대한 더 합리적인 개념이 전파되는 이유

정교한 추론

PHP 구현이 실제 MVC 패턴을 따르지 않는 것으로 의심되는 이유는 다음과 같습니다.

모델 : 이론적으로 모델은 뚱뚱하고 비즈니스 로직을 포함해야하며 컨트롤러는 씬 핸들러 (입력-> 출력) 여야합니다. 실제로 PHP 프레임 워크는 얕은 모델을 옹호 합니다. CI 및 심포니는 예를 들어 동일 모델 == ORM입니다. HTTP 입력조차 컨트롤러에 의해 처리되며 모델로 취급되지 않습니다.

조회수 : AJAX가 할인 된 해결 방법, 웹 페이지에는 조회수가 없습니다. PHP 프레임 워크는 여전히 페이지를 펌핑합니다. 인터페이스는 여전히 일반 HTTP 모델을 효과적으로 따르며 비 MVC 응용 프로그램에 비해 이점이 없습니다. (마지막으로, 널리 퍼진 PHP 프레임 워크 중 어느 것도 HTML 대신 GUI 뷰로 실제로 출력 할 수 없습니다. Gtk / Console / Web을 조작 할 수있는 PHP 라이브러리를 보았지만 프레임 워크는 그렇지 않습니다.)

컨트롤러 : 잘 모르겠습니다. 컨트롤러는 MVC 모델에서 오래 실행되고 지속적으로 활성화 될 필요가 없습니다. 그러나 PHP 프레임 워크 컨텍스트에서는 대부분 요청 핸들러입니다. 실제로 논쟁의 여지가있는 것은 아니지만 약간 어색한 느낌입니다.

더 나은 설명자가 있습니까? 나는 PMVC 또는 HMVC와 같은 두문자어가 던져지는 것을 보았습니다. 설명이 더 모호해 지지만 현재 웹 프레임 워크를 덜 설명 할 수 있을까요?


결론적으로 PHP 프레임 워크 는 원래 MVC 와 유사한 개념을 구현 합니다 . 나는 그것이 여기에서 가장 잘 생각합니다 : stackoverflow.com/questions/1549857/simple-php-mvc-framework/…
mario

"대부분의 PHP 프레임 워크는 뷰를 단순한 페이지로 사용합니다"라는 내용에 놀랐습니다. 내가 사용한 모든 PHP 프레임 워크에서 View는 무엇이든 될 수 있으며 기본적으로 HTML 템플릿 일뿐입니다. 따라서 텍스트 상자, 사이드 바, 탐색 막대, 정적 텍스트 블록 또는 페이지 레이아웃 일 수 있습니다. 실제 비즈니스 로직 / 프로세싱이 컨트롤러에서 미리 수행되는 한 거의 모든 것을 할 수 있도록 뷰 내에 뷰를 포함시키지 않는 프레임 워크는 생각할 수 없습니다.
로터스 노트

모델 (안 복수) A는 . 하나의 파일이나 클래스가 아닙니다. 도메인 개체, 데이터 매퍼 및 서비스의 모음입니다. 이것을 읽으십시오 .
제임스

3
... 서? "검색 엔진 최적화"?
Izkata

답변:


12

나는 당신이 이것을 완전히 잘못된 방식으로보고 있다고 생각합니다. GUI 앱과 웹 페이지는 세계적으로 구분되어 있으므로 MVC와 똑같은 정의가 둘 다 작동하지 않습니다. MVC는 디스플레이 및 로직과 같은 앱의 특정 부분을 분리하는 데 이상적입니다.

PHP (또는 일반적인 웹)에서 보기 는 웹 페이지 자체입니다 (HTML 출력). 정의에 따라 "실시간"이 아니지만 링크를 클릭하면 컨트롤러로 다시 이동합니다 (예 : 다른 페이지 요청).

컨트롤러모델 일을 차이점은 무엇 위치를 설명처럼입니다. PHP에서 모델은 데이터베이스와 상호 작용하는 데이터 계층 인 경향이 있습니다. 그러나 여전히 상황을 모델링하고 있으며 페이지로드 당 한 번만 컨트롤러가 여전히 애플리케이션 흐름을 제어합니다.

"Model-View-Controller"라는 이름은 GUI 응용 프로그램과 웹 응용 프로그램의 구현 방식은 다르지만 완벽하게 논리적입니다.


나는 MVC의 추상 개념과 다툼이 없다. PHP 프레임 워크가 Passive-MVC를 실제로 구현하는 것에 대해 부정직하다는 것은 저의 반대 의견입니다. "모델-뷰-프레젠터"패턴조차 더 현실적인 설명입니다. 그러나 다른 도메인에 적용 할 때는 용어를 구부려 야합니다. 원래 질문; 굽힘이라는 용어가 유행어가 될까요?
마리오

3

PHP 프레임 워크를 알지 못하기 때문에 이것은 저수준 언어 관점에서 볼 수 있습니다.

모델 :

이론적으로 모델은 뚱뚱해야하고 비즈니스 논리를 포함해야합니다

그것은 완전히 할 일입니다 .PHP가 이것과 어떤 관련이 있는지 모르겠습니다 ...

모델은 아마도 데이터베이스와 통신 할 수있는 PHP의 데이터 클래스
이며 JSON 형식의 동일한 모델 또는 부분 모델을 클라이언트에 보낼 수도 있습니다.

비즈니스 로직은 말할 것도없고 데이터 로직 (유효성 검증, 데이터베이스 상호 작용, 가져 오기 / 내보내기 등)과 비슷합니다.

컨트롤러는 씬 핸들러 (입력-> 출력) 여야합니다.

Controller 클래스는 Model 클래스와 상호 작용하며 실제로는 얇습니다.

출력을 기반으로 Models로 몇 가지 작업을 수행하고 ModelView를 클라이언트에 반환하십시오.

실제로 PHP 프레임 워크는 얕은 모델을 옹호합니다. CI 및 심포니는 예를 들어 동일 모델 == ORM입니다. HTTP 입력조차 컨트롤러에 의해 처리되며 모델로 취급되지 않습니다.

나는 그 PHP 프레임 워크를 정말로 모른다.

그러나 HTTP 입력은 컨트롤러에 도달하기 전에 처리해야합니다.
GET 및 POST 데이터를 올바른 라우팅 및 매개 변수로 변환하는 클래스를 쉽게 작성할 수 있습니다.

이것은 정확히 ASP.NET MVC 2에서 발생하는 일이며 아무런 문제가 없습니다
.PHP에서 어떻게 될지 모르겠지만 밀접하게 관련이 있다고 생각합니다.

GET 및 POST 데이터를 모델로 쉽게 전환 할 수 있으며 모델에는 생성자 논리가 포함될 수 있습니다. 또는 해당 목적을 위해 별도의 클래스를 추가 할 수 있습니다.


견해:

AJAX가 할인 된 해결 방법은 웹 페이지에보기를 가질 수 없습니다. PHP 프레임 워크는 여전히 페이지를 펌핑합니다.

왜 그렇게 할 수 없는지 모르겠지만 유일한 차이점은 프로토콜과 PHP가 JSON 등을 반환 할 수 있다는 것입니다 ...

페이지는 귀하의 관점이며 AJAX + JSON을 통해 요청하고 업데이트 할 수 있습니다.
다시 한 번, PHP 프레임 워크에 대해 잘 모르지만 ASP.NET MVC 2에서는 그렇게 작동합니다.

인터페이스는 여전히 일반 HTTP 모델을 효과적으로 따르며 비 MVC 응용 프로그램에 비해 이점이 없습니다. (마지막으로, 널리 퍼진 PHP 프레임 워크 중 어느 것도 HTML 대신 GUI 뷰로 실제로 출력 할 수 없습니다. Gtk / Console / Web을 운영 할 수있는 PHP 라이브러리를 보았지만 프레임 워크는 그렇지 않습니다.)

얻을 수있는 유일한 장점은 (일반 응용 프로그램과 동일) 모델 (데이터) +보기 (GUI) + 컨트롤러 (논리)로 분리하는 것입니다. 마찬가지로 GUI 뷰 대신 HTML 또는 JSON으로 실제로 출력 할 수있는 C ++ 프레임 워크가 표시되지 않습니다.


제어 장치:

확실하지 않습니다. 컨트롤러는 MVC 모델에서 오래 실행되고 지속적으로 활성화 될 필요가 없습니다. 그러나 PHP 프레임 워크 컨텍스트에서는 대부분 요청 핸들러입니다. 실제로 논쟁의 여지가있는 것은 아니지만 약간 어색한 느낌입니다.

MVC는 소프트웨어 아키텍처 / 패턴으로, Controller가 실행되고 시간이 오래 걸리지 않습니다.


1

그러나 PHP 웹 앱은 라이브 뷰 (GUI 요소) 및 영구 컨트롤러 런타임에서 작동하지 않습니다.

아뇨, 확실 해요!

AJAX 응용 프로그램을 생각하면 뷰가 컨트롤러에 무언가를 묻고 부분 뷰를 다시 얻습니다.
이 뷰 또는 데이터가 페이지 어딘가에 채워져 실시간으로 업데이트됩니다.

쿠키 / 세션을 사용할 수 있으므로 컨트롤러도 영구적입니다.

"MVC"는 PHP 프레임 워크의 전문 용어처럼 사용됩니다.

MVC는 소프트웨어 아키텍처로, 일부 프레임 워크에서는 버즈로 사용할 수 있지만 다른 프레임 워크 에서는 올바르게 사용할 수 있습니다 . Wikipedia의 일부 프레임 워크 목록을
참조하십시오 .

MVC는 단지 PHP 프로그래밍의 SEO입니까?

MVC와 SEO는 두 가지 차이점이 있지만 그렇습니다. MVC가 점점 인기를 얻고 있습니다.


1
물론 AJAX UI 요소는 더 가까이 있지만 객관적인 해결책입니다. 그리고 그것은 여전히 ​​정의를 굽히는 것처럼 보입니다. (Btw, 나는 Cappucino.org와 다른 실제 툴킷을 ​​알고 있지만 PHP 프레임 워크의 총체를 언급하고 있었다.)
mario

해결 방법으로 부르지 않더라도 Qt 및 기타 프레임 워크를 해결 방법으로도 계산할 수 있습니다 ... 서버와 클라이언트 사이의 데이터 전송 오버 헤드 만 있으며 현재 연결 속도와 대기 시간이 그리 크지 않습니다. 더 이상 정의가 어떻게 구부러 지는지 모르겠습니다.이 패턴은 도메인 로직 (사용자를위한 애플리케이션 로직)을 입력 및 프리젠 테이션 (UI)과 분리하여 각각 독립적 인 개발, 테스트 및 유지 보수를 허용합니다.
Tamara Wijsman

1
무슨 말인지 알 겠어 PHP를 애플리케이션 서버로 해석하고 AJAX를 로직과 UI 사이의 RPC 메커니즘으로 해석하는 경우 가능합니다. 그러나 여전히 HTTP에 대한 해결 방법이라고 부릅니다. OTOH가 MVC 명칭과 관련이 있는지 확실하지 않습니다. 실제로는 "" "MVC" ""만이 사용자가 설명하는 반응 형 및 대화식 웹 UI를 제공한다는 의미에 반대한다고 생각합니다.
마리오

-1

내 의견으로는 PHP에서 MVC를 사용하면 프로그래머가 웹에 온다. MVC로 작업하는 방법을 알고 있으면 Java와 같은 PHP를 사용하는 것이 더 쉽습니다.


+1 그러나 그것은 단지 용어의 이점일까요, 아니면 Java 구현에 가까운 PHP 프레임 워크가 있습니까? (그리고 암묵적으로 Java GUI 또는 Web / Struts에 대해 이야기하고 있습니까?)
mario

정확히 모르지만 zend 프레임 워크를 사용하고 있으며 다른 MVC 프레임 워크와 동일하다고 생각합니다. 모델, 뷰 및 컨트롤러에서 수행해야 할 작업을 아는 것이 매우 중요하므로 프로그래밍 세계와 인터넷 스크립팅 사이의 간격 세계는 닫혀있다. 아마도 인터넷 스크립팅 시대가 끝났을 것입니다. 너무 버그가 있습니다.
baklap
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.