>本教程將解釋如何使用新語言創建PHP擴展:Zephir,類似於C和Fortran。您可以從GitHub下載完整的源代碼。我們之前曾談到過Zephir的概念,因此,如果您有興趣獲得廣泛的概述,請參閱我們以前的文章。 可以將Zephir視為一種混合語言,使您可以編寫看起來像PHP的代碼,但然後將其編譯到本機C,這意味著您可以從中創建擴展名並使用非常有效的代碼。
鑰匙要點
> Zephir允許PHP開發人員使用類似於PHP的語法編寫有效的擴展,但已編譯為本機C以增強性能。
- 要建立Zephir開發環境,您需要特定的工具,例如GCC,GNU MAKE,PHP開發標頭,RE2C和JSON-C,並建議基於Linux的系統。
在Zephir中創建PHP擴展的過程涉及初始化項目,在.zep文件中編寫代碼,編譯代碼並配置您的PHP環境以包括新擴展。
- > Zephir不僅提高了性能,還提供了一種保護源代碼的方法,使其適合創建封閉的源PHP應用程序。
- >安裝
- 要構建PHP擴展名並使用Zephir,您需要以下內容:
> - gcc> = 4.x/clang> = 3.x/vc 9 >
> JSON-C
>每個平台的安裝說明都有所不同,因此,我相信,如果您正在閱讀帶有類似於此的主題的文章,您會知道如何獲得它們。為了記錄 - 我建議使用基於Linux的系統開發Zephir應用程序。
- 獲得所有先決條件軟件後,請從Github下載最新版本的Zephir,然後運行Zephir安裝程序,例如:
- 它應該自動安裝 - 嘗試鍵入Zephir幫助。如果不起作用,請將“ bin”目錄添加到您的路徑環境變量中。就我而言:/home/duythien/app/zephir/bin,就像這樣:
- >
- 附加以下導出命令: >
- 要驗證新路徑設置並測試安裝,請輸入:
- >您可以找到有關Zephir基礎知識和語法以及其鍵入系統的信息,並在其網站上查看一些演示腳本。
編程
>現在,我們將使用Zephir來重新工作C和Fortran很好地處理的數學方程式。這個例子是深奧的,不會被大量解釋,除了演示Zephir的力量。用有限差
求解的時間依賴性的Schrodinger方程<span>git clone https://github.com/phalcon/zephir </span><span>cd zephir && ./install -c</span>時間依賴性的schrödinger方程可以通過隱式(大矩陣)和顯式(leapfrog)方法來求解。我將使用明確的方法。
首先,發出以下命令來創建擴展名的骨架:
<span>git clone https://github.com/phalcon/zephir </span><span>cd zephir && ./install -c</span>>完成此命令後,在當前工作目錄上創建了一個稱為“ myApp”的目錄。這看起來像:
在“ myApp”文件夾中,創建一個稱為“ contenum.zep”的文件(這將為我們提供MyAppquantum名稱空間)。在內部複製以下代碼:
vi $HOME/.bash_profile
>我們使用了許多PHP函數,例如Fopen(),Sin(),fprintf()等 - 隨意研究語法。我還將給你一個例子。在使用Phalcon PHP框架的過程中,如果您在越南人或德語工作,則功能phalcontag :: friendertitle()是無效的。這個示例比上面的方程簡單得多,可以創建file normalizechars.zep。將以下代碼插入文件:
export PATH=$PATH:/home/duythien/app/zephir/bin
現在,我們需要告訴Zephir必須編譯我們的項目,並生成擴展名:
echo $PATH zephir help
首次運行,執行了許多內部命令,生成了必要的代碼和配置,以將此類導出到PHP擴展名中。如果一切順利,您將在輸出結束時看到以下消息:
>zephir init myapp
編譯…
安裝…安裝了擴展!添加擴展= myApp.o so到您的php.ini
>
不要忘記重新啟動您的Web服務器
>請注意,由於Zephir尚處於起步階段,因此可以遇到錯誤和問題。我第一次試圖編譯它沒有用。我嘗試了以下命令,並最終使它起作用:
最後一個命令將在PHP擴展文件夾中安裝模塊(在我的情況下:/usr/lib/php5/20121212/)。最後一步是通過添加以下行添加此擴展名:
myapp/ |-----ext/ |-----myapp/ |-----config.json重新啟動apache,我們完成了。
>
測試代碼namespace Myapp; class Quantum{ const PI = 3.14159265358979323846; const MAX = 751; public function Harmos(double x){ int i,j,n; var psr, psi, p2, v,paramater,fp; double dt,dx,k0,item_psr,item_psi; let dx = 0.02, k0 = 3.0*Myapp\Quantum::PI, dt = dx*dx/4.0; let paramater =[dx,k0,dt,x]; let i = 0, psr = [], psi = [], p2 = [], v = [], fp = []; let fp = fopen ("harmos.txt", "w"); if (!fp) { return false; } while i old let j = 1; while j <p>現在,創建一個名為zephir.php的新文件:<ancy>> </ancy></p> <h4 id="gt-通過訪問Zephir-php頁面結束-它看起來應該與以下輸出相似">>通過訪問Zephir.php頁面結束。它看起來應該與以下輸出相似:</h4> <p></p> <pre class="brush:php;toolbar:false">namespace Myapp; class NormalizeChars{ public function trans(var s) { var replace; let replace = [ "ế" : "e", "ề" : "e", "ể" : "e", "ễ" : "e", "ệ" : "e", //--------------------------------E^ "Ế" : "e", "Ề" : "e", "Ể" : "e", "Ễ" : "e", "Ệ" : "e", //--------------------------------e "é" : "e", "è" : "e", "ẻ" : "e", "ẽ" : "e", "ẹ" : "e", "ê" : "e", //--------------------------------E "É" : "e", "È" : "e", "Ẻ" : "e", "Ẽ" : "e", "Ẹ" : "e", "Ê" : "e", //--------------------------------i "í" : "i", "ì" : "i", "ỉ" : "i", "ĩ" : "i", "ị" : "i", //--------------------------------I "Í" : "i", "Ì" : "i", "Ỉ" : "i", "Ĩ" : "i", "Ị" : "i", //--------------------------------o^ "ố" : "o", "ồ" : "o", "ổ" : "o", "ỗ" : "o", "ộ" : "o", //--------------------------------O^ "Ố" : "o", "Ồ" : "o", "Ổ" : "o", "Ô" : "o", "Ộ" : "o", //--------------------------------o* "ớ" : "o", "ờ" : "o", "ở" : "o", "ỡ" : "o", "ợ" : "o", //--------------------------------O* "Ớ" : "o", "Ờ" : "o", "Ở" : "o", "Ỡ" : "o", "Ợ" : "o", //--------------------------------u* "ứ" : "u", "ừ" : "u", "ử" : "u", "ữ" : "u", "ự" : "u", //--------------------------------U* "Ứ" : "u", "Ừ" : "u", "Ử" : "u", "Ữ" : "u", "Ự" : "u", //--------------------------------y "ý" : "y", "ỳ" : "y", "ỷ" : "y", "ỹ" : "y", "ỵ" : "y", //--------------------------------Y "Ý" : "y", "Ỳ" : "y", "Ỷ" : "y", "Ỹ" : "y", "Ỵ" : "y", //--------------------------------DD "Đ" : "d", "đ" : "d", //--------------------------------o "ó" : "o", "ò" : "o", "ỏ" : "o", "õ" : "o", "ọ" : "o", "ô" : "o", "ơ" : "o", //--------------------------------O "Ó" : "o", "Ò" : "o", "Ỏ" : "o", "Õ" : "o", "Ọ" : "o", "Ô" : "o", "Ơ" : "o", //--------------------------------u "ú" : "u", "ù" : "u", "ủ" : "u", "ũ" : "u", "ụ" : "u", "ư" : "u", //--------------------------------U "Ú" : "u", "Ù" : "u", "Ủ" : "u", "Ũ" : "u", "Ụ" : "u", "Ư" : "u", //--------------------------------a^ "ấ" : "a", "ầ" : "a", "ẩ" : "a", "ẫ" : "a", "ậ" : "a", //--------------------------------A^ "Ấ" : "a", "Ầ" : "a", "Ẩ" : "a", "Ẫ" : "a", "Ậ" : "a", //--------------------------------a( "ắ" : "a", "ằ" : "a", "ẳ" : "a", "ẵ" : "a", "ặ" : "a", //--------------------------------A( "Ắ" : "a", "Ằ" : "a", "Ẳ" : "a", "Ẵ" : "a", "Ặ" : "a", //--------------------------------A "Á" : "a", "À" : "a", "Ả" : "a", "Ã" : "a", "Ạ" : "a", "Â" : "a", "Ă" : "a", //--------------------------------a "ả" : "a", "ã" : "a", "ạ" : "a", "â" : "a", "ă" : "a", "à" : "a", "á" : "a"]; return strtr(s, replace); } }
如果您在數學上傾斜,請安裝gnuplot並使用我們從Zephir擴展程序中獲得的.txt輸出運行:
此命令將使用數據文件harmos.txt繪製圖像,這看起來像這樣,證明我們的方程式是正確計算的。
cd myapp zephir build
>受保護的代碼
在某些情況下,彙編並不能顯著提高性能,也許是因為應用程序的I/O界限(很可能),而不是由於計算或內存的限制。但是,編譯代碼還可以為您的應用程序帶來一定程度的智力保護。使用Zephir生產本機二進製文件時,您也可以向用戶或客戶隱藏代碼 - Zephir允許您編寫封閉的源PHP應用程序。
結論>本文提供了有關如何在Zephir中創建擴展的基本指南。請記住,Zephir並非是為了替換PHP或C的創建,而是作為對他們的補充,使開發人員可以冒險進行代碼編譯和靜態鍵入。 Zephir是一種嘗試加入C和PHP世界中最好的東西,並使應用程序運行速度更快,因此與HHVM和Hack競爭。 有關Zephir的更多信息,請查看在線文檔。您喜歡這篇文章嗎?在評論中讓我知道!
>
經常詢問有關PHP擴展開發的問題什麼是Zephir,為什麼它用於PHP擴展開發?
>
>使用Zephir而不是C進行PHP擴展開發的好處是什麼?
,而C是一種強大的語言,它可能是複雜且難以使用的,尤其是對於不熟悉它的開發人員而言。另一方面,Zephir為PHP開發人員提供了更簡單,更熟悉的語法。它還可以自動處理內存管理,從而降低了內存洩漏的風險。此外,Zephir還包括可以使生成的擴展程序運行速度更快的性能優化。
>我可以使用Zephir為其他語言編寫其他語言的擴展名,而不是PHP?
當前,Zephir專門設計用於創建PHP擴展。但是,其開發人員對將來對其他語言的支持表示興趣。目前,如果要為其他語言創建擴展,則需要使用其他工具或語言。 >
>我如何調試Zephir擴展名?>可以調試Zephir擴展程序使用各種工具完成了。一種常見的方法是使用Zephir Parser擴展名,該擴展程序提供詳細的錯誤消息,並可以幫助您確定代碼中的問題。您還可以使用標準的PHP調試工具,例如Xdebug,儘管這些工具可能無法為Zephir特定問題提供那麼多細節。
>>與本機PHP代碼相比,Zephir的性能是什麼?設計為高效,在許多情況下,用Zephir編寫的擴展可以比等效的PHP代碼更快。這是因為Zephir將其編譯為C,這是一種低級語言,計算機可以更快地執行。但是,確切的性能差異可能會因特定代碼以及如何使用而有所不同。歡迎來自社區。如果您有興趣做出貢獻,可以在Github上查看該項目,以查看當前有哪些問題以及需要哪些幫助。
>有任何學習Zephir的資源?是學習Zephir的幾種資源。 Zephir官方文檔是一個很好的起點,為語言的功能和用法提供了全面的指南。還有幾個在線可用的教程和博客文章,可以提供其他見解和示例。 PHP應用程序的關鍵部分。當需要與C庫接口時,也可以使用它,因為Zephir可以用作PHP和C之間的橋樑。此外,Zephir可用於將復雜的業務邏輯封裝在PHP擴展中,為應用程序提供了一個乾淨,高效的接口代碼。
以上是通過Zephir開始PHP擴展開發的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

Laravel的服務容器和服務提供商是其架構的基礎。 本文探討了服務容器,詳細信息服務提供商創建,註冊,並通過示例演示了實際用法。 我們將從OVE開始


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載
最受歡迎的的開源編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器