#zephir-你的第一个PHP拓展#php
##前言## 先在这里感谢各位zephir开源技术提供者git
在以前的介绍中你们不只了解了zephir具体是一个什么样的语言,也get到了它的安装方式,成功安装到本身的系统上了.今天让咱们来一同编写以前咱们演示过的一些拓展让咱们来一同动起手来尝试一下.github
注:笔者水平有限,说的不正确的地方但愿你们多多指正,一同交流技术web
附上:shell
喵了个咪的博客:w-blog.cn编程
zephir官网地址:http://zephir-lang.com/json
github地址:https://github.com/phalcon/zephirsession
##1. 第一个拓展##框架
Zephir和这本书(官方文档和此译文讲解)的目的是为PHP开发人员想要用较低的复杂性建立c扩展。编程语言
假设你有一个或多个其余编程语言的经验,咱们将指出zephit和PHP中,C、Javascript和其余语言有不少类似的特性,以及新的或不一样的许多特性。
若是你已经成功安装Zephir,你必须可以在您的控制台执行如下命令:
$ zephir help
若是一切都好,你应该在你的屏幕上看到如下帮助信息.
###1.1 扩展框架###
咱们要作的第一件事就是生成一个扩展框架,这将提供给咱们扩展的基本 咱们须要开始工做的结构。 在咱们的例子中,咱们将建立一个扩展名为“utils”:
$ zephir init utils
执行以后,一个目录称为“utils”建立在当前工做目录:
$ cd utils $ ls ext/ utils/ config.json
目录“ext/”包含将要由编译器用于产生扩展的代码。建立的另外一个目录是“utils”,在utils目录下面还有一个utils目录,咱们将咱们编写的Zephir代码放在在这个目录中。
目录列表也将向咱们展现一个文件称为“config.json”,该文件包含配置设置 咱们能够用它来改变Zephir扩展的行为以及一些扩展信息。
###1.2 咱们的第一节课###
Zephir生成面向对象的扩展。开始开发,咱们须要给咱们的一个类添加到扩展功能。
正如在许多语言/工具,咱们要作的第一件事就是写一个“Hello World”对zephir进行检查,所以,咱们的第一个类将被称为“Utils\Greeting”,它包含的方法打印“hello world!”.。
这个类的代码必须被放置在“utils/utils/greeting.zep”:
namespace Utils; class Greeting { public static function say() { echo "hello world!"; } }
如今,咱们须要告诉Zephir编译和生成的扩展,必须在根目录:
$ zephir build
固然咱们在编译中可能遇到不少问题好比:
PHP Warning: shell_exec().....
这是应为php.ini没有打开这些函数致使没法使用这些函数,咱们找到disable_functions = 而后去掉后面的exec和shell_exec,passthr,systemzephir的编译依赖于这些函数
还有可能可能会看到以下提示:
error: re2c is not installed
这是应为没有安装re2c拓展,执行以下语句安装:
wget http://downloads.sourceforge.net/project/re2c/0.15.3/re2c-0.15.3.tar.gz tar zxf re2c-0.15.3.tar.gz && cd re2c-0.15.3 ./configure make && make install
若是一切顺利,您将看到如下消息 的输出:
... Extension installed! Add extension=utils.so to your php.ini Don't forget to restart your web server
最后,必须添加到php扩展。 php.ini中加入extension=utils.so。
如今,添加到您的php扩展。 ini,检查是否正常加载扩展经过执行如下:
$ php -m [PHP Modules] Core date libxml pcre Reflection session SPL standard tokenizer utils xdebug xml
扩展“utils”必须的一部分输出代表扩展是正确加载。 如今,让咱们看看咱们 “hello world”直接执行的PHP。 为此,您能够建立一个简单的PHP文件调用静态方法 刚刚建立的:
<?php echo Utils\Greeting::say(), "\n";
恭喜你! ,你第一次上运行PHP扩展。
##2 一个有用的类##
“hello world”类很好检查若是咱们的环境是对的,如今,让咱们建立一些更有用的类。
第一个有用的类,咱们要添加此扩展将为用户提供过滤设备。 这个类被称为“Utils\Filter”,其代码都必须放置在“utils/Utils/filter.zep”:
namespace Utils; class Filter { }
类包含过滤方法,帮助用户过滤没必要要字符串。 第一个方法叫作“alpha”,其目的是过滤只有那些ascii字符基本的字母。 开始,咱们只是将遍历每一个字节字符串打印到标准输出:
namespace Utils; class Filter { public function alpha(string str) { char ch; for ch in str { echo ch, "\n"; } } }
当调用这个方法:
<?php $f = new Utils\Filter(); $f->alpha("hello");
你会看到:
h e l l o
检查每一个字符的字符串都是简单的,咱们如今就能够建立另外一个字符串过滤字符:
class Filter { public function alpha(string str) -> string { char ch; string filtered = ""; for ch in str { if (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') { let filtered .= ch; } } return filtered; } }
完整的方法也能够像以前测试:
<?php $f = new Utils\Filter(); echo $f->alpha("!he#02l3'121lo.");
##3. 总结##
这是一个很是简单的教程,你能够看到,很容易使用Zephir开始构建扩展,后面咱们更深刻的学习会和全部语言同样从最基础变量语法开始,一步一步深刻,最后多谢你们的支持!
注:笔者能力有限有说的不对的地方但愿你们可以指出,也但愿多多交流!
zephir技术交流:246348908 欢迎你们的加入!
感谢zephir开发人员: