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

Bagaimana untuk menyesuaikan sambungan dalam PHP (1) Langkah asas

藏色散人
藏色散人ke hadapan
2021-12-20 15:47:282686semak imbas

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

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':

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
};

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
};

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);
}

Takrifan parameter fungsi

ZEND_BEGIN_ARG_INFO(arginfo_helloworld_test2, 0)
        ZEND_ARG_INFO(0, str)
ZEND_END_ARG_INFO()

Kompil dan pasang

/www/test/php/php/bin/phpize
./configure --with-php-config=/www/test/php/php/bin/php-config
make && make install

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

extension = helloworld.so

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!

Kenyataan:
Artikel ini dikembalikan pada:segmentfault.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam