用PHP寫PHP7擴展,超級簡單對吧!


 【圖片打不開,請用代理】

介紹:

PHP擴展是編譯庫,它允許在您的PHP代碼中使用特定的功能(主要是使用C編寫的php擴展)。

例如,您需要使用PHP使用SQLite3,您可以實現自己的方法和功能來連接到Sqlite3,從您的應用程序級別向DB進行查詢,但這不是一項簡單的任務,插件不僅是您自己的要求,但其他開發人員需要做類似的事情。

所以有人開發了它並將其作為php擴展發送,您可以安裝此擴展並php.ini使用以下內容啟用它extension=sqllite3.so,並且您可以通過您的應用程序級別訪問所有sqlite3功能,在這種情況下是php。

你的第一次擴展

ZEPHIR:

根據zephir官方文檔,您可以將其定義如下

一種開源的,高級/域特定的語言,旨在簡化PHP擴展的創建和可維護性,重點關注類型和內存安全性。

特征:

  • 輸入 系統:動態/靜態。
  • 內存安全:不允許使用指針或直接內存管理。
  • 編譯模型:提前。
  • 內存模型:任務本地垃圾收集。

這個怎么運作 ?

您編寫PHP代碼並將您的代碼編譯為c擴展名,最后您可以將其添加到您的php.ini文件中。

這是編譯方案的例子:

 

編制方案

  • 讓我們以Hello world擴展為例。
 
 

Zephir安裝

要求 :

  • gcc> = 4.x / clang> = 3.x
  • re2c 0.13或更高版本
  • gnu make 3.81或更高版本
  • autoconf 2.31或更高版本
  • automake 1.14或更高版本
  • libpcre3
  • php開發標題和工具
  • re2c
  • PHP-ZEPHIR解析器

如果您使用的是Ubuntu,則可以通過以下方式安裝所需的軟件包:

sudo apt-get update 
sudo apt-get install git gcc make re2c php7.0 php7.0-json php7.0-dev libpcre3-dev

由於Zephir是用PHP編寫的,因此您需要安裝最新版本的PHP 7.2,並且必須在您的控制台中使用它。

 

此外,請確保您還安裝了PHP開發庫以及PHP安裝。

 

腳步

git clone https://github.com/phalcon/zephir

cd zephir

./install -c

驗證您的安裝

zephir幫助

如果一切順利,您應該在屏幕上看到以下幫助:

 

擴展骨架:

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我們的項目必須編譯並生成擴展:

zephir build

最初,並且只是第一次執行許多內部命令,生成必要的代碼和配置以將此類導出到PHP擴展,如果一切順利,您將在輸出的末尾看到以下消息:

 

zephir構建輸出

安裝驗證:

 

從PHP測試您的擴展:

 
<?php
echo HelloWorld\Greeting::say()."\n";

 

運行以下命令, php zephir_helloworld.php 您的輸出應該是以下Hello World!

結論:

如果你是軟件工程師,php開發人員需要開發和使用php如何工作以及如何構建自己的擴展我建議zephir有一個非常強大的文檔和felxability也是它的內存安全管理。但是由於它有一些限制,根據以下Zephir被設計為安全,所以它不實現指針或手動內存管理,所以如果你是一個C程序員,你會覺得Zephir不如C強大但比C更友好。

參考文獻:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM