zephir-(3)你的第一个PHP拓展
#zephir-你的第一个PHP拓展###前言##***先在这里感谢各位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开发人员:**

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Alipay PHP ...

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

PHP 개발에서 견고한 원칙의 적용에는 다음이 포함됩니다. 1. 단일 책임 원칙 (SRP) : 각 클래스는 하나의 기능 만 담당합니다. 2. Open and Close Principle (OCP) : 변경은 수정보다는 확장을 통해 달성됩니다. 3. Lisch의 대체 원칙 (LSP) : 서브 클래스는 프로그램 정확도에 영향을 미치지 않고 기본 클래스를 대체 할 수 있습니다. 4. 인터페이스 격리 원리 (ISP) : 의존성 및 사용되지 않은 방법을 피하기 위해 세밀한 인터페이스를 사용하십시오. 5. 의존성 반전 원리 (DIP) : 높고 낮은 수준의 모듈은 추상화에 의존하며 종속성 주입을 통해 구현됩니다.

시스템이 다시 시작된 후 UnixSocket의 권한을 자동으로 설정하는 방법. 시스템이 다시 시작될 때마다 UnixSocket의 권한을 수정하려면 다음 명령을 실행해야합니다.

phpstorm에서 CLI 모드를 디버그하는 방법은 무엇입니까? PHPStorm으로 개발할 때 때때로 CLI (Command Line Interface) 모드에서 PHP를 디버그해야합니다 ...

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

PHP 개발에서 PHP의 CURL 라이브러리를 사용하여 JSON 데이터를 보내면 종종 외부 API와 상호 작용해야합니다. 일반적인 방법 중 하나는 컬 라이브러리를 사용하여 게시물을 보내는 것입니다 ...

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.
