Home >Backend Development >PHP Tutorial >An implementation plan for plug-in mechanism in PHP development_PHP tutorial
The starting point of this article is my understanding of the plug-in mechanism and its implementation in PHP. This solution is only one of the implementation solutions of the plug-in mechanism in PHP. Write it down and share it with everyone. Everyone is welcome to discuss it.
Plug-in, also known as Plug-in, refers to a specific type of functional module (usually implemented by third-party developers). Its characteristics are: activate it when you need it, and disable it when you don’t need it. Delete it; and whether it is activated or disabled, it will not affect the operation of the core module of the system. In other words, the plug-in is a non-intrusive modular design that achieves loose coupling between the core program and the plug-in program. A typical example is the numerous third-party plug-ins in WordPress, such as the Akimet plug-in, which is used to filter spam on user comments.
A robust plug-in mechanism, I think, must have the following characteristics:
Dynamic monitoring and loading of plug-ins (Lookup)
Dynamic triggering of plug-ins
The implementation of the above two points will not affect the operation of the core program
To implement plug-ins in a program, the first thing we should think of is to define different hooks; "Hooks" are a very vivid logical concept, and you can think of them as plug-in trigger conditions reserved by the system. Its logic principle is as follows: when the system executes a certain hook, it will determine whether the conditions of the hook are met; if it is met, it will first call the function specified by the hook, and then return to continue executing the rest of the program; if it is not met, it will first call the function specified by the hook. , just skip it. This is a bit like "interrupt protection" logic in assembly.
Some hooks may have been designed by the system in advance. For example, the hook about comment spam filtering I mentioned before is usually designed by the core system developers into the comment processing logic; another type of hook may It is customized by the user (formulated by a third-party developer) and usually exists in the presentation layer, such as an ordinary PHP form display page.
Maybe you feel that the above words are boring and make you sleepy; but to understand the code I wrote below, it is essential to understand the above principles.
The following is the core implementation of the plug-in mechanism in PHP. The core of the entire mechanism is divided into three major blocks:
A plug-in manager class: This is the core of the core. It is an application global Global object. It has three main responsibilities:
Responsible for monitoring all registered plug-ins and instantiating these plug-in objects.
Responsible for registering all plug-ins.
When the hook condition is met, the corresponding object method is triggered.
Plug-in function implementation: This is mostly done by third-party developers, but certain rules need to be followed. This rule is stipulated by the plug-in mechanism and varies depending on the plug-in mechanism. You will see this in the display code below rule.
Plug-in triggering: that is, the triggering condition of the hook. Specifically, this is a small piece of code that is placed where you need the plug-in implementation to trigger this hook.