zephir 编译php,使用 Zephir 轻松构建 PHP 扩展

dd1bbc11f58a705edd020f08f46a73a4.png

简介:

经过 PHP 扩展, 咱们能够在 php 代码中使用一些特定的方法(大部分的 php 扩展都是用 C 写的)。php

好比,在 PHP 中须要与 SQLite3 交互,咱们能够本身写方法与之进行链接,再写 SQL 语句请求数据。然而,这都是些既琐碎又重复度至关高的工做,所以,全部开发者对插件的需求呼之欲出。laravel

如今,这款插件已经诞生了。你只需像安装其余扩展同样进行安装,而后在 'php.ini' 文件执行 'extension=sqllite3.so',就能够在你的 php 项目里对 sqlite3 进行访问了。git

你该安装的第一个扩展

Zephir:

官网文档给出的定义是:程序员

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

特色:sql

类型:动态 / 静态。

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

编译模式:提早编译。

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

工做原理?编程

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

下面是编译方案的例子:安全

0ba671a5e15db004d6373e9de7d76539.png

编译方案bash

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

441baedf66fb710217c8f719cdd833cc.png

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 版本:

e8009fe78f705b3042a770a631df5927.png

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

5722ed7d02c8c0e1eea17c3e6bba5868.png

而后

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

复制代码

cd zephir

./install -c

复制代码

验证是否安装正确:

zephir help

复制代码

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

88e647bd27b18221d8699baf9b088bd8.png

扩展初始化:

zephir init helloworld

而后,一个名字为 “helloworld” 的目录在当前工做目录中被建立:

9087d21b7575071013eba1a0821fd6c9.png

扩展目录结构:

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

复制代码

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

e6f7aac8688810d90e9ded2c81d193c9.png

zephir build output

复制代码

检测下是否安装成功:

93c3b571f3c1b7048d83b267b0e9cf65.png

在 PHP 代码中测试:

zephir_helloworld.php

echo HelloWorld\Greeting::say()."\n";

复制代码

接下来运行命令:

php zephir_helloworld.php

复制代码

你能够能够看到输出 Hello World!

结语

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值