久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      php8的擴(kuò)展arginfo生成工具之使用初體驗(yàn)

      php8提供了非常方便的擴(kuò)展函數(shù)或類(lèi)參數(shù)信息的生成工具。

      只需要維護(hù)一份xyz.stub.php,就可以使用工具生成 xyz_arginfo.h。

      毫無(wú)疑問(wèn),這種方式,又降低了廣大 phper 開(kāi)發(fā)擴(kuò)展的門(mén)檻,更易維護(hù)。

      上手體驗(yàn):

      生成擴(kuò)展骨架。

      cd ext php ext_skel.php --ext test

      隨便添加一個(gè)函數(shù),更改 test.stub.php。

      <?php  /** @generate-function-entries */  function test1(): void {}  function test2(string $str = ""): string {}  function test3(int $integer = 123): int {}

      重新生成 test_arginfo.h。

      php ../../build/gen_stub.php test.stub.php

      相關(guān) commit 可以 點(diǎn)擊這兒(https://github.com/php/php-src/compare/master…nikic:php-stubs)

      寫(xiě)個(gè)簡(jiǎn)單的擴(kuò)展舉例,通過(guò)php擴(kuò)展的方式來(lái)實(shí)現(xiàn)python中的allany函數(shù)。

      準(zhǔn)備工作。
      • 下載php最新源碼
      • 已經(jīng)安裝好php
      生成擴(kuò)展骨架。

      cd ext php ext_skel.php --ext python
      撰寫(xiě)函數(shù)原型,編輯 python.stub.php
      <?php  /** @generate-function-entries */  function all(array $arr): bool {}  function any(array $arr): bool {}
      根據(jù) python.stub.php 生成 python_arginfo.h。

      php ../../build/gen_stub.php python.stub.php
      實(shí)現(xiàn)函數(shù)邏輯,編輯 python.c
      PHP_FUNCTION(all) {     zval *input;     zval *item;     int result = 1, item_result = 1;     HashTable *htbl;      ZEND_PARSE_PARAMETERS_START(1, 1)         Z_PARAM_ARRAY(input)     ZEND_PARSE_PARAMETERS_END();      htbl = Z_ARRVAL_P(input);      ZEND_HASH_FOREACH_VAL(htbl, item) {         item_result = zend_is_true(item);         result &= item_result;     } ZEND_HASH_FOREACH_END();      RETURN_BOOL(result); }  /* {{{ void any() */ PHP_FUNCTION(any) {     zval *input;     zval *item;     int result = 0, item_result = 0;     HashTable *htbl;      ZEND_PARSE_PARAMETERS_START(1, 1)         Z_PARAM_ARRAY(input)     ZEND_PARSE_PARAMETERS_END();      htbl = Z_ARRVAL_P(input);      ZEND_HASH_FOREACH_VAL(htbl, item) {         item_result = zend_is_true(item);         result |= item_result;     } ZEND_HASH_FOREACH_END();      RETURN_BOOL(result); }
      編寫(xiě)單元測(cè)試,編輯 002.phpt003.phpt, 新建 004.phpt005.phpt
      --TEST-- Check all function true case --SKIPIF-- <?php if (!extension_loaded('python')) {     echo 'skip'; } ?> --FILE-- <?php var_dump(all([])); var_dump(all([1])); var_dump(all([-1, 1, '1'])); ?> --EXPECT-- bool(true) bool(true) bool(true)
      --TEST-- Check all function false case --SKIPIF-- <?php if (!extension_loaded('python')) {     echo 'skip'; } ?> --FILE-- <?php var_dump(all(['0'])); var_dump(all([0])); var_dump(all([''])); var_dump(all([false])); var_dump(all([1, -1, 100, false])); var_dump(all([0, -1, 100, 1])); var_dump(all(['1', -1, '', 100, 1])); ?> --EXPECT-- bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)

      --TEST-- Check any function true case --SKIPIF-- <?php if (!extension_loaded('python')) {     echo 'skip'; } ?> --FILE-- <?php var_dump(any(['a', 'b', 'c', 'd'])); var_dump(any([['a', 'b', '', 'd']])); var_dump(any([['', 'b', 'c', 'd']])); var_dump(any([['a', 'b', 'c', '']])); ?> --EXPECT-- bool(true) bool(true) bool(true) bool(true)

      --TEST-- Check all function false case --SKIPIF-- <?php if (!extension_loaded('python')) {     echo 'skip'; } ?> --FILE-- <?php var_dump(any(['0'])); var_dump(any([0])); var_dump(any([''])); var_dump(any([false])); var_dump(any([0, '0', '', false])); ?> --EXPECT-- bool(false) bool(false) bool(false) bool(false) bool(false)
      編譯、測(cè)試和安裝

      ./configure && make make test sudo make install
      加入到php.ini

      php -i | grep ini # 定位你的php.ini文件

      加入

      extension=python.so

      查看是否成功

      php -m | grep python
      實(shí)測(cè)

      php -r "var_dump(all([]));“ php -r "var_dump(any([]));"

      PHP8新增了蠻多有用的宏和特性。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)