Home > Article > Backend Development > PHP Kernel Learning-01-Preparation_PHP Tutorial
I haven’t written anything about PHP for a long time. This time we will talk about knowledge related to the PHP kernel.
According to management, let’s prepare the environment before starting to explain:
Environment preparation:
1. For Linux environment, we use ubuntu/debian. Both systems can be used
2. PHP source code, the code we are explaining is php-5.4.13.tar.gz, you can download the code from the php official website
3. The webserver uses nginx and the database is mysql
PHP source code must be prepared, nginx and mysql can be optionally installed
After the PHP source code is downloaded, we will unzip the source code and first take a look at the directory structure of the source code:
build: This mainly contains some files related to source code compilation
ext: PHP extension source code path
main:
Zend: zend engine implementation directory
pear: PHP extension and application repository
sapi: Various server abstraction layer codes, such as apache, nginx, etc.
TSRM: Thread-Safe Resource Manager
test: test code
To view the source code, we use vim+ctags. If you don’t understand what this is, please Baidu it yourself.
Knowledge preparation:
There are many macro definitions used in PHP source code. Before starting, let’s review the knowledge related to macros.
1. Double ## This is the connector in C language. Let’s look at an example and you will understand.
#define TEST(name) hello_##name
Let’s take a look at the result of calling: TEST(world): hello_world
Do you understand?
2. Let’s take a look at the # sign again. The function of this symbol is to add double quotes before and after the replaced value of the macro variable. Let’s look at an example
#define TEST(str) #str
Let’s take a look at the call: printf(TEST(HELLO WORLD)); The result is printf("HELLO WORLD");
3. #line This command is used to change the current line number and file name
4. There are also some commonly used macros, which we will introduce when we use them in the future