PHP扩展开发,一般来说需要一定的C基础。但是本篇文章介绍另一种扩展开发的方式。使用Zephir开发PHP扩展。

1.基础准备

1.1环境和软件

以CentOS系统为例,执行:

yum install gcc make re2c autoconf automake

没有PHP的同学需要装一下PHP,本篇不再介绍

1.2 安装解析器

拉取代码并编译成扩展

mkdir /phptemp

cd /phptemp

git clone git://github.com/phalcon/php-zephir-parser.git

cd php-zephir-parser

//这里替换成你的PHP所在目录

/usr/local/php/bin/phpize

//这里替换成你的PHP所在目录

./configure --with-php-config=/usr/local/php/bin/php-config

make

make install

//这里替换成你的PHP所在目录

/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/

vim php.ini添加:

extension="zephir_parser.so"

1.3下载编译软件

cd /phptemp

wget https://github.com/phalcon/zephir/releases/download/0.12.19/zephir.phar

//重命名为可执行文件,并添加到环境变量中(也可以挪到已添加到环境变量中的目录下)

mv zephir.phar zephir

添加成功时,在任意目录执行zephir,都可以看到如下效果。

_____ __ _

/__ / ___ ____ / /_ (_)____

/ / / _ \/ __ \/ __ \/ / ___/

/ /__/ __/ /_/ / / / / / /

/____/\___/ .___/_/ /_/_/_/

/_/

2正式开始

2.1初始化扩展目录

zephir init Huai

cd huai/huai

2.2编辑自己的第一个扩展文件

vim common.zep

namespace Huai;

class Common

{

public static function say()

{

echo "hello world!";

}

}

wq保存退出

2.3构建包

cd ..

处于和config.json平级的目录,执行

zephir build //注意,用root权限运行

2.4将生成的扩展添加到php.ini目录中

生成的文件在config.json平级的目录ext/modules里

将so文件挪到自己常用的so目录。

这里将目录替换成自己的php扩展所在目录

mv huai.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/

vim php.ini //增加自己的扩展

extension="huai.so"

2.5 试着执行一下

wq保存并重启PHP-FPM

php -m 查看扩展是否已加载。

echo Huai\Common::say();

输出:hello world!

是不是很简单,Enojoy it!

php 扩展开发,PHP扩展开发,做一个属于自己的PHP扩展吧相关推荐

  1. 如何在完全不懂服务器开发的情况下做一个实时联网对战的微信小游戏

    微信小游戏即将开放?有我们在,你还赶得上! 根据微信官方对外公开的消息,微信小游戏的脚步越来越接近了.它的开发者资格门槛和使用者门槛都很低,以后必将引爆一波"全民开发小游戏"浪潮. ...

  2. 前端开发,用 css3 做一个求婚小动画

    首先放张效果图 然后一步步分析一下 首先是刚出现的新郎的动画 .w-m img{ margin-right: 0; float: right; margin-top: 60px; animation: ...

  3. VS Code 新扩展,面向 Web 开发人员调试 DOM

    微软项目经理 Paul Gildea  发博说,他们针对 Web 开发人员,发布了一个新的 VS Code 扩展-- Elements for Microsoft Edge,这个扩展还是一个预览版,目 ...

  4. Laravel大型项目系列教程(七)之7 扩展包和Artisan开发

    本节教程将讲解扩展包开发和Artisan扩展开发,并浏览不同分辨率下的自适应效果.本节结束后整个教程就结束了,文章最后有完整版程序代码的下载. 1.扩展包开发 在前面开发中,我们经常要用到通知,如修改 ...

  5. 用原生安卓 做一个“套壳”APP、混合开发、安卓H5加壳开发

     源码下载 用安卓WebView做一个"套壳"APP.安卓混合开发.安卓hybridApp.安卓H5加壳开发-Java文档类资源-CSDN下载 Hybrid App(混合应用):即 ...

  6. 增强.net开发的5个非常有用的Visual Studio 2012扩展

    Microsoft visual studio 可以定义为一个 IDE,即集成的开发环境的缩写.无论是编写一个控制台,一个图形用户界面还是 windows 应用程序. web 站点. web 应用程序 ...

  7. activex for chrome扩展程序 下载”_提升前端开发效率:你应该知道的10个Chrome扩展程序...

    作者 | Chidume Nnamdi 译者 | 王强 策划 | 李俊辰 "进步不是勤奋者的功劳.它是懒惰者在尝试寻找更简单的方法时取得的成果."  --罗伯特·海因莱因 CSSV ...

  8. php5.5 集成环境,windows下配置php5.5开发环境及开发扩展_PHP

    网上的教程是比较多的,但是我发现在windows下的扩展开发比较少,而且大多都是php5.3版本以前的,今天我就给大家讲解一下php扩展开发,我就拿php5.5的版本来说明一下的了 windows环境 ...

  9. 帆软 JAVA扩展_java报表开发工具FineReport教程之报表设计:单元格扩展

    java报表开发工具FineReport教程之报表设计:单元格扩展 报表设计章节适用于对报表业务有一定的了解,需要学习FineReport报表的初学者. 通过该章节的学习,可以掌握设计器的使用,了解报 ...

最新文章

  1. c语言课程描述英文版,c语言学生选课系统(国外英文资料).doc
  2. 概率论-3.3 多维随机变量函数的分布
  3. JavaWeb-SpringBoot(抖音)_二、服务器间通讯
  4. 告别程序员生涯,一点感慨,与诸君共勉(转)
  5. [react] React为什么不要直接修改state?如果想修改怎么做?
  6. Linxu服务器文件双向同步 rsync+sersync 详细讲解
  7. Calico搭建配置
  8. db2插入的时候怎么自增_3篇长文讲“自增ID”,大部分人仍然搞错了!?
  9. 可达龙博客的第一篇文
  10. kernel命令行参数(grub启动项参数)
  11. R语言入门(2)——R包的安装
  12. msmms (二) sms与mms 简述!
  13. OSChina 周日乱弹——幸福来的太突然
  14. 笔记-MFC更换鼠标图片
  15. Java 学习 for循环小题目 天朝有一个乞丐姓洪,去天桥要钱第一天要了1块钱第二天要了2块钱第三天要了4块钱第四天要了8块钱以此类推 2n问题: 洪乞丐干10天,收入是多少?
  16. 看董事长陈睿发言谈B站变化,我与B站共成长
  17. JVAV面试常考基础概念
  18. 爬虫与反爬虫,永恒的道高一尺魔高一丈
  19. java判断工作日_java 查询指定月份的工作日(不包括法定节假日)
  20. 如期而至的SVN服务器迁移引来一个大瓜XAMPP

热门文章

  1. 蓝桥杯2017省赛——外星日历(Java)
  2. 【C语言程序设计】实验 7
  3. 每日一threeJS(1)
  4. 模拟单片计算机软件,用单片机来模拟ps2电脑键盘的程序
  5. springboot入门笔记
  6. 简练软考知识点整理-规划风险管理
  7. 基于Python PYQT5的GUI亚丁号辅助登陆界面
  8. CLOUD 云计算进阶(一)-云平台搭建与虚拟化服务
  9. window10下安装Elasticsearch(es)和IK分词器
  10. luogu P1941 飞扬的小鸟