php4的對象詳解

來源:互聯網
上載者:User

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一樣的修改也可以正常工作.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.