程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php4的對象詳解

php4的對象詳解

編輯:PHP綜合

php4的對象

曾幾何時, 在很早的版本中, php還不支持任何的面向對象編程語法. 在php4中引入了Zend引擎(ZE1), 出現了幾個新的特性, 其中就包括對象數據類型.

php對象類型的演化

第一次的面向對象編程(OOP)支持僅實現了對象關聯的語義. 用一個php內核開發者的話來說就是"php4的對象只是將一個數組和一些方法綁定到了一起". 它就是現在你要研究的php對象.

Zend引擎(ZE2)的第二個大版本發布是在php5中, 在php的OOP實現中引入了一些新的特性. 例如, 屬性和方法可以使用訪問修飾符標記它們在你的類定義外面的可見性, 函數的重載可以用來定義內部語言結構的自定義行為, 在多個類的調用鏈之間可以使用接口實施API標准化. 在你學習到第11章"php5對象"時, 你將通過在php5的類定義中實現這些特性來建立對這些知識的認知.

實現類

在進入OOP的世界之前, 我們需要輕裝上陣. 因此, 請將你的擴展恢復到第5章"你的第一個擴展"中剛剛搭建好的骨架形態.

為了和你原有的習作獨立, 你可以將這個版本命名為sample2. 將下面的三個文件放入到你php源代碼的ext/sample2目錄下:

config.m4

PHP_ARG_ENABLE(sample2,  
  [Whether to enable the "sample2" extension],  
  [  enable-sample2       Enable "sample2" extension support])  
      
if test $PHP_SAMPLE2 != "no"; then  
  PHP_SUBST(SAMPLE2_SHARED_LIBADD)  
  PHP_NEW_EXTENSION(sample2, sample2.c, $ext_shared)  
fi

php_saple2.h

#ifndef PHP_SAMPLE2_H  
/* Prevent double inclusion */
#define PHP_SAMPLE2_H  
      
/* Define Extension Properties */
#define PHP_SAMPLE2_EXTNAME    "sample2"  
#define PHP_SAMPLE2_EXTVER    "1.0"  
      
/* Import configure options 
   when building outside of 
   the PHP source tree */
#ifdef HAVE_CONFIG_H  
#include "config.h"  
#endif  
      
/* Include PHP Standard Header */
#include "php.h"  
      
/* Define the entry point symbol 
 * Zend will use when loading this module 
 */
extern zend_module_entry sample2_module_entry;  
#define phpext_sample2_ptr &sample2_module_entry  
      
#endif /* PHP_SAMPLE2_H */

sample2.c

#include "php_sample2.h"  
      
static function_entry php_sample2_functions[] = {  
    { NULL, NULL, NULL }  
};  
      
PHP_MINIT_FUNCTION(sample2)  
{  
    return SUCCESS;  
}  
      
zend_module_entry sample2_module_entry = {  
#if ZEND_MODULE_API_NO >= 20010901  
    STANDARD_MODULE_HEADER,  
#endif  
    PHP_SAMPLE2_EXTNAME,  
    php_sample2_functions,  
    PHP_MINIT(sample2),  
    NULL, /* MSHUTDOWN */
    NULL, /* RINIT */
    NULL, /* RSHUTDOWN */
    NULL, /* MINFO */
#if ZEND_MODULE_API_NO >= 20010901  
    PHP_SAMPLE2_EXTVER,  
#endif  
    STANDARD_MODULE_PROPERTIES  
};  
      
#ifdef COMPILE_DL_SAMPLE2  
ZEND_GET_MODULE(sample2)  
#endif

現在, 就像在第5章時一樣, 你可以執行phpize, ./configure, make去構建你的sample2.so擴展模塊.

你之前的config.w32做與這裡給出的config.m4一樣的修改也可以正常工作.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved