摘要:概述是一个开源的用于简化扩展的创建和维护的语言。它使得不擅长的开发人员也能写出扩展。是缩写,读音为。然后我们在里调用方法正常的话会输出。至此我们也完成了我们的第一个扩展。
概述
Zephir是一个开源的用于简化PHP扩展的创建和维护的语言。它使得不擅长C/C++的PHP开发人员也能写出PHP扩展。Zephir是Zend Engine/PHP/Intermediate缩写,读音为zephyr。
Zephir在语法上跟PHP有很多相似之处,PHP开发人员可以很快上手,但也有很多地方上的不同需要我们去学习。下面是Zephir一些主要的特色:
变量类型:动态/静态
内存安全:不允许指针和直接的内存管理
编译模型:AOT(ahead of time)
内存模型:task-local垃圾回收
安装 依赖要使用Zephir和编译出一个PHP扩展,需要先安装以下的依赖:
gcc >= 4.x/clang >= 3.x
re2c 0.13+
gnu make 3.81+
autoconf 2.31+
automake 1.14+
libpcre3
php development headers and tools
安装这里选择使用git的方式获取源代码并进行安装:
bash$ git clone https://github.com/phalcon/zephir $ cd zephir $ ./install-json $ ./install -c
验证如果已经安装了json-c,那么可以忽略 ./install-json这一步。
通过运行zephir命令验证下是否安装成功:
bash$ zephir help _____ __ _ /__ / ___ ____ / /_ (_)____ / / / _ / __ / __ / / ___/ / /__/ __/ /_/ / / / / / / /____/\___/ .___/_/ /_/_/_/ /_/ Zephir version 0.7.1b Usage: command [options] Available commands: stubs Generates extension PHP stubs install Installs the extension (requires root password) fullclean Cleans the generated object files in compilation build Generate/Compile/Install a Zephir extension generate Generates C code from the Zephir code clean Cleans the generated object files in compilation builddev Generate/Compile/Install a Zephir extension in development mode compile Compile a Zephir extension version Shows the Zephir version api [--theme-path=/path][--output-directory=/path][--theme-options={json}|/path]Generates a HTML API help Displays this help init [namespace] Initializes a Zephir extension Options: -f([a-z0-9-]+) Enables compiler optimizations -fno-([a-z0-9-]+) Disables compiler optimizations -w([a-z0-9-]+) Turns a warning on -W([a-z0-9-]+) Turns a warning off我们的第一个扩展
下面我们使用Zephier来创建一个“hello world”扩展。
初始化首先,我们使用init命令来初始化扩展的基本结构(假设我们扩展的名称为“utils”):
bash$ zephir init utils
成功运行后,我们应该会得到如下的目录结构:
bashutils/ ext/ utils/
ext目录里放的是编译器需要用到的代码,不用理会,我们的Zephir代码将放在跟扩展名同名的utils里。
编写代码我们在utils目录下创建一个文件:greeting.zep,并编写代码:
phpnamespace Utils; class Greeting { public static function say() { echo "hello world!"; } }
这里不深入Zephir的语法,但是可以看到语法跟PHP很类似,上面的代码定义了一个类Greeting和一个方法say()。
编译Zephir的语法详情可以参考官方的文档:http://zephir-lang.com/language.html。
接下来,我们回到utils根目录下并运行build命令编译出扩展:
bash$ zephir build Preparing for PHP compilation... Preparing configuration file... Compiling... Installing... Extension installed! Add extension=utils.so to your php.ini Don"t forget to restart your web serverp
编译成功后,我们在PHP配置文件里增加以下一行:
iniextension=utils.so验证
通过如下命令查看我们的扩展是否正常加载:
bashphp -m [PHP Modules] ... memcached mysql mysqli mysqlnd openssl utils ...
如果看到我们扩展的名字,则证明已成功加载。
然后我们在PHP里调用say()方法:
php正常的话会输出:hello world!。至此我们也完成了我们的第一个扩展。
参考http://zephir-lang.com/index.html
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/21031.html
摘要:变量对象属性数组静态变量不支持全局变量,也不允许访问用户域的全局变量,但是可以访问的超级全局变量变量类型支持动态和静态类型。虽然失去了动态型变量的灵活性,但是在编译时静态变量能进行更多的优化。 概述 Zephir的语法跟PHP很相似,所以这里不会把官网的文档照搬过来翻译一遍,而是会把一些Zephir相较于PHP比较特别的语法挑出来讲一下。如果想要要完整学习Zephir的语法,没有比官...
摘要:四使用语言开发是我重点推荐的扩展开发框架,简明易懂,功能强大,开发效率高,代码易维护,执行速度快。优点三支持,的扩展开发有两套扩展开发框架,分别支持,,虽然框架代码有两个,但是接口却是一样的。 PHP扩展是高级PHP程序员必须了解的技能之一,对于一个初入门的PHP扩展开发者,怎么才能开发一个成熟的扩展,进入PHP开发的高级领域呢?本系列开发教程将手把手带您从入门进入高级阶段。本教程系列...
摘要:简介通过扩展,我们可以在代码中使用一些特定的方法大部分的扩展都是用写的。这个目录与我们的扩展同名。我们先来在扩展中创建一个类,使用此类来渲染。接下来命令行执行以下命令来编译扩展第一次运行以上命令时,会初始化一些东西。 showImg(https://segmentfault.com/img/remote/1460000018698586); 简介: 通过 PHP 扩展, 我们可以在 p...
摘要:什么是是一种中间语言,以接近的语法来编写代码,然后转换编译成扩展,旨在简化扩展的创建和可维护性。如果成功,会自动生成文件到目录你需要编辑填加扩展测试一下就这样,你也会扩展开发了附附编译扩展的方法 什么是 Zephir Zephir 是一种中间语言,以接近 PHP 的语法来编写代码,然后转换编译成 PHP 扩展,旨在简化 PHP 扩展的创建和可维护性。利用编译来提高性能和资源消耗,又不需...
摘要:更多关于的技术文章的扩展是用语言编写,是语言引擎,内核。见提供了一种类似的高级语言语法的方式,来自动生成扩展的语言代码,使编写扩展变得非常的简单。直接修改该文件的代码,使用原扩展的编辑方法也是可以滴。 更多关于PHP的技术文章http://www.codefrom.com/ php的扩展是用c语言编写,Zend是语言引擎,PHP内核。在实际编写php扩展的时候,需要使用大量的...
阅读 2517·2023-04-25 15:07
阅读 682·2021-11-24 10:21
阅读 2202·2021-09-22 10:02
阅读 3494·2019-08-30 15:43
阅读 3156·2019-08-30 13:03
阅读 2247·2019-08-29 17:18
阅读 3554·2019-08-29 17:07
阅读 1830·2019-08-29 12:27