Home >Backend Development >PHP Problem >Simple implementation of php mvc

Simple implementation of php mvc

藏色散人
藏色散人Original
2020-11-20 09:07:482543browse

php mvc implementation method: first define the system directory; then obtain the controller; finally enter "path/to/yoursite/index.php?controller=test&action=test" in the browser to test successfully.

Simple implementation of php mvc

Recommended: "PHP Video Tutorial"

The simplest way to implement MVC development in PHP— —Single point of entry

Today I will start writing in detail some of my understanding of MVC, as well as my process of implementing one of my own frameworks during the development process. Maybe what I said is incorrect, please correct me!

There are a lot of teaching materials about MVC on the website. I won’t go into details here. If you don’t understand, I recommend you to search for “MVC” on Baidu. I believe you can find what you want. Here I will talk about my understanding of MVC in actual PHP development. M, module, main task is to read data from database or other file systems in the way we need. V, view, my understanding is that it is mainly responsible for displaying data to users in the form of html. C, controller, is mainly responsible for business logic. For example, if you want to display the login interface, you need to call the loginAction method of a controller userController to display it (maybe this does not need to call the module). For another example, if you perform a login check, you can call the userController method. checkAction to perform logical processing. (I feel Verdana’s correction_).

Quote

M refers to model. The Controller does not participate in business logic, and the entire business logic part should be placed in the Model layer. The Controller only plays the role of distributing requests, that is to say, it gets the current Request, decides which Model to call to obtain the data, and then assigns it to which View to render the page.

I think it is best to implement MVC specifically. to single point of entry.

What is a single point of entry? The so-called single point of entry means that there is only one entrance for the entire application, and all implementations are forwarded through this entrance. For example, above we use index.php as the single point of entry for the program. Of course, this can be controlled by you.

Why do we need a single point of entry? There are several advantages to a single point of entry: First, some variables, classes, and methods processed globally by the system can be processed here. For example, you need to perform preliminary filtering of data, you need to simulate session processing, you need to define some global variables, and you even need to register some objects or variables into the register (mainly implemented globally, for details you can refer to my previous translation Some of the articles "Using global variables in PHP"). Second, the program structure is clearer. Of course, there are many more benefits, and I won’t list them all. You can experience them in detail.

Of course, there are some shortcomings in single-point entry. For example, when your system becomes large, it is impossible to have only one point as the entry point, especially when the system has two completely unrelated functions. But I am happy to say that this It is scalable and you can expand multiple entries. For example, in a recent large project, the backend management and the frontend are not related, so I will have two entrances, one is index.php and the other is admin.php. But this does not mean that single point entrance is not good (you can figure out the specific meaning).

So, how to implement a single point of entry? This is my focus for this section. Generally speaking, it is realized through the address mapping of URL (I have an article talking about this before: "Answering several questions on PHPCHINA: URL mapping", which implements the core of single point entry. Here I implement it specifically and Demonstration below). The most important thing about the single point of entry is to pass parameters through the url to realize the allocation of the program. Specifically, for example, if the address is index.php?controller=test&action=test, then the request will be forwarded to the corresponding testController file through index.php. And execute its corresponding testAction method (the names of the controllers and methods here refer to the ideas of Zend Framework).

Below we use the simplest method to implement the single point of entry mentioned above (remember: for the sake of simplicity, I am not using URL mapping here)

/index.php
<?
/**
* MVC演示demo
* 仅仅实现最基本的MVC功能,不包含安全处理,数据过滤,及其他优化措施。
*/
define(‘SITE_PATH’,str_replace(‘‘,’/’,dirname(FILE)));//定义系统目录
controller=(!empty(controller=(!empty(_GET[‘controller’]))?GET[‘controller′]:‘index′;
//获取控制器,默认indexGET[‘controller′]:‘index′;
//获取控制器,默认indexaction=(!empty(GET[‘action′]))?GET[‘action′]))?_GET[‘action’]:‘index’;
//方法名称,默认index
controllername=controllername=controller.‘Controller’;
controllerfile=SITEPATH.‘/app/controller/′.controllerfile=SITEPATH.‘/app/controller/′.controller_name.‘.class.php’;//获取控制器文件
if(file_exists(controller_file)){ 
require_once(controller_file)){ require_once(controller_file);
controller=newcontroller=newcontroller_name();
controller->{controller->{action.‘Action’}();
}else{
die(‘找不到对应的控制器!’);
}
?>
对应的一个演示demo
/app/controller/testController.class.php(注意路径)
<?
/**
* MVC演示demo
* 仅仅实现最基本的MVC功能,不包含安全处理,数据过滤,及其他优化措施。
*/
class testController
{
function testAction(){
echo ‘Hello,World!’;
}
}
?>

Open the browser and enter http ://path/to/yoursite/index.php?controller=test&action=test (pay attention to modify your path accordingly), if you see Hello, World!, it means that the first step of MVC, the single point entry is successful!

The above is the detailed content of Simple implementation of php mvc. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn