当前位置:首页 > PHP教程 > php高级应用 > 列表

如何使用Zephir轻松构建PHP扩展

发布:smiling 来源: PHP粉丝网  添加日期:2022-04-30 10:17:24 浏览: 评论:0 

通过PHP扩展,我们可以在php代码中使用一些特定的方法(大部分的 php扩展都是用C写的)。本文将介绍如何使用Zephir轻松构建PHP扩展。

简介

比如,在 PHP 中需要与 SQLite3 交互,我们可以自己写方法与之进行连接,再写 SQL 语句请求数据。然而,这都是些既琐碎又重复度相当高的工作,因此,所有开发者对插件的需求呼之欲出。

现在,这款插件已经诞生了。你只需像安装其他扩展一样进行安装,然后在 'php.ini' 文件执行 'extension=sqllite3.so',就可以在你的 php 项目里对 sqlite3 进行访问了。

你该安装的第一个扩展

Zephir

官网文档给出的定义是:

一种开源的高级语言,旨在简化 PHP 扩展的创建和可维护性,重点关注类型和内存安全性。

特点:

类型:动态 / 静态。

内存安全性:不允许指针或者直接内存管理。

编译模式:提前编译。

内存模型:本地任务垃圾回收机制。

工作原理?

把你写好的 php 代码编译成 c,然后你可以将其以扩展的形式添加到 'php.ini' 文件中。

下面是编译方案的例子:

如何使用Zephir轻松构建PHP扩展

编译方案

让我们从 Hello world 的扩展开始吧。

Zephir 安装

配置要求:

  1. gcc >= 4.x/clang >= 3.x 
  2. re2c 0.13 or later 
  3. gnu make 3.81 or later 
  4. autoconf 2.31 or later 
  5. automake 1.14 or later 
  6. libpcre3 
  7. php development headers and tools 
  8. re2c 
  9. php-zephir-parser 

如果你是用 Ubuntu, 可以采取如下方式安装:

sudo apt-get update

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

参考下图命令,确认安装了较新的 PHP 版本:

如何使用Zephir轻松构建PHP扩展

参考下图命令,确认有 PHP 开发库:

如何使用Zephir轻松构建PHP扩展

然后

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

cd zephir

./install -c

验证是否安装正确:

zephir help

如果一切就绪,你应该能在你的屏幕上看到以下帮助信息:

如何使用Zephir轻松构建PHP扩展

扩展初始化:

zephir init helloworld

然后,一个名字为 “helloworld” 的目录在当前工作目录中被创建:

如何使用Zephir轻松构建PHP扩展

扩展目录结构:

ext:包含被编译器用来生成扩展的代码。

helloworld:这个目录与我们的扩展同名。我们在这个目录中放置 Zephir 代码。

config.json:这个文件包含我们可用于更改 Zephir 与 / 或此扩展的行为的配置

添加我们的第一个类:

在 helloworld 目录中.

Zephir 的设计初衷是用来生成面对对象的扩展,接下来我们先添加一个初始类。

我们先来在扩展中创建一个 helloworld 类,使用此类来渲染Hello World!。

helloworld/helloworld/greeting.zep

  1. namespace HelloWorld; 
  2.  
  3. class Greeting 
  4.  
  5.     public static function say() 
  6.     { 
  7.         echo "Hello World!"
  8.     } 

接下来命令行执行以下命令来编译扩展:

zephir build

第一次运行以上命令时,会初始化一些东西。如果一些顺利的话,会输出以下内容:

如何使用Zephir轻松构建PHP扩展

zephir build output

检测下是否安装成功:

如何使用Zephir轻松构建PHP扩展

在 PHP 代码中测试:

zephir_helloworld.php

  1. <?php 
  2. echo HelloWorld\Greeting::say()."\n"

接下来运行命令:

php zephir_helloworld.php

你可以可以看到输出

Hello World!

结语

如果你是 PHP 软件工程师,对内存管理等底层语言的编程方式不是特别熟悉,可以尝试从 Zephir 开始写一些简单的扩展。

Zephir 内部已经做好了内存管理,但是基于其内存安全的设计,你无法使用 C 语言的强大手动内存管理功能,如果你是 C 程序员,你会觉得 Zephir 更加简单易用,但是在有些地方可能不够强大。

Tags: Zephir PHP扩展

分享到: