服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - PHP教程 - 如何使用Zephir轻松构建PHP扩展

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

2021-11-16 16:15八重樱 PHP教程

通过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 安装

配置要求:

  • 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
  • re2c
  • 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

namespace HelloWorld;

class Greeting
{

    public static function say()
    {
        echo "Hello World!";
    }
}

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

zephir build

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

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

zephir build output

检测下是否安装成功:

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

在 PHP 代码中测试:

zephir_helloworld.php

<?php
echo HelloWorldGreeting::say()."
";

接下来运行命令:

php zephir_helloworld.php

你可以可以看到输出

Hello World!

结语

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

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

以上就是如何使用Zephir轻松构建PHP扩展的详细内容,更多关于使用Zephir轻松构建PHP扩展的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/a609251438/p/11866292.html

延伸 · 阅读

精彩推荐
  • PHP教程PHP实现的各种中文编码转换类分享

    PHP实现的各种中文编码转换类分享

    这篇文章主要介绍了PHP实现的各种中文编码转换类分享,本文类库支持简体中文、繁体中文、GB2312、BIG5、UTF-8等多种格式之间的转换,需要的朋友可以参考下...

    PHP教程网8702021-07-24
  • PHP教程ThinkPHP中关联查询实例

    ThinkPHP中关联查询实例

    这篇文章主要介绍了ThinkPHP中关联查询的用法,实例分析了ThinkPHP中table、join及原生查询与多表查询等的用法,具有一定的参考借鉴价值,需要的朋友可以参考下...

    PHP教程网3402020-08-19
  • PHP教程php日志函数error_log用法实例分析

    php日志函数error_log用法实例分析

    这篇文章主要介绍了php日志函数error_log用法,结合实例形式分析了php日志函数error_log相关的配置文件设置、函数功能、用法与使用注意事项,需要的朋友可以...

    巴八灵7792021-08-20
  • PHP教程php隐藏IP地址后两位显示为星号的方法

    php隐藏IP地址后两位显示为星号的方法

    这篇文章主要介绍了php隐藏IP地址后两位显示为星号的方法,采用正则匹配的方法来实现,是非常实用的技巧,需要的朋友可以参考下...

    PHP教程网3952020-08-14
  • PHP教程PHP 函数call_user_func和call_user_func_array用法详解

    PHP 函数call_user_func和call_user_func_array用法详解

    下面来和大家分享一下这个call_user_func_array和call_user_func函数的用法,另外附赠func_get_args()函数和func_num_args()函数,嘿嘿!!...

    PHP开发网2652020-06-14
  • PHP教程yii2中添加验证码的实现方法

    yii2中添加验证码的实现方法

    这篇文章主要介绍了yii2中添加验证码的实现方法,实例分析了Yii2中实现添加验证码的具体步骤与相关功能代码,需要的朋友可以参考下...

    rogerzhanglijie4552020-12-15
  • PHP教程Ubuntu 16.04下安装PHP 7过程详解

    Ubuntu 16.04下安装PHP 7过程详解

    这篇文章主要给大家介绍了在Ubuntu 16.04系统下安装PHP 7的全过程,文中介绍的非常详细,对大家的学习或者工作具有一定的参考价值,需要的朋友们下面来...

    HFX11132021-05-05
  • PHP教程PHP 登录完成后如何跳转上一访问页面

    PHP 登录完成后如何跳转上一访问页面

    访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面 ...

    PHP教程网2792020-06-05