Rumah >pembangunan bahagian belakang >tutorial php >Pengaturcaraan Fungsian dalam PHP: Fungsi pesanan lebih tinggi

Pengaturcaraan Fungsian dalam PHP: Fungsi pesanan lebih tinggi

Jennifer Aniston
Jennifer Anistonasal
2025-02-08 11:10:12649semak imbas

Functional Programming in PHP: Higher-order Functions

pemahaman yang mendalam mengenai fungsi pesanan tinggi dalam PHP: Meningkatkan fleksibiliti kod dan kebolehgunaan semula

Fungsi lanjutan digunakan secara meluas dalam banyak aplikasi dan rangka kerja yang besar. JavaScript, Java, .NET, Python dan juga PHP semuanya menyokong konsep fungsi pesanan yang lebih tinggi. Tetapi apakah fungsi pesanan yang lebih tinggi? Mengapa kita menggunakannya? Apakah kelebihannya? Bagaimana untuk memudahkan kod dengannya? Artikel ini akan memberi tumpuan kepada fungsi pesanan yang lebih tinggi dalam PHP dan membandingkannya dengan bahasa lain.

mata teras

    Fungsi pesanan yang lebih tinggi dalam PHP merujuk kepada fungsi yang boleh menerima satu atau lebih fungsi sebagai input atau mengembalikan fungsi sebagai output. Ciri ini meningkatkan fleksibiliti kod untuk lanjutan dan penggunaan semula kod yang mudah.
  • Dalam PHP, kata kunci
  • boleh digunakan untuk mengenal pasti fungsi pesanan yang lebih tinggi. Jika fungsi atau kaedah mempunyai parameter callable, ia bermakna ia menerima fungsi sebagai input. callable
  • php mengandungi fungsi pesanan tinggi terbina dalam seperti
  • dan array_map. Fungsi -fungsi ini mengambil fungsi panggil balik sebagai hujah dan memohon kepada unsur -unsur array dengan cara yang berbeza. array_filter
  • Mewujudkan fungsi pesanan tinggi PHP yang lebih tinggi memerlukan menentukan fungsi yang menerima satu atau lebih fungsi sebagai parameter, mengembalikan fungsi sebagai hasilnya, atau mempunyai kedua-dua ciri. Sebagai contoh, fungsi yang dipanggil
  • mengambil beberapa fungsi input dan beroperasi pada beberapa parameter. calc()
  • Fungsi pesanan tinggi dapat memberikan banyak kelebihan, seperti mengurangkan kod redundansi boilerplate. Walau bagaimanapun, bagi pemaju yang tidak biasa dengan konsep pengaturcaraan berfungsi, mereka kadang -kadang membuat kod sukar difahami dan debug.
Fungsi kelas pertama

Sebelum memahami fungsi pesanan tinggi, anda mesti terlebih dahulu memahami ciri-ciri bahasa yang menyokong fungsi kelas pertama (juga dikenali sebagai fungsi pesanan pertama). Ini bermakna bahawa bahasa merawat fungsi sebagai warganegara kelas pertama. Dalam erti kata lain, bahasa mengendalikan fungsi dengan cara yang sama seperti pembolehubah. Anda boleh menyimpan fungsi dalam pembolehubah, lulus mereka sebagai pembolehubah ke fungsi lain, mengembalikannya dari fungsi seperti pembolehubah, dan juga menyimpannya dalam array atau sifat objek seperti yang anda lakukan dengan pembolehubah. Hari ini, kebanyakan bahasa moden mempunyai ciri ini secara lalai. Anda hanya perlu tahu bahawa fungsi boleh diluluskan dan digunakan seperti pembolehubah.

Artikel ini akan memberi tumpuan terutamanya kepada fungsi lulus sebagai parameter dan fungsi kembali sebagai hasil, dan secara ringkas memperkenalkan konsep pembolehubah dan penutupan bukan tempatan. (Anda boleh membaca lebih lanjut mengenai konsep -konsep ini dalam Bahagian 1.1, 1.4 dan 1.3 artikel Wikipedia yang dikaitkan dengan perenggan sebelumnya.)

Apakah fungsi pesanan yang lebih tinggi?

Fungsi pesanan maju mempunyai dua ciri utama. Fungsi lanjutan boleh melaksanakan satu atau dua ciri -ciri berikut: Menerima satu atau lebih fungsi sebagai input, atau mengembalikan fungsi sebagai output. Dalam PHP, terdapat kata kunci yang jelas menunjukkan bahawa fungsi adalah fungsi pesanan yang lebih tinggi: kata kunci callable. Walaupun kata kunci ini tidak semestinya wujud, ia memudahkan untuk mengenali fungsi pesanan yang lebih tinggi. Jika anda melihat fungsi atau kaedah dengan parameter callable, ia bermakna ia menerima fungsi sebagai input. Satu lagi bendera mudah ialah jika anda melihat fungsi menggunakan pernyataan return untuk mengembalikan fungsi. Pernyataan return mungkin hanya nama fungsi, atau ia mungkin fungsi tanpa nama/inline. Berikut adalah beberapa contoh setiap jenis.

<code class="language-php">// 我们将传递给高阶函数的简单用户定义函数
function echoHelloWorld() {
  echo "Hello World!";
}

// 接受函数作为输入并调用它的高阶函数
function higherOrderFunction(callable $func) {
  $func();
}

// 调用我们的高阶函数并传入我们的echoHelloWorld()函数。
// 请注意,我们只将名称作为字符串传递,没有括号。
// 这将输出 "Hello World!"
higherOrderFunction('echoHelloWorld'); </code>

Berikut adalah beberapa contoh mudah fungsi pesanan tinggi yang mengembalikan fungsi:

<code class="language-php">// 返回PHP中名为trim()的现有函数。注意它是一个简单的字符串,没有括号。
function trimMessage1() {
  return 'trim';
}

// 这是一个使用匿名内联函数的示例
function trimMessage2() {
    return function($text) {
        return trim($text);
    };
}

// 返回'trim'函数
$trim1 = trimMessage1(); 

// 使用我们的字符串进行修剪并调用它
echo $trim1('  hello world  ');

// 返回内部调用'trim'的匿名函数
$trim2 = trimMessage1(); 

// 使用我们的字符串进行修剪并再次调用它
echo $trim2('  hello world  ');</code>

Anda boleh bayangkan bahawa anda boleh lulus dalam fungsi dan menggunakannya untuk menghasilkan fungsi yang dikembalikan lain. Sangat pintar, kan? Tetapi mengapa anda melakukan ini? Kedengarannya seperti sesuatu yang akan menjadikan sesuatu lebih rumit.

Mengapa menggunakan atau membuat fungsi pesanan lebih tinggi?

Terdapat banyak sebab mengapa anda mungkin perlu membuat fungsi pesanan lebih tinggi dalam kod anda. Dari fleksibiliti kod, penggunaan semula kod, sambungan kod ke penyelesaian kod yang meniru kod yang anda lihat dalam program lain, terdapat banyak perkara. Walaupun terdapat banyak sebab, kami akan memperkenalkan beberapa daripada mereka di sini.

Tambah fleksibiliti kod

Fungsi pesanan tinggi menambah banyak fleksibiliti. Berdasarkan contoh sebelumnya, anda mungkin melihat beberapa kegunaan. Anda boleh menulis satu fungsi yang mengambil satu set fungsi yang berbeza dan menggunakannya tanpa perlu menulis kod untuk melaksanakannya secara individu.

Mungkin fungsi pesanan yang lebih tinggi itu sendiri tidak tahu jenis fungsi yang akan diterima. Siapa yang mengatakan fungsi mesti tahu apa -apa maklumat mengenai fungsi yang diterima? Fungsi input mungkin berfungsi add() untuk seketika, dan saat berikutnya ia mungkin berfungsi divide(). Dalam kedua -dua kes, ia berfungsi dengan baik.

mudah untuk melanjutkan kod

Ciri ini juga memudahkan untuk menambah fungsi input lain kemudian. Katakan anda mempunyai add() dan divide(), tetapi anda perlu menambah fungsi sum() kemudian. Anda boleh menulis sum() fungsi dan lulus mereka melalui fungsi pesanan yang lebih tinggi tanpa mengubahnya. Dalam contoh -contoh kemudian, kami akan menunjukkan cara menggunakan fungsi ini untuk membuat fungsi calc() kami sendiri.

meniru fungsi bahasa lain

Satu lagi sebab anda mungkin mahu menggunakan fungsi pesanan yang lebih tinggi dalam PHP adalah untuk mensimulasikan tingkah laku penghias di Python. Anda "merampas" satu fungsi yang lain untuk mengubah suai tingkah laku fungsi itu. Sebagai contoh, anda boleh menulis fungsi ke masa fungsi lain. Anda boleh menulis fungsi pesanan yang lebih tinggi yang mengambil fungsi, memulakan pemasa, memanggilnya, dan kemudian menamatkan pemasa untuk melihat berapa banyak masa yang telah berlalu.

Contoh fungsi pesanan tinggi sedia ada dalam php

Cari untuk mencari fungsi pesanan yang lebih tinggi dalam PHP sangat mudah. Semak dokumentasi PHP dan cari fungsi/kaedah yang menerima parameter input callable dan anda telah menemui satu. Berikut adalah beberapa contoh fungsi pesanan tinggi yang biasa digunakan. Anda mungkin menggunakannya tanpa pengetahuan anda.

gabungan dinamik maju: array_map dan array_filter

<code class="language-php">// 我们将传递给高阶函数的简单用户定义函数
function echoHelloWorld() {
  echo "Hello World!";
}

// 接受函数作为输入并调用它的高阶函数
function higherOrderFunction(callable $func) {
  $func();
}

// 调用我们的高阶函数并传入我们的echoHelloWorld()函数。
// 请注意,我们只将名称作为字符串传递,没有括号。
// 这将输出 "Hello World!"
higherOrderFunction('echoHelloWorld'); </code>

Mari lihat cara menggunakan fungsi lain, kali ini menggunakan fungsi penapis yang kami tentukan secara berasingan:

<code class="language-php">// 返回PHP中名为trim()的现有函数。注意它是一个简单的字符串,没有括号。
function trimMessage1() {
  return 'trim';
}

// 这是一个使用匿名内联函数的示例
function trimMessage2() {
    return function($text) {
        return trim($text);
    };
}

// 返回'trim'函数
$trim1 = trimMessage1(); 

// 使用我们的字符串进行修剪并调用它
echo $trim1('  hello world  ');

// 返回内部调用'trim'的匿名函数
$trim2 = trimMessage1(); 

// 使用我们的字符串进行修剪并再次调用它
echo $trim2('  hello world  ');</code>

array_filter dan array_map adalah dua fungsi pesanan tinggi yang sangat popular yang akan anda dapati dalam banyak projek kod. Fungsi lain yang mungkin anda gunakan ialah call_user_func, yang mengambil fungsi dan senarai parameter dan panggilan fungsi itu. Ini pada dasarnya adalah fungsi pesanan tinggi yang lebih tinggi. Tujuannya adalah untuk memanggil fungsi yang ditentukan pengguna lain:

<code class="language-php">$arrayOfNums = [1,2,3,4,5];

// array_map:使用内联匿名函数的示例
$doubledNums = array_map(function($num) {
  return $num * 2;
}, $arrayOfNums);

var_dump($doubledNums); // 输出包含 [2, 4, 6, 8, 10] 的数组</code>

bagaimana untuk membuat fungsi pesanan tinggi anda sendiri

Kami telah menunjukkan banyak contoh bagaimana fungsi pesanan yang lebih tinggi berfungsi di PHP, dan kami telah mencipta beberapa fungsi tersuai untuk menunjukkan pelbagai kegunaan mereka. Tetapi mari kita tunjukkan lagi fleksibiliti dengan fungsi baru yang dipanggil calc(). Fungsi ini akan menerima dua parameter dan fungsi, yang akan beroperasi pada kedua -dua parameter ini untuk memberi kami hasil:

<code class="language-php">$arrayOfNums = [1,2,3,4,5];

// 创建函数并将其提供给高阶函数array_filter()的示例
function isEven($num) {
  return ($num % 2) === 0;
}

// array_filter是一个高阶函数
$evenNums = array_filter($arrayOfNums, 'isEven');

var_dump($evenNums); // 输出包含 [2, 4] 的数组</code>

Perhatikan bahawa fungsi calc() kami ditulis dengan cara yang sangat umum, membolehkan anda menerima satu set fungsi lain dan memanggilnya dengan parameter $n1 dan $n2. Dalam kes ini, fungsi yang dikira kami tidak peduli apa fungsi yang diterima. Ia hanya meluluskan hujah kepada fungsi dan mengembalikan hasilnya.

Tetapi tunggu: bos kami hanya meminta kami menambah fungsi ke sistem yang sedia ada untuk menambah dua rentetan bersama -sama. Tetapi rentetan yang menggabungkan bukan operasi matematik biasa anda. Walau bagaimanapun, dengan tetapan kami di sini, kami hanya perlu menambah rentetan rentetan dan lulus melalui calc():

<code class="language-php">function printCustomMessage($message) {
  echo "$message";
}

call_user_func('printCustomMessage', '通过使用call_user_func调用自定义消息!');</code>

Walaupun contoh ini jauh, ia menunjukkan bagaimana anda boleh menggunakan konsep ini dalam projek besar. Mungkin fungsi pesanan lebih tinggi menentukan bagaimana peristiwa diproses. Mungkin, bergantung kepada peristiwa yang dicetuskan, anda boleh mengarahkannya melalui fungsi pengendali yang anda lalui. Kemungkinannya tidak berkesudahan.

perbandingan dengan bahasa lain dengan fungsi pesanan yang lebih tinggi

mari kita ambil penghias mudah di Python sebagai contoh dan bandingkan dengan JavaScript dan kemudian bandingkan dengan PHP. Dengan cara itu, jika anda tahu Python atau JS, anda dapat melihat bahawa ia bersamaan.

perbandingan sampingan dengan python dan javascript

<code class="language-php">function add($a, $b) {
  return $a + $b;
}

function subtract($a, $b) {
  return $a - $b;
}

function multiply($a, $b) {
  return $a * $b;
}

// 传递$n1和$n2的高阶函数
function calc($n1, $n2, $math_func) {
  return $math_func($n1, $n2);
}

$addedNums = calc(1, 5, 'add');
$subtractedNums = calc(1, 5, 'subtract');
$multipliedNums = calc(1, 5, 'multiply');

// 输出 6
echo "相加的数字:$addedNums\n";

// 输出 -4
echo "相减的数字:$subtractedNums\n";

// 输出 5
echo "相乘的数字:$multipliedNums\n";</code>

Sekarang mari kita lihat bagaimana melaksanakannya dalam fungsi pesanan tinggi JavaScript:

<code class="language-php">function addTwoStrings($a, $b) {
  return $a . " " . $b;
}

// 输出 "Hello World!"
$concatenatedStrings = calc('Hello', 'World!', 'addTwoStrings');</code>

Akhirnya, mari kita bandingkan dengan php:

<code class="language-python">def say_message(func):
    def wrapper():
        print('调用函数之前打印')
        func()
        print('调用函数之后打印')
    return wrapper

def say_hello_world():
    print("Hello World!")

# 将我们的hello world函数传递给say_message函数。
# 它返回一个函数,然后我们可以调用它
# 注意:这一行可以用say_hello_world方法上的@say_message(派语法)代替
say_hello_world = say_message(say_hello_world)

# 调用创建的函数
say_hello_world()

# 输出...
# 调用函数之前打印
# Hello World!
# 调用函数之后打印</code>

Dari perbandingan sampingan, kita dapat melihat bahawa versi PHP sangat mirip dengan sintaks JavaScript. Walau bagaimanapun, jika anda tahu sedikit tentang Python dan penghias, anda dapat melihat cara menukar penghias kepada salah satu daripada dua bahasa pengaturcaraan lain.

Penerangan ringkas fungsi lambda/tanpa nama

Apabila menggunakan fungsi pesanan yang lebih tinggi, anda sering melihat penggunaan fungsi tanpa nama dalam talian (juga dikenali sebagai lambdas). Dalam contoh yang kita lihat di atas, saya telah menggunakan format ini. Selain itu, saya juga menggunakan versi yang lebih jelas untuk mendefinisikan fungsi dan kemudian lulus ke fungsi pesanan yang lebih tinggi. Ini adalah untuk membiasakan diri melihat kedua -dua versi. Kebanyakan masa, anda akan melihat versi lambda dalam kerangka yang menggunakan fungsi pesanan tinggi. Jangan biarkan format ini menakutkan anda. Mereka hanya membuat fungsi mudah tanpa nama dan menggunakannya di mana anda memberikan nama fungsi bebas.

Kesimpulan

Dalam artikel ini, kami memperkenalkan definisi asas untuk membuat fungsi fungsi pesanan yang lebih tinggi. Sebarang fungsi yang menerima atau mengembalikan fungsi (atau kedua-duanya) boleh dianggap sebagai fungsi pesanan yang lebih tinggi. Kami juga membincangkan mengapa anda mungkin ingin mencipta jenis fungsi dan kelebihan mereka.

Kemudian, kami menunjukkan beberapa contoh fungsi pesanan tinggi yang sedia ada dalam PHP, seperti array_map dan array_filter, dan kemudian teruskan untuk membuat fungsi pesanan tinggi kami sendiri yang dipanggil calc(), yang menerima beberapa fungsi input dan beroperasi pada beberapa parameter. Kami kemudian melakukan perbandingan bersebelahan untuk menunjukkan bagaimana penyelesaian PHP dibandingkan dengan Python Decorator dan pelaksanaan JavaScript. Saya harap anda dapat mengetahui lebih lanjut mengenai fungsi pesanan yang lebih tinggi dan mengapa anda mungkin perlu mempertimbangkannya dalam penyelesaian besar anda yang seterusnya. Mereka boleh memberikan banyak kelebihan dan mengurangkan kod boilerplate yang mungkin berlebihan.

Jika anda ingin mengetahui lebih lanjut mengenai pengaturcaraan berfungsi dalam PHP, anda boleh merujuk kepada tutorial kami.

Terima kasih kerana membaca!

Soalan Lazim untuk Fungsi Pesanan Lanjutan dalam PHP

Apakah kepentingan fungsi pesanan lebih tinggi dalam PHP?

Fungsi pesanan tinggi dalam PHP adalah konsep asas dalam pengaturcaraan berfungsi. Mereka adalah fungsi yang boleh beroperasi pada fungsi lain dengan mengambilnya sebagai argumen atau mengembalikannya sebagai hasil. Ini membolehkan kod yang lebih abstrak dan ringkas, dengan itu meningkatkan kebolehbacaan dan kebolehkerjaan. Fungsi pesanan lanjutan dapat membantu mengurangkan duplikasi dan kerumitan kod, menjadikan kod anda lebih efisien dan lebih mudah untuk debug.

Apakah perbezaan antara fungsi pesanan tinggi dan fungsi biasa dalam PHP?

Fungsi normal dalam PHP melaksanakan tugas tertentu dan hasil pulangan. Sebaliknya, fungsi pesanan lebih tinggi boleh mengambil satu atau lebih fungsi sebagai parameter, kembali fungsi sebagai hasil, atau mempunyai kedua-dua ciri ini pada masa yang sama. Ini membolehkan fleksibiliti dan abstraksi yang lebih besar dalam kod anda, yang membolehkan anda membuat fungsi yang lebih kompleks dengan kod kurang.

Bolehkah anda menyediakan contoh-contoh fungsi pesanan yang lebih tinggi dalam PHP?

Sudah tentu, mari kita pertimbangkan fungsi array_map dalam PHP, yang merupakan fungsi pesanan yang lebih tinggi. Ia mengambil fungsi panggil balik dan array sebagai parameter, menggunakan fungsi panggil balik untuk setiap elemen array, dan mengembalikan array baru yang mengandungi hasilnya.

<code class="language-php">// 我们将传递给高阶函数的简单用户定义函数
function echoHelloWorld() {
  echo "Hello World!";
}

// 接受函数作为输入并调用它的高阶函数
function higherOrderFunction(callable $func) {
  $func();
}

// 调用我们的高阶函数并传入我们的echoHelloWorld()函数。
// 请注意,我们只将名称作为字符串传递,没有括号。
// 这将输出 "Hello World!"
higherOrderFunction('echoHelloWorld'); </code>

Apakah faedah menggunakan fungsi pesanan tinggi dalam PHP?

Fungsi pesanan tinggi dalam PHP memberikan pelbagai faedah. Mereka membenarkan lebih banyak kod abstrak dan ringkas, yang dapat meningkatkan kebolehbacaan dan kebolehkerjaan. Mereka juga boleh membantu mengurangkan duplikasi kod dan kerumitan, menjadikan kod anda lebih cekap dan lebih mudah untuk debug. Selain itu, fungsi pesanan yang lebih tinggi boleh memudahkan penggunaan semula kod kerana anda boleh lulus fungsi yang berbeza ke fungsi pesanan yang lebih tinggi untuk mencapai tingkah laku yang berbeza.

Adakah terdapat kelemahan menggunakan fungsi pesanan tinggi dalam PHP?

Walaupun fungsi pesanan lebih tinggi memberikan banyak faedah, mereka juga mungkin mempunyai beberapa kelemahan. Mereka kadang -kadang membuat kod sukar difahami dan debug, terutamanya bagi pemaju yang tidak biasa dengan konsep pengaturcaraan berfungsi. Selain itu, menggunakan fungsi pesanan yang lebih tinggi kadang-kadang boleh membawa kepada overhead prestasi, kerana mereka sering melibatkan membuat dan memanggil fungsi lain.

Bagaimana untuk membuat fungsi pesanan saya sendiri yang lebih tinggi di PHP?

Mewujudkan fungsi pesanan tinggi anda sendiri dalam PHP memerlukan menentukan fungsi yang boleh menerima satu atau lebih fungsi sebagai parameter, mengembalikan fungsi sebagai hasilnya, atau mempunyai kedua-dua ciri. Berikut adalah contoh mudah dari fungsi pesanan yang lebih tinggi yang mengambil fungsi sebagai hujah dan menerapkannya kepada nilai:

<code class="language-php">// 返回PHP中名为trim()的现有函数。注意它是一个简单的字符串,没有括号。
function trimMessage1() {
  return 'trim';
}

// 这是一个使用匿名内联函数的示例
function trimMessage2() {
    return function($text) {
        return trim($text);
    };
}

// 返回'trim'函数
$trim1 = trimMessage1(); 

// 使用我们的字符串进行修剪并调用它
echo $trim1('  hello world  ');

// 返回内部调用'trim'的匿名函数
$trim2 = trimMessage1(); 

// 使用我们的字符串进行修剪并再次调用它
echo $trim2('  hello world  ');</code>

Bolehkah fungsi pesanan lebih tinggi dalam pulangan pulangan pelbagai fungsi?

Ya, fungsi pesanan lebih tinggi dalam PHP boleh mengembalikan pelbagai fungsi. Ini biasanya dilakukan dengan mengembalikan pelbagai fungsi. Walau bagaimanapun, ingat bahawa setiap fungsi yang dikembalikan mempunyai skop sendiri dan tidak berkongsi pembolehubah dengan fungsi yang dikembalikan lain.

Bolehkah fungsi pesanan lebih tinggi dalam PHP menerima fungsi dari skop yang berbeza?

Ya, fungsi pesanan lebih tinggi dalam PHP boleh menerima fungsi dari skop yang berbeza. Ini kerana PHP menyokong fungsi kelas pertama, yang bermaksud bahawa fungsi boleh diluluskan sebagai parameter ke fungsi lain, dikembalikan oleh fungsi lain, dan ditugaskan kepada pembolehubah.

Apakah hubungan antara fungsi pesanan tinggi dalam PHP dan penutupan?

Penutupan dalam PHP adalah fungsi tanpa nama yang menangkap pembolehubah dalam skop sekitarnya. Mereka sering digunakan dengan fungsi pesanan yang lebih tinggi kerana mereka membenarkan penciptaan fungsi yang mengakses lebih banyak data daripada parameter mereka. Ini sangat berguna untuk mewujudkan kod yang lebih fleksibel dan boleh diguna semula.

Adakah terdapat fungsi pesanan yang lebih tinggi dalam PHP?

Ya, PHP menyediakan beberapa fungsi pesanan yang lebih tinggi. Beberapa contoh termasuk array_map, array_filter dan array_reduce. Fungsi -fungsi ini mengambil fungsi panggil balik sebagai hujah dan memohon kepada unsur -unsur array dalam pelbagai cara.

Atas ialah kandungan terperinci Pengaturcaraan Fungsian dalam PHP: Fungsi pesanan lebih tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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