摘要:简介通过扩展,我们可以在代码中使用一些特定的方法大部分的扩展都是用写的。这个目录与我们的扩展同名。我们先来在扩展中创建一个类,使用此类来渲染。接下来命令行执行以下命令来编译扩展第一次运行以上命令时,会初始化一些东西。
简介:
通过 PHP 扩展, 我们可以在 php 代码中使用一些特定的方法(大部分的 php 扩展都是用 C 写的)。
比如,在 PHP 中需要与 SQLite3 交互,我们可以自己写方法与之进行连接,再写 SQL 语句请求数据。然而,这都是些既琐碎又重复度相当高的工作,因此,所有开发者对插件的需求呼之欲出。
现在,这款插件已经诞生了。你只需像安装其他扩展一样进行安装,然后在 "php.ini" 文件执行 "extension=sqllite3.so",就可以在你的 php 项目里对 sqlite3 进行访问了。
你该安装的第一个扩展 Zephir:官网文档给出的定义是:
一种开源的高级语言,旨在简化 PHP 扩展的创建和可维护性,重点关注类型和内存安全性。
特点:
类型:动态 / 静态。
内存安全性:不允许指针或者直接内存管理。
编译模式:提前编译。
内存模型:本地任务垃圾回收机制。
工作原理?
把你写好的 php 代码编译成 c,然后你可以将其以扩展的形式添加到 "php.ini" 文件中。
下面是编译方案的例子:
编译方案
让我们从 Hello world 的扩展开始吧。
Zephir 安装配置要求 :
gcc >= 4.x/clang >= 3.x
re2c 0.13 or later
gnu make 3.81 or later
autoconf 2.31 or later
automake 1.14 or later
libpcre3
php development headers and tools
re2c
php-zephir-parser
如果你是用 Ubuntu, 可以采取如下方式安装:
sudo apt-get update sudo apt-get install git gcc make re2c php7.0 php7.0-json php7.0-dev libpcre3-dev
参考下图命令,确认安装了较新的 PHP 版本:
参考下图命令,确认有 PHP 开发库:
然后
git clone https://github.com/phalcon/zephir
cd zephir
./install -c
验证是否安装正确:
zephir help
如果一切就绪,你应该能在你的屏幕上看到以下帮助信息:
扩展初始化:
zephir init helloworld
然后,一个名字为 “helloworld” 的目录在当前工作目录中被创建:
扩展目录结构:
ext: 包含被编译器用来生成扩展的代码。
helloworld: 这个目录与我们的扩展同名。我们在这个目录中放置 Zephir 代码。
config.json: 这个文件包含我们可用于更改 Zephir 与/或此扩展的行为的配置
添加我们的第一个类:
在 helloworld 目录中 .
Zephir 的设计初衷是用来生成面对对象的扩展,接下来我们先添加一个初始类。
我们先来在扩展中创建一个 helloworld 类,使用此类来渲染 Hello World!。
helloworld/helloworld/greeting.zep
namespace HelloWorld; class Greeting { public static function say() { echo "Hello World!"; } }
接下来命令行执行以下命令来编译扩展:
zephir build
第一次运行以上命令时,会初始化一些东西。如果一些顺利的话,会输出以下内容:
zephir build output
检测下是否安装成功:
在 PHP 代码中测试:
zephir_helloworld.php
接下来运行命令:
php zephir_helloworld.php你可以可以看到输出 Hello World!
结语如果你是 PHP 软件工程师,对内存管理等底层语言的编程方式不是特别熟悉,可以尝试从 Zephir 开始写一些简单的扩展。
Zephir 内部已经做好了内存管理,但是基于其内存安全的设计,你无法使用 C 语言的强大手动内存管理功能,如果你是 C 程序员,你会觉得 Zephir 更加简单易用,但是在有些地方可能不够强大。
文章转自:https://learnku.com/php/t/25350
更多文章:https://learnku.com/laravel/c...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/31130.html
摘要:四使用语言开发是我重点推荐的扩展开发框架,简明易懂,功能强大,开发效率高,代码易维护,执行速度快。优点三支持,的扩展开发有两套扩展开发框架,分别支持,,虽然框架代码有两个,但是接口却是一样的。 PHP扩展是高级PHP程序员必须了解的技能之一,对于一个初入门的PHP扩展开发者,怎么才能开发一个成熟的扩展,进入PHP开发的高级领域呢?本系列开发教程将手把手带您从入门进入高级阶段。本教程系列...
摘要:什么是是一种中间语言,以接近的语法来编写代码,然后转换编译成扩展,旨在简化扩展的创建和可维护性。如果成功,会自动生成文件到目录你需要编辑填加扩展测试一下就这样,你也会扩展开发了附附编译扩展的方法 什么是 Zephir Zephir 是一种中间语言,以接近 PHP 的语法来编写代码,然后转换编译成 PHP 扩展,旨在简化 PHP 扩展的创建和可维护性。利用编译来提高性能和资源消耗,又不需...
摘要:概述是一个开源的用于简化扩展的创建和维护的语言。它使得不擅长的开发人员也能写出扩展。是缩写,读音为。然后我们在里调用方法正常的话会输出。至此我们也完成了我们的第一个扩展。 概述 Zephir是一个开源的用于简化PHP扩展的创建和维护的语言。它使得不擅长C/C++的PHP开发人员也能写出PHP扩展。Zephir是Zend Engine/PHP/Intermediate缩写,读音为zep...
摘要:更多关于的技术文章的扩展是用语言编写,是语言引擎,内核。见提供了一种类似的高级语言语法的方式,来自动生成扩展的语言代码,使编写扩展变得非常的简单。直接修改该文件的代码,使用原扩展的编辑方法也是可以滴。 更多关于PHP的技术文章http://www.codefrom.com/ php的扩展是用c语言编写,Zend是语言引擎,PHP内核。在实际编写php扩展的时候,需要使用大量的...
摘要:变量作为函数返回值时,必须声明为动态类型。动态变量与中的变量基本完全相同支持在使用时改变类型。比较运算符在运算时考虑变量类型,如果是动态变量与一致。与不一致,语句可以没有,表示忽略所有异常。 上一篇 《Zephir 简介》 简单介绍了环境搭建,编写了一个的简单示例。这一篇继续介绍 Zephir 基础。 基本语法Zephir 中,每个文件都必须有且只有一个类,每个类都必须有一个命名空间,...
阅读 1349·2021-11-25 09:43
阅读 2006·2021-07-26 23:38
阅读 665·2019-08-30 15:53
阅读 2264·2019-08-30 15:43
阅读 1144·2019-08-29 18:40
阅读 1951·2019-08-26 13:28
阅读 1908·2019-08-23 18:20
阅读 467·2019-08-23 15:07