php擴充開發筆記(3)類別的靜態陣列屬性定義
php範例程式碼
<code><span><span>class</span><span>Slash_Log</span> {</span><span>const</span> EMERGENCY = <span>1</span>; <span>const</span> ALERT = <span>2</span>; <span>const</span> CRITICAL = <span>3</span>; <span>const</span> FATAL = <span>3</span>; <span>const</span> ERROR = <span>4</span>; <span>const</span> WARN = <span>5</span>; <span>const</span> NOTICE = <span>6</span>; <span>const</span> INFO = <span>7</span>; <span>const</span> DEBUG = <span>8</span>; <span>public</span><span>static</span><span>$levels</span> = <span>array</span>( <span>self</span>::EMERGENCY => <span>1</span>, <span>self</span>::ALERT => <span>2</span>, <span>self</span>::CRITICAL => <span>3</span>, <span>self</span>::FATAL => <span>3</span>, <span>self</span>::ERROR => <span>4</span>, <span>self</span>::WARN => <span>5</span>, <span>self</span>::NOTICE => <span>6</span>, <span>self</span>::INFO => <span>7</span>, <span>self</span>::DEBUG => <span>8</span>, ); }</code>
透過php擴充實現的程式碼
<code>zend_class_entry ce; SLASH_INIT_CLASS_ENTRY(ce, SLASH_CN_LOG, slash_log_methods); slash_log_ce = zend_register_internal_class(&ce TSRMLS_CC); <span>// {{{ log level</span> zend_declare_class_constant_long(slash_log_ce, ZEND_STRL(SL_EMERGENCY_K), SL_EMERGENCY_V TSRMLS_CC); zend_declare_class_constant_long(slash_log_ce, ZEND_STRL(SL_ALERT_K), SL_ALERT_V TSRMLS_CC); zend_declare_class_constant_long(slash_log_ce, ZEND_STRL(SL_CRITICAL_K), SL_CRITICAL_V TSRMLS_CC); zend_declare_class_constant_long(slash_log_ce, ZEND_STRL(SL_ERROR_K), SL_ERROR_V TSRMLS_CC); zend_declare_class_constant_long(slash_log_ce, ZEND_STRL(SL_WARN_K), SL_WARN_V TSRMLS_CC); zend_declare_class_constant_long(slash_log_ce, ZEND_STRL(SL_NOTICE_K), SL_NOTICE_V TSRMLS_CC); zend_declare_class_constant_long(slash_log_ce, ZEND_STRL(SL_INFO_K), SL_INFO_V TSRMLS_CC); zend_declare_class_constant_long(slash_log_ce, ZEND_STRL(SL_DEBUG_K), SL_DEBUG_V TSRMLS_CC); <span>// }}}</span><span>// {{{ static property array</span> zend_declare_property_null(slash_log_ce, ZEND_STRL(SL_P_LEVELS), ZEND_ACC_PUBLIC|ZEND_ACC_STATIC TSRMLS_CC); zval *levels; MAKE_STD_ZVAL(levels); array_init(levels); add_index_stringl(levels, SL_EMERGENCY_V, ZEND_STRL(SL_EMERGENCY_K), <span>0</span>); add_index_stringl(levels, SL_ALERT_V, ZEND_STRL(SL_ALERT_K), <span>0</span>); add_index_stringl(levels, SL_CRITICAL_V, ZEND_STRL(SL_CRITICAL_K), <span>0</span>); add_index_stringl(levels, SL_ERROR_V, ZEND_STRL(SL_ERROR_K), <span>0</span>); add_index_stringl(levels, SL_WARN_V, ZEND_STRL(SL_WARN_K), <span>0</span>); add_index_stringl(levels, SL_NOTICE_V, ZEND_STRL(SL_NOTICE_K), <span>0</span>); add_index_stringl(levels, SL_INFO_V, ZEND_STRL(SL_INFO_K), <span>0</span>); add_index_stringl(levels, SL_DEBUG_V, ZEND_STRL(SL_DEBUG_K), <span>0</span>); zend_update_static_property(slash_log_ce, ZEND_STRL(SL_P_LEVELS), levels TSRMLS_CC); <span>// }}}</span></code>
注意的問題
因為在筆記(1)說過了,擴充沒辦法直接初始化陣列屬性,所以這裡我們定義一個靜態的屬性初始化為null(zend_declare_property_null),之後去修改(zend_update_static_property)這個屬性的值為對應的數組,就達到了public static $array 的效果。
對應的變數名字是定義了宏,所以你直接copy程式碼沒辦法編譯通過,歡迎交流
以上就介紹了php擴充開發筆記(3)類別的靜態陣列屬性定義,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

如何在Zend框架中使用ACL(AccessControlList)進行權限控制導言:在一個Web應用程式中,權限控制是至關重要的功能。它可以確保使用者只能存取其有權存取的頁面和功能,並防止未經授權的存取。 Zend框架提供了一種方便的方法來實現權限控制,即使用ACL(AccessControlList)元件。本文將介紹如何在Zend框架中使用ACL

PHP實作框架:ZendFramework入門教學ZendFramework是PHP開發的開源網站框架,目前由ZendTechnologies維護,ZendFramework採用了MVC設計模式,提供了一系列可重複使用的程式碼庫,服務於實作Web2.0應用程式和Web服務。 ZendFramework深受PHP開發者的歡迎與推崇,擁有廣泛

PHP無法辨識ZendOptimizer,如何解決?在PHP開發中,有時可能會遇到PHP無法辨識ZendOptimizer的情況,這會導致部分PHP程式碼無法正常運作。在這種情況下,我們需要採取一些措施來解決這個問題。以下將介紹一些可能的解決方法,並附上具體的程式碼範例。 1.確認ZendOptimizer是否正確安裝:首先,我們需要確認ZendOptimize

Windows2003安裝包包含了Zend,PHP5.2.17,PHPWind8.7和PHPMyadmin3.5.2,您可以直接下載安裝包,節約搜尋資源的時間。 但是,由於MySQL超出了上傳限制,您需要另行前往MySQL官網下載。然後解壓縮拷貝到D碟,如下圖: MySQLinDdisk 安裝與設定WindowsIIS+FTP 點選開始>控制台>新增或移除程式。 AddingordeletingaPG 點選新增/移除Windows元件(A)。 Addingorde

隨著資訊科技的快速發展,越來越多的企業開始意識到資訊化管理的必要性。 ERP(企業資源規劃)管理平台是現代企業管理的重要工具,可以幫助企業實現資源的規劃、協同、控制、最佳化和管理。其中,PHP框架Zend作為一款優秀的開發工具,可以幫助開發者快速且有效率地實現ERP系統的開發。本文將介紹如何使用Zend開發一個高效率的ERP管理平台。一、確定需求分析在開始開發流程前

隨著網路資訊的爆炸性成長,搜尋引擎已經成為人們獲取資訊的首選方式之一。而現在,隨著網站數量的不斷增加,搜尋引擎的快速反應和準確性變得越來越重要,而這就要求搜尋引擎必須具備高效能。在這篇文章中,我將介紹如何使用PHP框架Zend來開發一個高效能的搜尋引擎。一、為什麼使用Zend框架Zend框架是一個高效能的PHP框架,它在性能和可擴展性方面都有非常出色的表現

隨著網路應用的不斷發展,大型應用的開發需求也不斷增加。在這樣的背景下,選擇適合自己的開發框架顯得格外重要。 Laravel和Zend是兩個廣泛使用的PHP框架,他們各有優勢,但哪一個比較適合開發大型應用? Laravel是一個廣受歡迎的開發框架,已成為PHP開發人員的首選框架之一。它採用了現代化的設計理念,內建多種強大的功能和工具,例如EloquentOR

PHP是一種廣泛使用的動態Web程式語言。開發者可以利用不同的框架來簡化其Web開發工作。 Symfony和ZendFramework是PHP中最受歡迎的兩個框架之一。在Symfony3和ZendFramework3之間進行選擇時,初學者經常會感到困惑。這裡我們將比較這兩個框架,看看哪一個比較容易上手。 Symfony3Symfony是一個以MVC模式為基礎的PH
