PHP核心介紹及擴充套件開發指南—類和物件
類和物件(TODO)
附錄A. Extension的編譯
Extension的編譯是比較簡單的,下面是個示例Makefile:
這將建立一個可動態載入的Extension模組,如果想將Extension靜態編譯進PHP,就需要使用PHP本身的編譯系統,這裡不作介紹。
另外,Zend提供了一個小指令碼來簡化建立和編譯Extension的過程,可以在《PHP手冊》的相關章節找到其使用方法。
目前,Zend正在開發一個更加完善和標準的Extension生成工具,可以在這裡找到它:http://pecl.php.net/package/PECL_Gen
附錄B. Extension的載入過程
Extension有兩種載入方式,通過php.ini在啟動時載入或是通過dl()函式在執行時載入,前者需在php.ini中新增一行命令:extension=myext.so。這兩種方式最後都將呼叫一個名為php_ld()的內部函式。
php_ld()首先呼叫系統例程載入動態庫,之後解析並執行get_module()函式來獲得模組的zend_module_entry結構(參見2.1.3)。
然後,呼叫函式zend_register_module_ex()來註冊模組,這個函式先將模組的zend_module_entry加入到一個名為module_registry的HashTable中,然後呼叫zend_register_functions將模組匯出的函式加入CG(function_table)(參見2.5)這個HashTable中,這樣我們就可以呼叫模組匯出的函式了。最後,php_ld()將呼叫模組的啟動函式(參見2.4)來初始化模組。
如果模組是dl()動態載入的,Zend還將接著呼叫模組的啟用函式,因為當前顯然有頁面在執行。
最後要說明的是,通過dl()載入的模組稱為“臨時模組”,在頁面執行完畢時將被解除安裝,同時,其建立的常量和資源也將被銷燬。
相關文章
- 開發php擴充套件PHP套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- Go開發PHP擴充套件GoPHP套件
- iOS開發的分類和擴充套件iOS套件
- 線性迴歸—求解介紹及迴歸擴充套件套件
- Laravel-admin 新增擴充套件介紹Laravel套件
- PHP擴充套件開發教程2 – 編寫第一個擴充套件 hello worldPHP套件
- CentOS安裝RabbitMQ及PHP擴充套件CentOSMQPHP套件
- 用 PHP-CPP 開發 PHP 擴充套件:raylib-phpcppPHP套件
- (PHP7核心剖析-11) 模組擴充套件PHP套件
- SAPS/4HANAextensibility擴充套件原理介紹套件
- 新增php擴充套件PHP套件
- php安裝redis擴充套件及操作redisPHPRedis套件
- windbg除錯系列教程:sos擴充套件的介紹和使用除錯套件
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- 分類擴充套件套件
- HttpContext擴充套件類HTTPContext套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- composer引入本地自己開發的php擴充套件包PHP套件
- PHP 擴充套件安裝PHP套件
- 介紹兩個好玩的和Github相關的Chrome擴充套件GithubChrome套件
- PHP後臺核心框架、自定義擴充套件功能 直接上手做功能開發即可PHP框架套件
- 【PHP】Mcrypt 擴充套件模組安裝及使用PHP套件
- 如何基於 PHP-X 快速開發一個 PHP 擴充套件PHP套件
- 《PHP7 開發寶典(第4版)》之“PHP介紹和PHP 使用物件”PHP物件
- PHP原始碼系列之擴充套件的原理與開發PHP原始碼套件
- chrome擴充套件程式開發Chrome套件
- LLM 擴充套件開發工具套件
- SAP S/4HANA extensibility擴充套件原理介紹套件
- RabbitMQ實戰:擴充套件介紹與系列總結MQ套件
- Vitalik出席社群會議,介紹Plasma擴充套件方案ASM套件
- lnmp 環境開啟 fileinfo php 擴充套件LNMPPHP套件
- es6-物件擴充套件物件套件
- ES6物件的擴充套件及新增方法。物件套件
- PHP 安裝 yaconf 擴充套件PHP套件
- (MAC) PHP擴充套件安裝MacPHP套件
- php8.2 redis擴充套件PHPRedis套件
- PHP安裝redis擴充套件PHPRedis套件
- php新增pcntl擴充套件(Linux)PHP套件Linux