当前位置: 首页 > 工具软件 > Zephir > 使用案例 >

zephir mysql_Zephir入门

谭桐
2023-12-01

Zephir 是一个开源的用于简化PHP扩展的创建和维护的语言。它使得不擅长C/C++的PHP开发人员也能写出PHP扩展。Zephir是Zend Engine/PHP/Intermediate缩写,读音为zephyr。

Zephir在语法上跟PHP有很多相似之处,PHP开发人员可以很快上手,但也有很多地方上的不同需要我们去学习。下面是Zephir一些主要的特色:变量类型:动态/静态

内存安全:不允许指针和直接的内存管理

编译模型:AOT(ahead of time)

内存模型:task-local垃圾回收

安装

依赖

要使用Zephir和编译出一个PHP扩展,需要先安装以下的依赖:gcc >= 4.x/clang >= 3.x

re2c 0.13+

gnu make 3.81+

autoconf 2.31+

automake 1.14+

libpcre3

php development headers and tools

安装

这里选择使用git的方式获取源代码并进行安装:bash$ git clone https://github.com/phalcon/zephir

$ cd zephir

$ ./install-json

$ ./install -c

如果已经安装了json-c,那么可以忽略./install-json这一步。

验证

通过运行zephir命令验证下是否安装成功:bash$ zephir help

_____      __    _

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

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

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

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

/_/

Zephir version 0.7.1b

Usage:

command [options]

Available commands:

stubs       Generates extension PHP stubs

install     Installs the extension (requires root password)

fullclean   Cleans the generated object files in compilation

build       Generate/Compile/Install a Zephir extension

generate    Generates C code from the Zephir code

clean       Cleans the generated object files in compilation

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

compile     Compile a Zephir extension

version     Shows the Zephir version

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

helpDisplays this help

init [namespace]    Initializes a Zephir extension

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

我们的第一个扩展

下面我们使用Zephier来创建一个“hello world”扩展。

初始化

首先,我们使用init命令来初始化扩展的基本结构(假设我们扩展的名称为“utils”):bash$ zephir init utils

成功运行后,我们应该会得到如下的目录结构:bashutils/

ext/

utils/

ext目录里放的是编译器需要用到的代码,不用理会,我们的Zephir代码将放在跟扩展名同名的utils里。

编写代码

我们在utils目录下创建一个文件:greeting.zep,并编写代码:phpnamespace Utils;

class Greeting

{

public static function say()

{

echo "hello world!";

}

}

这里不深入Zephir的语法,但是可以看到语法跟PHP很类似,上面的代码定义了一个类Greeting和一个方法say()。

编译

接下来,我们回到utils根目录下并运行build命令编译出扩展:bash$ zephir build

Preparing for PHP compilation...

Preparing configuration file...

Compiling...

Installing...

Extension installed!

Add extension=utils.so to your php.ini

Don't forget to restart your web serverp

编译成功后,我们在PHP配置文件里增加以下一行:iniextension=utils.so

验证

通过如下命令查看我们的扩展是否正常加载:bashphp -m

[PHP Modules]

...

memcached

mysql

mysqli

mysqlnd

openssl

utils

...

如果看到我们扩展的名字,则证明已成功加载。

然后我们在PHP里调用say()方法:<?php

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

正常的话会输出:hello world!。至此我们也完成了我们的第一个扩展。

参考

 类似资料: