详细zephir自定义php的扩展

末鹿安然 提交于 2020-08-13 08:30:02

整个过程是zephir和底层编译器自动进行编译优化的,当然也可以自己调整以获得更好的性能。
在ubuntu下的安装如官方教程即可,在centos下的安装如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
su   -c 'yum update'
sudo   yum install   -y wget
sudo   yum install   -y vim
sudo   yum install   -y libtool
sudo   yum install   -y gcc
sudo   yum install   -y make
sudo   yum install   -y re2c
 
sudo   rpm -Uvh https: //mirror .webtatic.com /yum/el6/latest .rpm
sudo   yum install   -y php55w
sudo   yum install   -y php55w-devel
sudo   yum install   -y php55w-json
 
sudo   yum install   -y git-core
 
git clone https: //github .com /json-c/json-c .git
cd   json-c
. /autogen .sh
. /configure
make
make   install
 
git clone https: //github .com /phalcon/zephir
cd   zephir
. /install   -c
zephir help

安装完成如下:
zephir10
按照教程创建示例:

1
2
3
zephir init utils
cd   utils
sudo   vim utils /greeting .zep

greeting.zep代码如下:

1
2
3
4
5
6
7
8
9
10
11
namespace   Utils;
 
class   Greeting
{
 
     public   static   function   say()
     {
         echo   "hello world!" ;
     }
 
}

编译安装(切记切回项目的根目录/

1
$ zephir build

注意,我在php5.3下面这么编译都不行,在php5.5/php5.4的版本基本没有碰到什么问题。
然后更改php.ini:

1
sudo   vim /etc/php .ini

在php.ini中加上以下内容

1
2
3
4
5
6
7
;zephir编译的扩展需要依赖json.so,需要提前加载
[json]
;如果php.ini中没有则加上,有则去掉;
extension=json.so
 
[utils]
extension=utils.so

查看php可用扩展

1
php -i

注意:如果提示’undefined symbol: php_json_decode_ex in Unknown on line 0’,则是php json扩展未加载,在php.ini打开就行了。加载了json.so后又提示’PHP Warning: Module ‘json’ already loaded’,则是已经在其他地方加载了该扩展,找出并注释掉。我的是在php.d下面的json.ini里面:

1
sudo   vim /etc/php .d /json .ini
1
2
3
[json]
;已经在php.ini中加载了,为避免重复加载注释掉
;extension = json

加载成功后的效果:
zephir3
创建一个php脚本来试一下

1
2
cd   ~ /utils
sudo   vim greeting.php

greeting.php代码如下:

1
2
3
<?php
 
echo   Utils\Greeting::say(), "\n" ;

保存并运行:
zephir11
zephir5
zephir6
至此你的zephir编译的扩展已经成功了,赶紧翻译你的PHP代码去吧。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!