【图片打不开,请用代理】

介绍:

PHP扩展是编译库,它允许在您的PHP代码中使用特定的功能(主要是使用C编写的php扩展)。

例如,您需要使用PHP使用SQLite3,您可以实现自己的方法和功能来连接到Sqlite3,从您的应用程序级别向DB进行查询,但这不是一项简单的任务,插件不仅是您自己的要求,但其他开发人员需要做类似的事情。

所以有人开发了它并将其作为php扩展发送,您可以安装此扩展并php.ini使用以下内容启用它extension=sqllite3.so,并且您可以通过您的应用程序级别访问所有sqlite3功能,在这种情况下是php。

你的第一次扩展

ZEPHIR:

根据zephir官方文档,您可以将其定义如下

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

特征:

  • 输入 系统:动态/静态。
  • 内存安全:不允许使用指针或直接内存管理。
  • 编译模型:提前。
  • 内存模型:任务本地垃圾收集。

这个怎么运作 ?

您编写PHP代码并将您的代码编译为c扩展名,最后您可以将其添加到您的php.ini文件中。

这是编译方案的例子:

 

编制方案

  • 让我们以Hello world扩展为例。
 
 

Zephir安装

要求 :

  • gcc> = 4.x / clang> = 3.x
  • re2c 0.13或更高版本
  • gnu make 3.81或更高版本
  • autoconf 2.31或更高版本
  • automake 1.14或更高版本
  • libpcre3
  • php开发标题和工具
  • re2c
  • PHP-ZEPHIR解析器

如果您使用的是Ubuntu,则可以通过以下方式安装所需的软件包:

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

由于Zephir是用PHP编写的,因此您需要安装最新版本的PHP 7.2,并且必须在您的控制台中使用它。

 

此外,请确保您还安装了PHP开发库以及PHP安装。

 

脚步

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

cd zephir

./install -c

验证您的安装

zephir帮助

如果一切顺利,您应该在屏幕上看到以下帮助:

 

扩展骨架:

zephir init helloworld

在此之后,在当前工作目录上创建一个名为“helloworld”的目录:

 

扩展目录结构

  • 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我们的项目必须编译并生成扩展:

zephir build

最初,并且只是第一次执行许多内部命令,生成必要的代码和配置以将此类导出到PHP扩展,如果一切顺利,您将在输出的末尾看到以下消息:

 

zephir构建输出

安装验证:

 

从PHP测试您的扩展:

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

运行以下命令,php zephir_helloworld.php您的输出应该是以下Hello World!

结论:

如果你是软件工程师,php开发人员需要开发和使用php如何工作以及如何构建自己的扩展我建议zephir有一个非常强大的文档和felxability也是它的内存安全管理。但是由于它有一些限制,根据以下Zephir被设计为安全,所以它不实现指针或手动内存管理,所以如果你是一个C程序员,你会觉得Zephir不如C强大但比C更友好。

参考文献:

 

用PHP写PHP7扩展,超级简单对吧!的更多相关文章

  1. 3分钟wamp安装redis扩展超级简单

    windows10(win8.1等系统应该是一样的) wampserver2.5 -Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b 很简单只需要3步,主要是安装redi ...

  2. 超级简单的jQuery纯手写五星评分效果

    超级简单的评分功能,分为四个步骤轻松搞定: 第一步: 引入jquery文件:这里我用百度CDN的jquery: <script src="http://apps.bdimg.com/l ...

  3. Linux C语言写的超级简单port扫描器

    这个本来曾经也写过的,今天无聊复习下 再写一遍.简单的一塌糊涂,写的不咋地大家见谅哦!有空再加强 嘿嘿! #include <stdio.h> #include <stdlib.h& ...

  4. 利用PHP SOAP扩展实现简单Web Services

    原文:利用PHP SOAP扩展实现简单Web Services WebServices能干什么? WebServices 可以将应用程序转换为网络应用程序. 通过使用 WebServices,您的应用 ...

  5. react-devtools超级简单安装教程

    有时候看网上各路大神,写如何安装react-devtools,大神就是大神,好多步骤一笔带过,导致一些学习者看的一脸懵逼,今天我给大家讲超级简单的react-devtools安装步骤,相信看过的小伙伴 ...

  6. JS基础(超级简单)

    1     JS基础(超级简单) 1.1 数据类型 1.1.1   基本类型: 1)        Number:特别注意:NaN的检测方法:Nan!=NaN;或者使用isNaN方法 2)       ...

  7. JavaScript,一个超级简单的方法判断浏览器的内核前缀

    先说明,此处的方法是说超级简单的方法,不是指代码超级少,而是用非常简单的知识点,只要懂得怎么写JavaScript的行内样式就可以判断. 大家应该还记得JavaScript行内样式怎么写吧?(看来我是 ...

  8. zw版_Halcon图像交换、数据格式、以及超级简单实用的DIY全内存计算.TXT

    zw版_Halcon图像交换.数据格式.以及超级简单实用的DIY全内存计算.TXT Halcon由于效率和其他原因,内部图像采用了很多自有格式,提高运行速度,但在数据交换方面非常麻烦. 特别是基于co ...

  9. 哈,又一款超级简单的队列(MQ)实现方案来了~

    开源的消息队列已经很多了,但大部分很重,实际环境下,很多可能只是使用到了一点功能而已,杀鸡使用牛刀,着实有些浪费了.很多时候,我们只想要一片绿叶,但它们给了我们整个的春天,很难消化.本着DIR精神, ...

随机推荐

  1. linux常用命令--实用小技巧

    >查看端口是否被启动--netstat 命令:netstat -an | grep 4445结果:如果有tcp一行则代表端口是开放的,如果没有说明没有访问权限,端口未开放 一般的,在服务器上端口 ...

  2. Linux基础及常用指令

    1.Linux目录结构 bin(usr/bin,user/local/bin) #存放常用指令,如cp.cat.chown等 sbin(usr/sbin,user/local/sbin) #高权限指令 ...

  3. Windows安装Python3 curses模块

    目录 0.前提 1.pip install wheel 2.下载.whl文件 3.pip install 它 参考 0.前提 确定你已经配置好了Python相关环境,可以正常在命令行使用pip安装. ...

  4. 将lol人物模型导入到Unity3d

      接下来我打算将提取出来的lol人物模型导入到Unity3D中,这样会更加好玩!(不知道如何提取lol人物模型的话请看该链接)   首先我们已经把dae文件导入到c4d中了,可以看到这是一只吹笛子的 ...

  5. 第10组 Beta冲刺(3/5)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 新增修改用户信息.任务完成反馈等功能API 服务器后端部署,API接口的bet ...

  6. 电商ERP系统——商品SKU与库存设计

    面试题经常问道,如何设计库存,哪些库存呢?分类属性的库存:不同颜色 不同尺码的属性的库存,这时候需要针对具体的SKU商品创建表. 总体思路 1.商品关联商品类别,商品类别关联多个商品属性,其中指定某几 ...

  7. thinkphp3.2源码(错误和异常处理)

    写在前面:tp3.2中每次载入入口文件时都会进行错误和异常的捕获,解读这一部分代码可以对以后的优化很有好处.   处理概览:          错误捕获与处理: 致命错误捕获: 我们尝试在 Home/ ...

  8. LoadRunner之录制你的第一个脚本

    LoadRunner安装完成之后,肯定就迫不及待的想要上手试用了.下面就是讲一下LR脚本录制的流程和基本的设置. 1.先放一张脚本录制以及运行的流程图 2.脚本录制步骤 1)以管理员身份打开LR软件, ...

  9. ISO/IEC 9899:2011 前言

    前言 1.ISO(国际标准组织)与IEC(国际电工技术委员会)为全世界标准形成了专门的系统.作为ISO或IEC成员的国家机构,通过由各自组织所建立的技术委员会来加入国际标准的开发,以处理特定领域的技术 ...

  10. 钉钉服务端api接口使用

    原文链接:http://www.cnblogs.com/xiaosongJiang/p/9991573.html 第一步:注册钉钉企业账号 打开链接:https://oa.dingtalk.com/# ...