搜尋
首頁後端開發php教程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教學有興趣的朋友有幫助。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何在Zend框架中使用ACL(Access Control List)进行权限控制如何在Zend框架中使用ACL(Access Control List)进行权限控制Jul 29, 2023 am 09:24 AM

如何在Zend框架中使用ACL(AccessControlList)进行权限控制导言:在一个Web应用程序中,权限控制是至关重要的一项功能。它可以确保用户只能访问其有权访问的页面和功能,并防止未经授权的访问。Zend框架提供了一种方便的方法来实现权限控制,即使用ACL(AccessControlList)组件。本文将介绍如何在Zend框架中使用ACL

PHP实现框架:Zend Framework入门教程PHP实现框架:Zend Framework入门教程Jun 19, 2023 am 08:09 AM

PHP实现框架:ZendFramework入门教程ZendFramework是PHP开发的一种开源网站框架,目前由ZendTechnologies维护,ZendFramework采用了MVC设计模式,提供了一系列可重用的代码库,服务于实现Web2.0应用程序和Web服务。ZendFramework深受PHP开发者的欢迎和推崇,拥有广泛

PHP无法识别ZendOptimizer,如何解决?PHP无法识别ZendOptimizer,如何解决?Mar 19, 2024 pm 01:09 PM

PHP无法识别ZendOptimizer,如何解决?在PHP开发中,有时可能会遇到PHP无法识别ZendOptimizer的情况,这会导致部分PHP代码无法正常运行。在这种情况下,我们需要采取一些措施来解决这个问题。下面将介绍一些可能的解决方法,并附上具体的代码示例。1.确认ZendOptimizer是否正确安装:首先,我们需要确认ZendOptimize

Window2003 IIS+MySQL+PHP+Zend环境如何配置Window2003 IIS+MySQL+PHP+Zend环境如何配置Jun 02, 2023 pm 09:56 PM

  Windows2003安装包中包含了Zend,PHP5.2.17,PHPWind8.7和PHPMyadmin3.5.2,您可以直接下载安装包,节约搜索资源的时间。  但是,由于MySQL超出了上传限制,您需要另行前往MySQL官网下载。然后解压拷贝到D盘,如下图:  MySQLinDdisk  安装与配置WindowsIIS+FTP  单击开始>控制面板>添加或删除程序。  AddingordeletingaPG  单击添加/删除Windows组件(A)。  Addingorde

如何使用PHP框架Zend开发一个高效的ERP管理平台如何使用PHP框架Zend开发一个高效的ERP管理平台Jun 26, 2023 pm 11:00 PM

随着信息技术的飞速发展,越来越多的企业开始意识到信息化管理的必要性。ERP(企业资源计划)管理平台是现代企业管理的重要工具,可以帮助企业实现资源的规划、协同、控制、优化和管理。其中,PHP框架Zend作为一款优秀的开发工具,可以帮助开发者快速高效地实现ERP系统的开发。本文将介绍如何使用Zend开发一个高效的ERP管理平台。一、确定需求分析在开始开发过程之前

Laravel vs Zend:哪个框架更适合开发大型应用?Laravel vs Zend:哪个框架更适合开发大型应用?Jun 19, 2023 am 08:52 AM

随着互联网应用的不断发展,大型应用的开发需求也不断增加。在这样的背景下,选择适合自己的开发框架显得尤为重要。Laravel和Zend是两个广泛使用的PHP框架,他们各有优势,但哪一个更适合开发大型应用呢?Laravel是一个广受欢迎的开发框架,已经成为PHP开发人员的首选框架之一。它采用了现代化的设计理念,内置多种强大的功能和工具,例如EloquentOR

Symfony 3 vs Zend Framework 3:哪个PHP框架更容易上手?Symfony 3 vs Zend Framework 3:哪个PHP框架更容易上手?Jun 19, 2023 am 09:46 AM

PHP是一种广泛使用的动态Web编程语言。开发者可以利用不同的框架来简化其Web开发工作。Symfony和ZendFramework是PHP中最受欢迎的两个框架之一。在Symfony3和ZendFramework3之间进行选择时,初学者经常会困惑。这里我们将比较这两个框架,看看哪个更容易上手。Symfony3Symfony是一个基于MVC模式的PH

全新亮相!深蓝汽车发布2023款SL03,成都车展见首曝光全新亮相!深蓝汽车发布2023款SL03,成都车展见首曝光Aug 23, 2023 pm 06:13 PM

8月23日消息,近日,深蓝汽车官方发布了新款SL03的官方图片。据悉,这款全新车型将在即将于8月25日开幕的2023成都车展上进行正式亮相。外观方面,新款深蓝SL03在保持了封闭式前脸设计、无框车门和隐藏门把手的基础上,对轮毂进行了轻微调整,以及保留了溜背式的车尾设计,配备了掀背尾门。而内饰方面,新款深蓝SL03进行了相对较大幅度的变化。橙色线条搭配白色配色,使内饰更加简洁且富有年轻感。方向盘区域的设计进行了调整,按键布局更加清晰易用。此外,中控屏下方的前排杯架经过重新设计,从之前的不规则布局变

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具