日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

zephir mysql_用Zephir编写php扩展库以及生成文档、IDE提示

發布時間:2023/12/18 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zephir mysql_用Zephir编写php扩展库以及生成文档、IDE提示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Zephir安裝

前置條件

根據官方文檔,安裝和使用Zephir之前需要準備好這些軟件和庫

gcc >= 4.x/clang >= 3.x

re2c 0.13 or later

gnu make 3.81 or later

autoconf 2.31 or later

automake 1.14 or later

libpcre3

php development headers and tools

如果是ubuntu/debian/deepin等發行版就好辦了

$ sudo apt-get update

$ sudo apt-get install git gcc make re2c php7.0 php7.0-json php7.0-dev libpcre3-dev

安裝Zephir

$ git clone https://github.com/phalcon/zephir

$ cd zephir

$ ./install -c

檢查一下是否安裝成功

$ zephir help

_____ __ _

/__ / ___ ____ / /_ (_)____

/ / / _ \/ __ \/ __ \/ / ___/

/ /__/ __/ /_/ / / / / / /

/____/\___/ .___/_/ /_/_/_/

/_/

Zephir version 0.9.11-0161027a24

Usage:

command [options]

Available commands:

api [--theme-path=/path][--output-directory=/path][--theme-options={json}|/path]Generates a HTML API

compile Compile a Zephir extension

install Installs the extension (requires root password)

version Shows the Zephir version

help Displays this help

init [namespace] Initializes a Zephir extension

fullclean Cleans the generated object files in compilation

builddev Generate/Compile/Install a Zephir extension in development mode

stubs Generates extension PHP stubs

build Generate/Compile/Install a Zephir extension

generate Generates C code from the Zephir code

clean Cleans the generated object files in compilation

Options:

-f([a-z0-9\-]+) Enables compiler optimizations

-fno-([a-z0-9\-]+) Disables compiler optimizations

-w([a-z0-9\-]+) Turns a warning on

-W([a-z0-9\-]+) Turns a warning off

這就是安裝成功了

編寫一個demo

如何下手呢?上面的zephir help已經給過我們提示了

init [namespace] Initializes a Zephir extension

我們可以這樣創建一個新工程,比如按照官網文檔上的

$ zephir init utils

這樣我們就生成了一個目錄

utils/

看一下結構

$ cd utils

$ ls

ext/ utils/ config.json

其他暫且不管,我們的代碼應該在utils/utils/下面編寫

//必然是喜聞樂見的helloworld

//創建文件greeting.zep

namespace Utils;

class Greeting

{

public static function say()

{

echo "hello world!";

}

}

保存之后,終端工具編譯安裝一下,可以只編譯(zephir compile),也可以只安裝(zephir install),我們按照官網的例子,既編譯又安裝,so

//在你剛才創建的工程目錄下

$ zephir build

執行這個命令會先把zephir代碼解析成C代碼,然后編譯該C代碼成.so庫文件,最后放進你的php擴展庫目錄,最后一步會要求你提供root賬號的口令,輸入口令后會提示你不要忘了重啟web服務器

//我們看一下這臺服務器上的php擴展庫目錄

$ php -i | grep extension_dir

extension_dir => /usr/lib/php/20151012

//進入這個目錄看一下

$ ls /usr/lib/php/20151012|grep utils

utils.so

沒問題,然后我們編輯一下配置文件php.ini或者在擴展配置文件目錄(我是這個:/etc/php/7.0/cli/conf.d/)新建文件utils.ini,寫入一行

extension=utils.so

注意:

debian/ubuntu系的發行版php和php-cli的配置文件和擴展配置文件目錄都是獨立的,如果該擴展需要在web服務器環境下使用,需要在相應位置重復上述過程,具體文件位置,使用phpinfo()查看

如果一切順利,此時執行php -m就可以看到utils擴展

$ php -m | grep utils

utils

我們寫一個php腳本,試試這個擴展能不能用

echo Utils\Greeting::say(), "\n";

終端執行一下(當然也可以瀏覽器訪問一下)

$ php test_utils.php

hello world!

寫個真正有用的!

hello world并沒有太大用處,我們寫一個別的,比如擴充一下php的二維數組操作

//創建文件arr.zep

namespace Utils;

class Arr

{

/**

* 二維數組取多列

*

* @param array matrix 待處理數組

* @param array cols 指定多列列名

* @return array

*/

public function matrixCols(array matrix, array cols) -> array

{

array out = [];

var key, value;

let cols = array_flip(cols);

for key, value in matrix {

let out[key] = array_intersect_key(value, cols);

}

return $out;

}

}

跟上邊一樣,編譯出來

zephir build

在cli下不需要其他操作,會覆蓋上一次編譯的庫文件。如果想通過web服務器訪問,則需要重啟一下

寫個php腳本試一下

$arr = [

[

'phone' => 123456,

'name' => '張三',

'gender' => '男'

],

[

'phone' => 7890,

'name' => '張四',

'gender' => '女'

],

[

'phone' => 7890,

'name' => '張五',

'gender' => '男'

],

[

'phone' => 123456,

'name' => '張六',

'gender' => '女'

]

];

$a = new Utils\Arr;

$o = $a->matrixCols($arr, ['name', 'gender']);

var_dump($o);

運行一下

$ php test_utils.php

array(4) {

[0]=>

array(2) {

["name"]=>

string(6) "張三"

["gender"]=>

string(3) "男"

}

[1]=>

array(2) {

["name"]=>

string(6) "張四"

["gender"]=>

string(3) "女"

}

[2]=>

array(2) {

["name"]=>

string(6) "張五"

["gender"]=>

string(3) "男"

}

[3]=>

array(2) {

["name"]=>

string(6) "張六"

["gender"]=>

string(3) "女"

}

}

很成功

生成API

有了庫文件,總得讓人知道這個庫有哪些功能,怎么用。zephir提供了非常棒的文檔生成器,只要zep文件中的代碼按照phpdoc的格式編寫即可

終端執行

zephir api

utils工程目錄下會生成一個doc目錄,里面就是html格式的API文檔,默認theme就很美觀了,也可以自定義

生成IDE支持文件

工程目錄下,終端執行

zephir stubs

會在工程目錄下生成一個ide目錄

里面是版本號目錄,再里面是真真貨了,名為Utils,把這個目錄在IDE里面設置一下即可得到代碼提示,自動補全等輔助功能

在phpstorm里面是這樣的:

File->settings->Languages & Frameworks->PHP->Include Path

加入這個目錄的地址

總結

以上是生活随笔為你收集整理的zephir mysql_用Zephir编写php扩展库以及生成文档、IDE提示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。