Rumah > Artikel > pembangunan bahagian belakang > Cara membuat sambungan PHP tersuai
Dalam PHP, sambungan merujuk kepada cara untuk menambah fungsi baharu pada PHP Ia boleh mengembangkan keupayaan PHP dan menyesuaikan diri dengan pelbagai senario aplikasi. Sambungan PHP ditulis dalam bahasa C, jadi kebiasaan dengan bahasa C adalah keperluan asas untuk pembangunan sambungan.
Jika anda ingin menjadikan kod anda tersedia kepada orang lain sebagai sambungan PHP, anda perlu membuat sambungan PHP tersuai. Artikel ini akan menunjukkan kepada anda cara membuat sambungan PHP asas.
Sebelum anda mula membangunkan sambungan, anda perlu memasang persekitaran pembangunan PHP, yang termasuk PHP itu sendiri dan rangkaian alat yang berkaitan. Anda boleh pergi ke laman web rasmi PHP untuk memuat turun kod sumber PHP dan menyusun dan memasangnya, atau terus menggunakan pakej binari yang disusun.
Selepas memasang PHP, anda juga perlu memasang kit alat pembangunan PHP, seperti kit pembangunan sambungan PHP C/C++, phpize dan alatan lain. Alat ini membantu anda menyusun dan membina sambungan PHP dengan cepat.
Memandangkan sambungan PHP ditulis dalam bahasa C, anda perlu mempelajari bahasa C dan biasa dengan API dan jenis data yang diperlukan untuk sambungan , Untuk menulis kod C lanjutan. Di sini, kami mengambil mencipta fungsi penambahan ringkas sebagai contoh:
Dalam direktori lanjutan, buat penambahan fail kod sumber baharu.c dan tulis kandungan berikut:
#include "php.h" // 定义函数原型 PHP_FUNCTION(addition); // 定义模块信息结构体 zend_module_entry addition_module_entry = { STANDARD_MODULE_HEADER, "addition", NULL, NULL, NULL, NULL, NULL, NULL, "1.0", STANDARD_MODULE_PROPERTIES }; // 定义函数参数 ZEND_BEGIN_ARG_INFO_EX(arginfo_addition, 0, 0, 2) ZEND_ARG_INFO(0, a) ZEND_ARG_INFO(0, b) ZEND_END_ARG_INFO() // 定义函数 PHP_FUNCTION(addition) { // 定义变量 int a, b; long result; // 从参数中获取值 ZEND_PARSE_PARAMETERS_START(2, 2) Z_PARAM_LONG(a) Z_PARAM_LONG(b) ZEND_PARSE_PARAMETERS_END(); // 计算结果 result = a + b; // 返回结果 RETURN_LONG(result); } // 注册函数入口 zend_function_entry addition_functions[] = { PHP_FE(addition, arginfo_addition) PHP_FE_END }; // 构造扩展 zend_module_entry *get_module(void) { return &addition_module_entry; } // 扩展初始化函数 PHP_MINIT_FUNCTION(addition) { return SUCCESS; } // 扩展关闭函数 PHP_MSHUTDOWN_FUNCTION(addition) { return SUCCESS; } // 扩展信息函数 PHP_MINFO_FUNCTION(addition) { php_info_print_table_start(); php_info_print_table_header(2, "addition support", "enabled"); php_info_print_table_end(); } // 定义模块 zend_module_entry addition_module_entry = { STANDARD_MODULE_HEADER, "addition", addition_functions, // 注册扩展的函数入口 PHP_MINIT(addition), PHP_MSHUTDOWN(addition), NULL, NULL, PHP_MINFO(addition), "1.0", STANDARD_MODULE_PROPERTIES }; // 将扩展注册到PHP中 ZEND_GET_MODULE(addition)
Pelanjutan bangunan dilakukan terutamanya menggunakan alat baris arahan yang disertakan dengan PHP. Dalam direktori sambungan, laksanakan arahan berikut:
phpize ./configure make
Arahan ini secara automatik akan menjana Makefile, menyusun dan memaut serta menjana tambahan pustaka pautan dinamik (fail sambungan).so. Pada ketika ini anda boleh menggunakan fungsi phpinfo() untuk menyemak sama ada sambungan telah dihasilkan.
Akhir sekali, anda perlu menyalin tambahan fail sambungan yang dijana.jadi ke direktori modul PHP dan edit fail php.ini untuk mendayakan sambungan:
sudo cp ./modules/addition.so /path/to/php/modules/ sudo echo "extension=addition.so" >> /path/to/php/php.ini
Sekarang sambungan tersuai anda sedia Jika digunakan, anda boleh memanggil fungsi penambahan() dalam kod PHP untuk melakukan pengiraan penambahan.
Ringkasan
Mencipta sambungan PHP tersuai memerlukan kebiasaan dengan bahasa C dan API serta jenis data yang diperlukan untuk sambungan PHP, serta pengetahuan menyusun dan memasang sambungan. Jika anda baru dalam pembangunan sambungan PHP, anda boleh mulakan dengan beberapa sambungan mudah dan secara beransur-ansur meningkatkan kemahiran pengaturcaraan anda.
Atas ialah kandungan terperinci Cara membuat sambungan PHP tersuai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!