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套件
- php擴充套件開發初探PHP套件
- 白話 PHP7 擴充套件開發:建立物件PHP套件物件
- iOS開發的分類和擴充套件iOS套件
- PHP 底層核心原始碼與擴充套件開發資料PHP原始碼套件
- Maven介紹,包括作用、核心概念、用法、常用命令、擴充套件及配置Maven套件
- PHP 底層核心原始碼分析和擴充套件開發免費影片課程PHP原始碼套件
- JavaScript 原生物件及擴充套件JavaScript物件套件
- 安裝PHP及Memcache擴充套件PHP套件
- 線性迴歸—求解介紹及迴歸擴充套件套件
- php7安裝redis擴充套件和memcache擴充套件PHPRedis套件
- PHP 底層核心原始碼分析和擴充套件開發免費視訊課程PHP原始碼套件
- php開啟curl擴充套件PHP套件
- PHP擴充套件開發教程2 – 編寫第一個擴充套件 hello worldPHP套件
- (PHP7核心剖析-11) 模組擴充套件PHP套件
- Java管理擴充套件指南之MBean簡介Java套件Bean
- CentOS安裝RabbitMQ及PHP擴充套件CentOSMQPHP套件
- 給PHP安裝和開啟curl擴充套件PHP套件
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- Laravel-admin 新增擴充套件介紹Laravel套件
- 新增php擴充套件PHP套件
- php ubuntu 擴充套件PHPUbuntu套件
- 分類擴充套件套件
- 用 PHP-CPP 開發 PHP 擴充套件:raylib-phpcppPHP套件
- 【PHP】Mcrypt 擴充套件模組安裝及使用PHP套件
- php安裝redis擴充套件及操作redisPHPRedis套件
- php擴充套件模組作用及中文註釋PHP套件
- windbg除錯系列教程:sos擴充套件的介紹和使用除錯套件
- Chrome瀏覽器擴充套件開發系列之十九:擴充套件開發示例Chrome瀏覽器套件
- 自定義擴充套件jQuery功能簡單介紹套件jQuery
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- chrome擴充套件程式開發Chrome套件
- PHP後臺核心框架、自定義擴充套件功能 直接上手做功能開發即可PHP框架套件
- PHP 擴充套件安裝PHP套件
- PHP7擴充套件PHP套件
- 如何基於 PHP-X 快速開發一個 PHP 擴充套件PHP套件