windows 上使用 zephir 开发php扩展
2016-08-06 21:07
676 查看
转自:http://www.widuu.com/archives/04/1189.html
官方上提供了 ubuntu 的,也就是说基本版本的 linux 版本都可以哈,我上一篇文章介绍了 Docker 和 MAC OS 上开发 PHP 扩展,这一章很简单,就是开发windows 上的 php 的扩展。
大家可以根据我前边的文章 windows 扩展开发php 这篇文章来搭建环境。
安装 composer ,点击 Composer-Setup.exe 连接,下载安装即可。
建立一个文件夹,譬如
这个时候,你需要将地址添加到你的环境变量中,譬如我的
编写源代码,编译,测试
命令行,创建一个项目
进入 widuu/widuu 文件夹,建立一个
编写源代码,如下,就是上一篇文章的例子
编译安装
使用如下命令
将
注:开发环境的扩展目录,相对于 http://www.widuu.com/archives/12/1150.html 这篇文章中的
然后命令行进入开发环境中的
编译完成后,我们就在
php 的
重启你的环境,测试,用上一篇文章的代码测试,如下
结果输出
成功,同样的功能,大家有时间可以分析一下 C 的源代码,如果大家有问题,可以发邮件
0x01 介绍
官方上提供了 ubuntu 的,也就是说基本版本的 linux 版本都可以哈,我上一篇文章介绍了 Docker 和 MAC OS 上开发 PHP 扩展,这一章很简单,就是开发windows 上的 php 的扩展。
0x02 环境
大家可以根据我前边的文章 windows 扩展开发php 这篇文章来搭建环境。Visual Studio 2010 2012 php-sdk-binary-tools- deps php 源码
0x03 zephir windows 环境
安装 composer ,点击 Composer-Setup.exe 连接,下载安装即可。建立一个文件夹,譬如
php, 然后命令行
g:\ cd php composer require phalcon/zephir:dev-master
这个时候,你需要将地址添加到你的环境变量中,譬如我的
#添加到环境变量中 G:\php\vendor\bin
0x03
编写源代码,编译,测试命令行,创建一个项目
zephir init widuu
进入 widuu/widuu 文件夹,建立一个
service.zep文件。
编写源代码,如下,就是上一篇文章的例子
namespace Widuu; class Service{ protected _service; public function _set(string name,object obj) -> int{ if (typeof obj != "object") { throw new \Exception("type error!!"); } let this->_service[name] = obj; return 1; } public function _get(string name){ if (!isset this->_service[name]) { return 0; } return this->_service[name]; } public function _del(string name){ let this->_service[name] = null; } }
编译安装
使用如下命令
cd .. # 这里指,我们用zephir 创建的 widuu 目录 zephir generate widuu
将
ext文件夹,复制到开发环境中的扩展目录,并重新命名为
widuu。
注:开发环境的扩展目录,相对于 http://www.widuu.com/archives/12/1150.html 这篇文章中的
C:\php-sdk\phpdev\vc11\x86\php-5.5.20\ext目录。
然后命令行进入开发环境中的
C:\php-sdk\phpdev\vc11\x86\php-5.5.20\目录,执行如下语句
buildconf --force configure --disable-all --enable-cli --enable-widuu=shared #编译 nmake
编译完成后,我们就在
C:\php-sdk\phpdev\vc11\x86\php-5.5.20\Release_TS目录中看到了
php_widuu.dll动态链接库了,然后放到我们的
php 的
ext文件夹中,并在
php.ini中加入
extension = php_widuu.dll
00×4
重启你的环境,测试,用上一篇文章的代码测试,如下<?php class string{ public function test(){ echo "hello word"; } } $service = new Widuu\Service(); // 故意写错类型 try{ $service->_set('string',"222"); }catch(Exception $e){ echo $e->getMessage(); } // 注册服务 $service->_set('string',new string()); // 获取对象 $s = $service->_get('string'); // 测试 $s->test();
结果输出
type error! hello word
成功,同样的功能,大家有时间可以分析一下 C 的源代码,如果大家有问题,可以发邮件
admin#widuu.com
相关文章推荐
- windows开发php扩展
- php trim()函数
- PHP自定义异常
- PHP中的ob_start用法详解
- yii 控制器的默认行为的修改(路由默认行为的修改)
- php--多维数组排序函数array_multisort
- php 魔鬼训练
- Yii 里面直接执行sql语句
- yii日志功能详解
- 设置phpMyAdmin4.5.5.1的登录保持时间
- 线程监视 OutputDebugString 的调试输出
- laravel 如何引入自己的函数或类库
- 函数值传递和引用传递
- 用java给php写个万能接口
- WindowManager.LayoutParam 中 窗口 键盘等的设置
- PHP处理密码的几种方式【转载】
- php书写规范
- php利用phpmailer发送邮件
- PHP中的魔术方法
- TP无限极分类