>백엔드 개발 >PHP 튜토리얼 >PHP에서 mvc의 원리는 무엇입니까? PHP의 mvc 구현 원리 소개(코드 포함)

PHP에서 mvc의 원리는 무엇입니까? PHP의 mvc 구현 원리 소개(코드 포함)

不言
不言원래의
2018-07-25 15:26:242848검색

PHP에서 MVC의 일부 부분은 이해하기 쉽습니다. 예를 들어 M은 특정 비즈니스 로직을 완성하는 모델 모델이고, V는 정보 표시를 담당하는 뷰 뷰입니다. 주문 발행 및 방법 구별 프론트 데스크에서 요청이 오면 이를 처리하는 데 사용할 방법을 결정한 다음 PHP에서 MVC 원칙을 구현합니까? MVC 원리를 심층적으로 이해하기 위해 코드를 사용해 보겠습니다.

1. 파일 구조
폴더 3개 생성
컨트롤러 파일 저장을 위한 컨트롤러 폴더
뷰 파일 저장을 위한 뷰 폴더
데이터 파일 저장을 위한 모델 폴더
유일한 입구로 index.php 1개 생성
2. 컨트롤러 폴더에 Democontroller.php 파일을 생성합니다. 파일 내용은 다음과 같습니다.

<?php 
class DemoController 
{ 
function index() 
{ 
echo(&#39;hello world&#39;); 
} 
} 
/* End of file democontroller.php */

이 파일에는 방금 DemoController라는 개체를 생성했으며 hello world를 출력하는 인덱스 메서드가 포함되어 있습니다. 다음으로 index.php의 DemoController에서 index 메소드를 실행합니다.

index.php의 코드는 다음과 같습니다.

<?php 
require(&#39;controller/democontroller.php&#39;); 
$controller=new DemoController(); 
$controller->index(); 
/* End of file index.php */

index.php를 실행합니다. 예상대로 우리는 오랫동안 잃어버린 안녕을 보았습니다. 세계. 이 두 파일은 매우 간단하지만 유일한 입구를 통해 실행하려는 컨트롤러를 실행하는 MVC의 본질을 약간 드러냅니다. 물론 컨트롤러 부분은 uri에 의해 결정되어야 하므로 uri를 통해 실행할 컨트롤러를 결정할 수 있도록 index.php를 다시 작성해 보겠습니다.

index.php 다음과 같이 코드를 다시 작성하세요.

<?php 
$c_str=$_GET[&#39;c&#39;]; 
//获取要运行的controller $c_name=$c_str.&#39;Controller&#39;; 
//按照约定url中获取的controller名字不包含Controller,此处补齐。 $c_path=&#39;controller/&#39;.$c_name.&#39;.php&#39;; 
//按照约定controller文件要建立在controller文件夹下,类名要与文件名相同,且文件名要全部小写。 $method=$_GET[&#39;a&#39;]; 
//获取要运行的action require($c_path); 
//加载controller文件 $controller=new $c_name; 
//实例化controller文件 $controller->$method(); 
//运行该实例下的action /* End of file index.php */

브라우저에 http://localhost/index.php?c=demo&a=index를 입력하고 hello world를 확인하세요. 물론, 다른 컨트롤러가 있고 이를 실행하려면 url 매개변수에서 c 및 a 값만 수정하면 됩니다.

여기서 설명할 몇 가지 질문이 있습니다.

1. PHP는 new 문자열을 직접 사용하여 원하는 객체를 얻고 원하는 메서드, 즉 위의 new를 실행할 수 있습니다. $c_name, 새로운 것으로 이해하면 됩니다 'DemoController', $c_name 자체의 값이 'DemoController'이기 때문에 물론 직접적으로 새로운 것입니다. 이와 같이 'DemoController'를 작성하는 것은 불가능합니다. 'DemoController' 문자열은 변수를 통해 전달되어야 합니다. 방법은 동일합니다.
2 URL의 c 값은 $c_name을 의미하는 데모입니다. 값은 decoController여야 합니다. PHP는 대소문자를 구분하지 않나요? 그래도 이렇게 실행할 수 있나요? "php는 대소문자를 구분합니다"라는 문장은 불완전합니다. PHP에서는 변수(앞에 $)와 상수(define으로 정의됨)만 대소문자를 구분하지만 클래스 이름, 메서드 이름 및 일부 키워드는 대소문자를 구분하지 않습니다. 쓴. 그리고 true, false, null 등은 모두 대문자이거나 모두 소문자일 수 있습니다. 물론 실제 인코딩 프로세스에서는 대소문자를 구분하는 것이 좋습니다.

3. View
mvc의 효과를 얻지 못한 이전 컨트롤러에서 "hello world"를 출력했습니다. 다음으로 이를 기반으로 뷰 기능을 추가하겠습니다. 보기 기능을 추가하는 방법입니다. 그렇습니다. 그것은 악한 요구나 포함을 통해 달성됩니다. 먼저 뷰 폴더에 index.php를 만들고 무엇이든 작성합니다(하하, 저는 여전히 hello world를 썼습니다). 그런 다음 이전 DemoController를 다시 작성합니다. 코드는 다음과 같습니다.

<?php 
class DemoController 
{ 
function index() 
{ 
require(&#39;view/index.php&#39;); 
} 
} 
/* End of file democontroller.php */

브라우저에서 다시 실행하여 원하는 내용이 출력되었는지 확인하세요.

그런 다음 컨트롤러를 통해 일부 데이터를 뷰에 전달합니다. 코드는 다음과 같습니다.


<?php 
class DemoController 
{ 
function index() 
{ 
$data[&#39;title&#39;]=&#39;First Title&#39;; 
$data[&#39;list&#39;]=array(&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;); 
require(&#39;view/index.php&#39;); 
} 
} 
/* End of file democontroller.php */

뷰 폴더 아래의 index.php 파일 코드는 다음과 같습니다.

<html> 
<head> 
<title>demo</title> 
</head> 
<body> 
<h1><?php echo $data[&#39;title&#39;];?></h1> 
<?php 
foreach ($data[&#39;list&#39;] as $item) 
{ 
echo $item.&#39;<br>&#39;; 
} 
?> 
</body> 
</html>

관련 권장 사항:

Dugu Jiujian( 8)_php from zero 나만의 PHP 프레임워크 개발을 시작해 보세요

위 내용은 PHP에서 mvc의 원리는 무엇입니까? PHP의 mvc 구현 원리 소개(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.