Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menyesuaikan sambungan dalam PHP (1) Langkah asas

Bagaimana untuk menyesuaikan sambungan dalam PHP (1) Langkah asas

藏色散人
Lepaskan: 2023-03-14 14:30:01
ke hadapan
2709 orang telah melayarinya

sambungan tersuai php (1)

Saya masih ingat bahawa kali pertama saya menulis sambungan php adalah terus dari Baidu saya menulis sambungan berdasarkan Internet, tetapi Saya tidak tahu mengapa Mari kita lihat langkah asas sambungan dahulu, dan kemudian terokai prinsip di sebaliknya.

Gunakan alat kod sumber untuk menjana struktur direktori lanjutan secara automatik

Mula-mula masukkan direktori ext kod sumber php dan laksanakan arahan berikut

/www/test/php/php/bin/php ext_skel.php --ext helloworld
cd helloworld
Salin selepas log masuk

Ubah suai config.m4 Fail konfigurasi, iaitu, sama ada sambungan yang anda tulis sekarang menggunakan kebergantungan luaran, konfigurasikan pilihan --dengan-hello, jika tidak konfigurasikan pilihan --enable-hello dan alih keluar komen mengikut keperluan anda sendiri

dnl If your extension references something external, use 'with':
 PHP_ARG_WITH([helloworld],
   [for helloworld support],
   [AS_HELP_STRING([--with-helloworld],
     [Include helloworld support])])

dnl Otherwise use 'enable':
Salin selepas log masuk

fungsi sambungan Tulis

dan kemudian vim  helloworld.c tulis kod fungsi lanjutan
Mula-mula lihat definisi struktur modul

zend_module_entry helloworld_module_entry = {
        STANDARD_MODULE_HEADER,
        "helloworld",                                   /* Extension name */
        helloworld_functions,                   /* zend_function_entry */
        PHP_MINIT(helloworld),                                                  /* PHP_MINIT - Module initialization */
        NULL,                                                   /* PHP_MSHUTDOWN - Module shutdown */
        PHP_RINIT(helloworld),                  /* PHP_RINIT - Request initialization */
        NULL,                                                   /* PHP_RSHUTDOWN - Request shutdown */
        PHP_MINFO(helloworld),                  /* PHP_MINFO - Module info */
        PHP_HELLOWORLD_VERSION,         /* Version */
        PHP_MODULE_GLOBALS(pib),
    NULL,
    NULL,
    NULL,
    STANDARD_MODULE_PROPERTIES_EX
};
Salin selepas log masuk

Set nama fungsi fungsi

static const zend_function_entry helloworld_functions[] = {
        PHP_FE(helloworld_test1,                arginfo_helloworld_test1)
        PHP_FE(helloworld_test2,                arginfo_helloworld_test2)
        PHP_FE_END
};
Salin selepas log masuk

Kod fungsi fungsi sebenar

PHP_FUNCTION(helloworld_test2)
{
        int argc = ZEND_NUM_ARGS();
        char *messages = NULL;
        size_t   messages_len = 0;
        char *context = NULL;
        size_t   context_len = 0;

        zend_string *retval;

        ZEND_PARSE_PARAMETERS_START(0, 2)
                Z_PARAM_OPTIONAL
                Z_PARAM_STRING(messages, messages_len)
                Z_PARAM_STRING(context, context_len)
        ZEND_PARSE_PARAMETERS_END();

        retval = strpprintf(0, "Hello %s test %s", messages, context);

        RETURN_STR(retval);
}
Salin selepas log masuk

Takrifan parameter fungsi

ZEND_BEGIN_ARG_INFO(arginfo_helloworld_test2, 0)
        ZEND_ARG_INFO(0, str)
ZEND_END_ARG_INFO()
Salin selepas log masuk

Kompil dan pasang

/www/test/php/php/bin/phpize
./configure --with-php-config=/www/test/php/php/bin/php-config
make && make install
Salin selepas log masuk

Ia kini berada dalam direktori sambungan PHP Dengan fail helloworld.so, tambah konfigurasi sambungan dalam php.ini

extension = helloworld.so
Salin selepas log masuk

dan kemudian anda boleh menguji fungsi yang anda menulis helloworld_test2(); Selepas menyelesaikan sambungan, saya rasa saya tidak mempunyai apa-apa, saya tidak tahu prinsip mengapa ia ditulis seperti ini. Mari kita mulakan dengan pengenalan Kitaran hayat PHP Lihat Bahagian Seterusnya.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk menyesuaikan sambungan dalam PHP (1) Langkah asas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
c php
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan