cari
Rumahpembangunan bahagian belakangtutorial phpphp扩展开发笔记(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教程有兴趣的朋友有所帮助。

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi 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开发者的欢迎和推崇,拥有广泛

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无法识别ZendOptimizer,如何解决?PHP无法识别ZendOptimizer,如何解决?Mar 19, 2024 pm 01:09 PM

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

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

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

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

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

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

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

优化Zend框架的性能的方法优化Zend框架的性能的方法Jan 22, 2024 am 11:25 AM

Zend框架是一个基于PHP语言的开源Web应用程序框架,被广泛应用于企业级Web应用的开发中。尽管Zend框架凭借其高度模块化、可扩展性和代码重用性等优势在市场上占据重要地位,但这并不意味着它的性能就一定高效。事实上,如何优化Zend框架的性能一直是开发者们关注的重点之一。本文将从多个方面探讨如何提高Zend框架的性能。一、合理使用Zend框架的缓存机制Z

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),