Maison développement back-end tutoriel php zephir-(3)你的第一个PHP拓展

zephir-(3)你的第一个PHP拓展

Jun 23, 2016 pm 01:15 PM

#zephir-你的第一个PHP拓展#![](http://i.imgur.com/OuZmZ0R.png)##前言##***先在这里感谢各位zephir开源技术提供者***在之前的介绍中大家不仅了解了zephir具体是一个什么样的语言,也get到了它的安装方式,成功安装到自己的系统上了.今天让我们来一同编写之前我们演示过的一些拓展让我们来一同动起手来尝试一下.**注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术**附上:喵了个咪的博客:[w-blog.cn](w-blog.cn)zephir官网地址:[http://zephir-lang.com/](http://zephir-lang.com/ "zephir官网")github地址:[https://github.com/phalcon/zephir](https://github.com/phalcon/zephir)##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,system**zephir的编译依赖于这些函数还有可能可能会看到如下提示:	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开发人员:**![](http://i.imgur.com/puoG4mx.png)
Copier après la connexion

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Travailler avec les données de session Flash dans Laravel Travailler avec les données de session Flash dans Laravel Mar 12, 2025 pm 05:08 PM

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Mar 14, 2025 am 11:42 AM

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Misque de réponse HTTP simplifié dans les tests Laravel Misque de réponse HTTP simplifié dans les tests Laravel Mar 12, 2025 pm 05:09 PM

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

12 meilleurs scripts de chat PHP sur Codecanyon 12 meilleurs scripts de chat PHP sur Codecanyon Mar 13, 2025 pm 12:08 PM

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

Expliquez le concept de liaison statique tardive en PHP. Expliquez le concept de liaison statique tardive en PHP. Mar 21, 2025 pm 01:33 PM

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Mar 28, 2025 pm 05:12 PM

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.

Caractéristiques de sécurité du cadre: protection contre les vulnérabilités. Caractéristiques de sécurité du cadre: protection contre les vulnérabilités. Mar 28, 2025 pm 05:11 PM

L'article traite des fonctionnalités de sécurité essentielles dans les cadres pour se protéger contre les vulnérabilités, notamment la validation des entrées, l'authentification et les mises à jour régulières.

See all articles