资讯专栏INFORMATION COLUMN

Zephir入门 —— Hello world篇

Vicky / 1924人阅读

摘要:概述是一个开源的用于简化扩展的创建和维护的语言。它使得不擅长的开发人员也能写出扩展。是缩写,读音为。然后我们在里调用方法正常的话会输出。至此我们也完成了我们的第一个扩展。

概述

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入门 —— 语法

    摘要:变量对象属性数组静态变量不支持全局变量,也不允许访问用户域的全局变量,但是可以访问的超级全局变量变量类型支持动态和静态类型。虽然失去了动态型变量的灵活性,但是在编译时静态变量能进行更多的优化。 概述 Zephir的语法跟PHP很相似,所以这里不会把官网的文档照搬过来翻译一遍,而是会把一些Zephir相较于PHP比较特别的语法挑出来讲一下。如果想要要完整学习Zephir的语法,没有比官...

    shiina 评论0 收藏0
  • PHP扩展开发教程1 - 相关开发技术对比及介绍

    摘要:四使用语言开发是我重点推荐的扩展开发框架,简明易懂,功能强大,开发效率高,代码易维护,执行速度快。优点三支持,的扩展开发有两套扩展开发框架,分别支持,,虽然框架代码有两个,但是接口却是一样的。 PHP扩展是高级PHP程序员必须了解的技能之一,对于一个初入门的PHP扩展开发者,怎么才能开发一个成熟的扩展,进入PHP开发的高级领域呢?本系列开发教程将手把手带您从入门进入高级阶段。本教程系列...

    alaege 评论0 收藏0
  • 使用 Zephir 轻松构建 PHP 扩展

    摘要:简介通过扩展,我们可以在代码中使用一些特定的方法大部分的扩展都是用写的。这个目录与我们的扩展同名。我们先来在扩展中创建一个类,使用此类来渲染。接下来命令行执行以下命令来编译扩展第一次运行以上命令时,会初始化一些东西。 showImg(https://segmentfault.com/img/remote/1460000018698586); 简介: 通过 PHP 扩展, 我们可以在 p...

    gaosboy 评论0 收藏0
  • 【PHP 扩展开发】Zephir 简介

    摘要:什么是是一种中间语言,以接近的语法来编写代码,然后转换编译成扩展,旨在简化扩展的创建和可维护性。如果成功,会自动生成文件到目录你需要编辑填加扩展测试一下就这样,你也会扩展开发了附附编译扩展的方法 什么是 Zephir Zephir 是一种中间语言,以接近 PHP 的语法来编写代码,然后转换编译成 PHP 扩展,旨在简化 PHP 扩展的创建和可维护性。利用编译来提高性能和资源消耗,又不需...

    arashicage 评论0 收藏0
  • Zephir--最简单的php扩展开发工具

    摘要:更多关于的技术文章的扩展是用语言编写,是语言引擎,内核。见提供了一种类似的高级语言语法的方式,来自动生成扩展的语言代码,使编写扩展变得非常的简单。直接修改该文件的代码,使用原扩展的编辑方法也是可以滴。 更多关于PHP的技术文章http://www.codefrom.com/ php的扩展是用c语言编写,Zend是语言引擎,PHP内核。在实际编写php扩展的时候,需要使用大量的...

    dinfer 评论0 收藏0

发表评论

0条评论

Vicky

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<