Jadual Kandungan
Kata Pengantar
Kod
Kod sumber sambungan PHP untuk melaksanakan kaedah default_value
Perihalan kod
Mendapatkan parameter
zend_parse_parameters
ZPP CEPAT
Nilai pulangan
Rumah pembangunan bahagian belakang PHP7 Contoh untuk menerangkan nilai pulangan pembangunan sambungan PHP7

Contoh untuk menerangkan nilai pulangan pembangunan sambungan PHP7

Oct 15, 2021 pm 04:32 PM
php7

Kata Pengantar

Kali ini, kami akan menunjukkan cara menerima parameter masuk dan nilai pulangan output dalam sambungan PHP.

<?php
    function default_value ($type, $value = null) {
        if ($type == "int") {
            return $value ?? 0;
        } else if ($type == "bool") {
            return $value ?? false;
        } else if ($type == "str") {
            return is_null($value) ? "" : $value;
        }
        return null;
    }
 
    var_dump(default_value("int"));
    var_dump(default_value("int", 1));
    var_dump(default_value("bool"));
    var_dump(default_value("bool", true));
    var_dump(default_value("str"));
    var_dump(default_value("str", "a"));
    var_dump(default_value("array"));
?>
Salin selepas log masuk

Kami akan melaksanakan kaedah default_value dalam sambungan. [Disyorkan: "Tutorial PHP7"]

Kod

Kod sumber sambungan PHP untuk melaksanakan kaedah default_value

default_value kaedah:

PHP_FUNCTION(default_value)
{
    zend_string     *type;    
    zval            *value = NULL;
 
#ifndef FAST_ZPP
    /* Get function parameters and do error-checking. */
    if (zend_parse_parameters(ZEND_NUM_ARGS(), "S|z", &type, &value) == FAILURE) {
        return;
    }    
#else
    ZEND_PARSE_PARAMETERS_START(1, 2)
        Z_PARAM_STR(type)
        Z_PARAM_OPTIONAL
        Z_PARAM_ZVAL_EX(value, 0, 1)
    ZEND_PARSE_PARAMETERS_END();
#endif
     
    if (ZSTR_LEN(type) == 3 && strncmp(ZSTR_VAL(type), "int", 3) == 0 && value == NULL) {
        RETURN_LONG(0);
    } else if (ZSTR_LEN(type) == 3 && strncmp(ZSTR_VAL(type), "int", 3) == 0 && value != NULL) {
        RETURN_ZVAL(value, 0, 1); 
    } else if (ZSTR_LEN(type) == 4 && strncmp(ZSTR_VAL(type), "bool", 4) == 0 && value == NULL) {
        RETURN_FALSE;
    } else if (ZSTR_LEN(type) == 4 && strncmp(ZSTR_VAL(type), "bool", 4) == 0 && value != NULL) {
        RETURN_ZVAL(value, 0, 1); 
    } else if (ZSTR_LEN(type) == 3 && strncmp(ZSTR_VAL(type), "str", 3) == 0 && value == NULL) {
        RETURN_EMPTY_STRING();
    } else if (ZSTR_LEN(type) == 3 && strncmp(ZSTR_VAL(type), "str", 3) == 0 && value != NULL) {
        RETURN_ZVAL(value, 0, 1); 
    } 
    RETURN_NULL();
}
Salin selepas log masuk

Perihalan kod

Mendapatkan parameter

Dalam PHP7, dua kaedah mendapatkan parameter disediakan. zend_parse_parametersDan cara ZPP PANTAS.

zend_parse_parameters

Sebelum PHP7, fungsi zend_parse_parameters telah digunakan untuk mendapatkan parameter. Fungsi fungsi ini adalah untuk menukar parameter masuk kepada jenis yang sepadan dalam kernel PHP, supaya ia boleh digunakan dalam sambungan PHP.
Perihalan parameter:
Parameter pertama, bilangan parameter. Biasanya hanya gunakan ZEND_NUM_ARGS(), tidak perlu diubah.
Parameter kedua ialah rentetan format. Fungsi rentetan format ini adalah untuk menentukan hubungan penukaran antara parameter masuk dan jenis teras PHP.

Maksud S|z dalam kod ialah:
S bermaksud parameter ialah rentetan. Tukar parameter masuk kepada jenis zend_string.
|. menunjukkan bahawa parameter berikut adalah pilihan. Ia boleh diteruskan atau tidak.
z menunjukkan bahawa parameter adalah berbilang jenis. Tukar parameter masuk kepada jenis zval.

Selain itu, terdapat beberapa penentu yang memerlukan perhatian:
! Jika pembolehubah null dalam bahasa PHP diterima, ia ditukar terus kepada NULL dalam bahasa C dan bukannya merangkumnya ke dalam zval jenis IS_NULL.
/ Jika pembolehubah yang dilalui berkongsi zval dengan pembolehubah lain dan bukan rujukan, ia akan dipaksa untuk mengasingkan zval baharu is_ref__gc==0 dan refcount__gc==1.

Lebih banyak format. makna rentetan boleh dilihat di laman web rasmi. https://wiki.php.net/rfc/fast_zpp

ZPP CEPAT

Kaedah baharu yang disediakan dalam PHP7. Ia adalah untuk meningkatkan prestasi penghuraian parameter. Untuk kaedah yang kerap digunakan, adalah disyorkan untuk menggunakan kaedah FAST ZPP.
Penggunaan:
Mulakan dengan ZEND_PARSE_PARAMETERS_START(1, 2).
Parameter pertama menunjukkan bilangan parameter yang mesti dilalui, dan parameter kedua menunjukkan bilangan maksimum parameter yang boleh dilalui.
berakhir dengan ZEND_PARSE_PARAMETERS_END();.
Tengah ialah penghuraian parameter masuk.
Perlu diperhatikan bahawa secara amnya kaedah makro FAST ZPP sepadan dengan penentu zend_parse_parameters satu sama satu. Contohnya:
Z_PARAM_OPTIONAL sepadan dengan |
Z_PARAM_STR sepadan dengan S
Walau bagaimanapun, kaedah Z_PARAM_ZVAL_EX adalah istimewa. Ia sepadan dengan dua penentu, iaitu ! dan /. ! Sepadan dengan parameter kedua kaedah makro. / sepadan dengan parameter ketiga kaedah makro. Jika anda ingin mendayakannya, tetapkan ia kepada 1.

Kaedah makro FAST ZPP yang sepadan boleh dilihat di laman web rasmi https://wiki.php.net/rfc/fast_zpp#proposal

Nilai pulangan

nilai pulangan kaedah ialah Gunakan kaedah makro bermula dengan RETURN_ untuk kembali. Kaedah makro yang biasa digunakan ialah:
RETURN_NULL() Mengembalikan null
RETURN_LONG(l) Mengembalikan jenis integer
RETURN_DOUBLE(d) Mengembalikan jenis titik terapung
RETURN_STR(s) Mengembalikan rentetan. Parameter ialah zend_string * penunjuk
RETURN_STRING(s) mengembalikan rentetan. Parameternya ialah penunjuk char *
RETURN_STRINGL(s, l) mengembalikan rentetan. Parameter kedua ialah panjang rentetan.
RETURN_EMPTY_STRING() Mengembalikan rentetan kosong.
RETURN_ARR(r) Mengembalikan tatasusunan. Parameter ialah penunjuk zend_array*.
RETURN_OBJ(r) mengembalikan objek. Parameter ialah penunjuk zend_object*.
RETURN_ZVAL(zv, copy, dtor) mengembalikan sebarang jenis. Parameter ialah penunjuk zval*.
RETURN_FALSE Mengembalikan palsu
RETURN_TRUE Mengembalikan benar

Atas ialah kandungan terperinci Contoh untuk menerangkan nilai pulangan pembangunan sambungan PHP7. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyelesaikan masalah apabila php7 mengesan bahawa port tcp tidak berfungsi Bagaimana untuk menyelesaikan masalah apabila php7 mengesan bahawa port tcp tidak berfungsi Mar 22, 2023 am 09:30 AM

Bagaimana untuk menyelesaikan masalah apabila php7 mengesan bahawa port tcp tidak berfungsi

Bagaimana untuk memasang sambungan mongo dalam php7.0 Bagaimana untuk memasang sambungan mongo dalam php7.0 Nov 21, 2022 am 10:25 AM

Bagaimana untuk memasang sambungan mongo dalam php7.0

Apakah yang perlu saya lakukan jika pemalam dipasang dalam php7.0 tetapi ia masih menunjukkan bahawa ia tidak dipasang? Apakah yang perlu saya lakukan jika pemalam dipasang dalam php7.0 tetapi ia masih menunjukkan bahawa ia tidak dipasang? Apr 02, 2024 pm 07:39 PM

Apakah yang perlu saya lakukan jika pemalam dipasang dalam php7.0 tetapi ia masih menunjukkan bahawa ia tidak dipasang?

Mana satu lebih baik, php8 atau php7? Mana satu lebih baik, php8 atau php7? Nov 16, 2023 pm 03:09 PM

Mana satu lebih baik, php8 atau php7?

Apr 09, 2024 pm 01:33 PM

Cara memasang dan menggunakan php7.0 Cara memasang dan menggunakan php7.0 Nov 30, 2022 am 09:56 AM

Cara memasang dan menggunakan php7.0

Bagaimana untuk memuat turun dan memasang php7 (perkongsian tutorial) Bagaimana untuk memuat turun dan memasang php7 (perkongsian tutorial) Mar 23, 2023 pm 02:11 PM

Bagaimana untuk memuat turun dan memasang php7 (perkongsian tutorial)

Rakam sekali dan gunakan strace untuk mendiagnosis masalah PHP menduduki terlalu banyak sumber sistem. Rakam sekali dan gunakan strace untuk mendiagnosis masalah PHP menduduki terlalu banyak sumber sistem. May 03, 2024 pm 04:31 PM

Rakam sekali dan gunakan strace untuk mendiagnosis masalah PHP menduduki terlalu banyak sumber sistem.

See all articles