您的位置:首页 > 编程语言 > PHP开发

windows 上使用 zephir 开发php扩展

2016-08-06 21:07 676 查看
转自:http://www.widuu.com/archives/04/1189.html


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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: