search
HomeBackend DevelopmentPHP ProblemSimple implementation of php mvc

Simple implementation of php mvc

Nov 20, 2020 am 09:07 AM
mvcphp

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
ACID vs BASE Database: Differences and when to use each.ACID vs BASE Database: Differences and when to use each.Mar 26, 2025 pm 04:19 PM

The article compares ACID and BASE database models, detailing their characteristics and appropriate use cases. ACID prioritizes data integrity and consistency, suitable for financial and e-commerce applications, while BASE focuses on availability and

PHP Secure File Uploads: Preventing file-related vulnerabilities.PHP Secure File Uploads: Preventing file-related vulnerabilities.Mar 26, 2025 pm 04:18 PM

The article discusses securing PHP file uploads to prevent vulnerabilities like code injection. It focuses on file type validation, secure storage, and error handling to enhance application security.

PHP Input Validation: Best practices.PHP Input Validation: Best practices.Mar 26, 2025 pm 04:17 PM

Article discusses best practices for PHP input validation to enhance security, focusing on techniques like using built-in functions, whitelist approach, and server-side validation.

PHP API Rate Limiting: Implementation strategies.PHP API Rate Limiting: Implementation strategies.Mar 26, 2025 pm 04:16 PM

The article discusses strategies for implementing API rate limiting in PHP, including algorithms like Token Bucket and Leaky Bucket, and using libraries like symfony/rate-limiter. It also covers monitoring, dynamically adjusting rate limits, and hand

PHP Password Hashing: password_hash and password_verify.PHP Password Hashing: password_hash and password_verify.Mar 26, 2025 pm 04:15 PM

The article discusses the benefits of using password_hash and password_verify in PHP for securing passwords. The main argument is that these functions enhance password protection through automatic salt generation, strong hashing algorithms, and secur

OWASP Top 10 PHP: Describe and mitigate common vulnerabilities.OWASP Top 10 PHP: Describe and mitigate common vulnerabilities.Mar 26, 2025 pm 04:13 PM

The article discusses OWASP Top 10 vulnerabilities in PHP and mitigation strategies. Key issues include injection, broken authentication, and XSS, with recommended tools for monitoring and securing PHP applications.

PHP XSS Prevention: How to protect against XSS.PHP XSS Prevention: How to protect against XSS.Mar 26, 2025 pm 04:12 PM

The article discusses strategies to prevent XSS attacks in PHP, focusing on input sanitization, output encoding, and using security-enhancing libraries and frameworks.

PHP Interface vs Abstract Class: When to use each.PHP Interface vs Abstract Class: When to use each.Mar 26, 2025 pm 04:11 PM

The article discusses the use of interfaces and abstract classes in PHP, focusing on when to use each. Interfaces define a contract without implementation, suitable for unrelated classes and multiple inheritance. Abstract classes provide common funct

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment