真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP7擴展開發(fā)之實現(xiàn)簡單運算函數(shù)

實現(xiàn)一個簡單的數(shù)學(xué)計算函數(shù),傳入3個參數(shù),計算出相應(yīng)的結(jié)果。
 如: 
 
echo "90+20=".cal_culator(90,20,'+');
 
echo "90-20=".cal_culator(90,20,'-');
 
echo "90*20=". cal_culator(90,20,'*');
 
echo "90/20=". cal_culator(90,20,'/');
 
echo "90%20=". cal_culator(90,20,'%'); 
 
 
  1.創(chuàng)建一個新的擴展
	   ./ext_skel --extname=hello
	
  2.vi config.m4   去掉以下3行行首的dnl
          PHP_ARG_ENABLE(hello, whether to enable strive support,
          Make sure that the comment is aligned:
          [  --enable-hello           Enable strive support]) 
            
 3,編寫代碼 
	1.vi hello.c
	
	2.#添加下面的代碼
    	 PHP_FUNCTION(cal_culator)
                {
                    double num1 = 0.0;
                    double num2 = 0.0;
                    zend_string *type;

                   //php7之前用此方式來解析參數(shù)
                    #ifndef FAST_ZPP 
                    if (zend_parse_parameters(ZEND_NUM_ARGS(),TSRMLS_CC, "dd|S", &num1, &num2,&type) == FAILURE) {
                        return;
                    }
                    #else
                       ZEND_PARSE_PARAMETERS_START(2, 3)
                          Z_PARAM_DOUBLE(num1)
                          Z_PARAM_DOUBLE(num2)
                          Z_PARAM_OPTIONAL
                          Z_PARAM_STR(type)
                        ZEND_PARSE_PARAMETERS_END();
                   #endif

                  switch(ZSTR_VAL(type)[0])
                  {
                        case '+':
                             RETURN_DOUBLE(num1+num2);
                             break;
                        case '-':
                             RETURN_DOUBLE(num1-num2);
                             break;
                        case '*':
                             RETURN_DOUBLE(num1*num2);
                             break;
                        case '/':
                             RETURN_DOUBLE(num1/num2);
                             break;
                        case '%':
                             RETURN_LONG((int)num1%(int)num2);
                             break;
                   }
         }  
	
         
	3.在數(shù)組中添加函數(shù)名:
	  const zend_function_entry  hello_functions[] = {
	          PHP_FE(cal_culator, NULL) //cal_culator function      
	}	
	      
   參數(shù)解析說明:
     //php7之前的參數(shù)解析方法    
         if (zend_parse_parameters(ZEND_NUM_ARGS(),TSRMLS_CC, "dd|S", &num1, &num2,&type) == FAILURE) {
           return;
          }
                    
      ZEND_NUM_ARGS() :內(nèi)置函數(shù),固定格式,【告訴Zend引擎要取的參數(shù)的信息】
      TSRMLS_CC     :用來確保線程安全 
      "dd|S"      : 傳入?yún)?shù)類型【詳見下面參數(shù)類型表】可傳入2個double類型參數(shù),或傳入2個double類型參與與一個string類型參數(shù)
      &num1,&num2...  :傳入對應(yīng)參數(shù)的存儲地址。  
       
     //php7中的參數(shù)解析方法                 
         ZEND_PARSE_PARAMETERS_START(2, 3)     //開始參數(shù)解析,最少傳2個參數(shù),最多3個參數(shù)
          Z_PARAM_DOUBLE(num1)       //將第一個參數(shù)轉(zhuǎn)換為double類型,傳入?yún)?shù)存儲地址
          Z_PARAM_DOUBLE(num2)       //將第二個參數(shù)轉(zhuǎn)換為double類型, 傳入?yún)?shù)存儲地址
          Z_PARAM_OPTIONAL         //表示|,意為后面的參數(shù)可以不傳
          Z_PARAM_STR(type)        //第3個參數(shù)轉(zhuǎn)換為string類型, 傳入?yún)?shù)存儲地址
        ZEND_PARSE_PARAMETERS_END();      //結(jié)束參數(shù)解析
        
        
     參數(shù)類型表:
          d: double 類型
          s: string 類型
          l:long 類型 
          |:或的意思,表示后面的可傳可不傳 
       
               
      返回值說明:
          RETURN_DOUBLE   :返回浮點型
          RETURN_LONG     :返回整型 
   
         
  4.編譯安裝擴展,
       phpize
       ./configure --with-php-config=php_conf_dir
       make && make install
       vi php.ini  
       extension=strive.so       
       reload php-fpm 
 
 
 5.測試cal_culator函數(shù)是否可用:
             php -r 'echo cal_culator(10,40,'+');'

   源碼地址:https://github.com/yq918/php-ext-strive.git

成都創(chuàng)新互聯(lián)公司主營工農(nóng)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),工農(nóng)h5微信小程序定制開發(fā)搭建,工農(nóng)網(wǎng)站營銷推廣歡迎工農(nóng)等地區(qū)企業(yè)咨詢

   若實現(xiàn)方法有誤或有更好的實現(xiàn)方法,歡迎大家給予批評與指導(dǎo)。

 


本文標(biāo)題:PHP7擴展開發(fā)之實現(xiàn)簡單運算函數(shù)
文章分享:http://weahome.cn/article/jcjpdg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部