设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间07 现在时间07 缓存数据 没有什么事情是简单轻松的,唯有不断努力,才能更加顺利。

没有什么事情是简单轻松的,唯有不断努力,才能更加顺利。

查看: 1247|回复: 2

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

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:232
  • 打卡月天数:2
  • 打卡总奖励:3377
  • 最近打卡:2025-07-19 22:38:28
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
402
主题
386
精华
0
金钱
4610
积分
858
注册时间
2023-1-4
最后登录
2025-7-19

发表于 2023-2-12 20:07:22 | 显示全部楼层 |阅读模式
简介

比如,在 PHP 中需要与 SQLite3 交互,我们可以自己写方法与之进行连接,再写 SQL 语句请求数据。然而,这都是些既琐碎又重复度相当高的工作,因此,所有开发者对插件的需求呼之欲出。
现在,这款插件已经诞生了。你只需像安装其他扩展一样进行安装,然后在 'php.ini' 文件执行 'extension=sqllite3.so',就可以在你的 php 项目里对 sqlite3 进行访问了。

你该安装的第一个扩展


Zephir

官网文档给出的定义是:
一种开源的高级语言,旨在简化 PHP 扩展的创建和可维护性,重点关注类型和内存安全性。
特点:
       
  • 类型:动态 / 静态。   
  • 内存安全性:不允许指针或者直接内存管理。   
  • 编译模式:提前编译。   
  • 内存模型:本地任务垃圾回收机制。
工作原理?
把你写好的 php 代码编译成 c,然后你可以将其以扩展的形式添加到 'php.ini' 文件中。
下面是编译方案的例子:
210744hdyfggzjtdw9dfbo.jpg

编译方案
让我们从 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, 可以采取如下方式安装:
  1. sudo apt-get update
  2. sudo apt-get install git gcc make re2c php7.0 php7.0-json php7.0-dev libpcre3-dev
复制代码
参考下图命令,确认安装了较新的 PHP 版本:
210744zu6uoimz4zzvuogr.jpg

参考下图命令,确认有 PHP 开发库:
210745v6o2k2of0hu2kg66.jpg

然后
  1. git clone https://github.com/phalcon/zephir
复制代码
cd zephir
  1. ./install -c
复制代码
验证是否安装正确:
  1. zephir help
复制代码
如果一切就绪,你应该能在你的屏幕上看到以下帮助信息:
210745kar50yaiq55440ak.jpg

扩展初始化:
zephir init helloworld
然后,一个名字为 “helloworld” 的目录在当前工作目录中被创建:
210745q0r4emo5oe9c4vw9.jpg

扩展目录结构:
       
  • ext:包含被编译器用来生成扩展的代码。   
  • helloworld:这个目录与我们的扩展同名。我们在这个目录中放置 Zephir 代码。   
  • config.json:这个文件包含我们可用于更改 Zephir 与 / 或此扩展的行为的配置
添加我们的第一个类:
在 helloworld 目录中.
Zephir 的设计初衷是用来生成面对对象的扩展,接下来我们先添加一个初始类。
我们先来在扩展中创建一个 helloworld 类,使用此类来渲染Hello World!。
helloworld/helloworld/greeting.zep
  1. namespace HelloWorld;

  2. class Greeting
  3. {

  4.     public static function say()
  5.     {
  6.         echo "Hello World!";
  7.     }
  8. }
复制代码
接下来命令行执行以下命令来编译扩展:
  1. zephir build
复制代码
第一次运行以上命令时,会初始化一些东西。如果一些顺利的话,会输出以下内容:
210746drskqz6u6x9x6fsm.jpg
  1. zephir build output
复制代码
检测下是否安装成功:
210746tywpwp43wtrg74s7.jpg

在 PHP 代码中测试:
zephir_helloworld.php
  1. <?php
  2. echo HelloWorld\Greeting::say()."\n";
复制代码
接下来运行命令:
  1. php zephir_helloworld.php
复制代码
你可以可以看到输出
  1. Hello World!
复制代码
结语

如果你是 PHP 软件工程师,对内存管理等底层语言的编程方式不是特别熟悉,可以尝试从 Zephir 开始写一些简单的扩展。
Zephir 内部已经做好了内存管理,但是基于其内存安全的设计,你无法使用 C 语言的强大手动内存管理功能,如果你是 C 程序员,你会觉得 Zephir 更加简单易用,但是在有些地方可能不够强大。
以上就是如何使用Zephir轻松构建PHP扩展的详细内容,更多关于使用Zephir轻松构建PHP扩展的资料请关注晓枫资讯其它相关文章!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
12
积分
4
注册时间
2025-1-13
最后登录
2025-1-13

发表于 2025-3-1 15:03:58 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
17
积分
14
注册时间
2022-12-28
最后登录
2022-12-28

发表于 2025-4-7 18:26:34 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表