基于Zend的Config机制的应用分析_php实例
Zend的Config类在Zend_Config_Ini
代码
$config = new Zend_Config_Ini("/var/www/html/usvn/config/config.ini", "general");
date_default_timezone_set($config->timezone);
USVN_ConsoleUtils::setLocale($config->system->locale);
===
Config.ini文件内容
[general]
url.base = "/usvn"
translation.locale = "zh_CN"
timezone = "Asia/Shanghai"
具体分析
这里只使用了Zend_Config_Ini的构造函数,我们看到它的__construct中。
首先是判断是否有配置文件。其次是对option进行管理,这里的option可以设置的有allowModifications属性(配置文件中的属性是否可以修改),nestSeparator属性(配置文件中的key分隔符,默认为点)。
下面是调用了$iniArray = $this->_loadIniFile($filename);这个函数非常重要,就是解析了配置文件。跟进去,先是调用了_parseIniFile,为了不让大家凌乱,我们看下_parseIniFile返回出来的数据是什么样子的:
Array
(
[general] => Array
(
[url.base] => /usvn
[translation.locale] => zh_CN
[timezone] => Asia/Shanghai
[system.locale] => aa_DJ.utf8
)
)
最后解析出来的东西是一个二维数组。
parseIniFile实际上是调用了系统函数parse_ini_file来进行处理的。这里特别注意一下,在调用parse_ini_file前后它其实使用了set_error_handler和restore_error_handler,将异常处理的函数暴露出来。因为在解析配置文件的时候其实非常容易出现错误,而且这个错误的用户提示应该要非常友好,最好能提示用户在那里进行修改,所以Zend特意将错误处理函数暴露出来。如果你想设计一款很友好的系统的话,请在继承类中重写方法_loadFileErrorHandler。
继续从_loadIniFile看下去
由于我们的ini配置文件中使用[]表示了一个setion,因此_loadIniFile返回的二维数组返回的key就是general。但是其实如果我们在配置文件中使用[general:123]作为section,那么这个函数就会将123作为[;extends]的val返回。实际是这样的
Array
(
[general] => Array
(
[;extends] => 123
[url.base] => /usvn
[translation.locale] => zh_CN
)
)
现在又回到了__construct,这时候iniArray已经获取到了,是个二维数组,下面如果你设置了获取section的话,就会将iniArray进行处理_arrayMergeRecursive,主要就是将key中的system.locale => aa_DJ.utf8变为array(system=> array( locale=>aa_DJ.utf8))。 这里就是用到了options中的nestSeparator属性,这个属性默认是点,就是translation.locale会被分隔成数组,比如你在前面传入的nestSeparator为冒号,那么你的配置文件就应该设置为translation:location = .. 这里就不继续追下去了,里面无非就是一些字符串操作。
最后分析回来的dataArray是这个样子的
Array
(
[url] => Array
(
[base] => /usvn
)
[translation] => Array
(
[locale] => zh_CN
)
[timezone] => Asia/Shanghai
[system] => Array
(
[locale] => aa_DJ.utf8
)
)
下面调用父类的构造函数__construct, Zend_Config_Ini的父类是Zend_Config。
class Zend_Config implements Countable, Iterator
Zend_Config实现了Countable接口(包含count()方法),Iterator接口(包含current,key,next,rewind,valid等方法)
Zend_Config的构造函数将上面分析的二维数组放到_data中了。
这里注重看两个函数
__set和__get
魔术方法__get保证了可以使用config->field获取配置值
魔术方法__set保证了是否可以修改配置文件,set中就使用到了_allowModifications,如果这个属性有设置,那么__setter就可以设置,否则会抛出Zend_Config is read only的异常,allowModifications也是options中设置的属性之一。
至此,看文章最前面的demo代码
date_default_timezone_set($config->timezone);
这里之所以能使用->timezone就是使用了__get而不是config中的属性。
Zend的Config机制分析结束。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Semasa memasang versi baharu aplikasi, Windows mungkin memaparkan mesej ralat ini "Ralat berlaku semasa menghuraikan C:\\Windows\Microsoft.Net\Framework\v2.0.50727\Config\machine.configParser mengembalikan ralat 0xC00CE556". Masalah ini juga berlaku apabila sistem anda but. Tidak kira apa situasi yang anda hadapi masalah ini, .NETFramework adalah punca sebenar di sebalik tabir. Terdapat beberapa pembetulan yang sangat mudah yang boleh anda gunakan untuk menghentikan kod ralat ini daripada muncul semula. Betulkan 1 – Gantikan fail yang rosak Anda boleh menggantikan ma yang rosak dengan mudah daripada direktori asal

Dengan pembangunan berterusan bahasa PHP, ThinkPHP, yang digunakan secara meluas dalam rangka kerja back-end PHP, juga sentiasa bertambah baik. Apabila senario perniagaan menjadi semakin kompleks, permintaan untuk pengurusan konfigurasi dalam ThinkPHP juga semakin meningkat. Dalam konteks ini, ThinkPHP menyediakan fungsi pengurusan konfigurasi yang kaya Hari ini kami akan memperkenalkan cara untuk melaksanakan pengurusan konfigurasi melalui ThinkPHPConfig. 1. Pengenalan kepada ThinkPHPConfig ThinkPHPConfig adalah Nipis

Cara menggunakan ACL (AccessControlList) untuk kawalan kebenaran dalam Rangka Kerja Zend Pengenalan: Dalam aplikasi web, kawalan kebenaran ialah fungsi penting. Ia memastikan bahawa pengguna hanya boleh mengakses halaman dan ciri yang dibenarkan untuk mereka akses dan menghalang akses yang tidak dibenarkan. Rangka kerja Zend menyediakan cara yang mudah untuk melaksanakan kawalan kebenaran, menggunakan komponen ACL (AccessControlList). Artikel ini akan memperkenalkan cara menggunakan ACL dalam Rangka Kerja Zend

Rangka kerja pelaksanaan PHP: Tutorial pengenalan ZendFramework ZendFramework ialah rangka kerja tapak web sumber terbuka yang dibangunkan oleh PHP dan kini diselenggara oleh ZendTechnologies menggunakan corak reka bentuk MVC dan menyediakan satu siri perpustakaan kod boleh guna semula untuk melaksanakan aplikasi Web2.0 dan Web Serve. ZendFramework sangat popular dan dihormati oleh pembangun PHP dan mempunyai pelbagai jenis

1. Pengenalan kepada CodeIgniter CodeIgniter ialah rangka kerja pembangunan PHP yang ringan dan komprehensif yang direka untuk menyediakan pembangun web dengan alatan yang pantas dan berkuasa untuk membina aplikasi web. Ia adalah rangka kerja sumber terbuka yang menggunakan corak seni bina MVC untuk mencapai pembangunan pesat dan fungsi asas, sambil menyokong pelbagai pangkalan data. 2. Pengenalan kepada perpustakaan Config Pustaka Config ialah komponen dalam rangka kerja CodeIgniter dan digunakan untuk mengkonfigurasi dan mengurus kod. Pustaka Config mengandungi banyak

Pakej pemasangan Windows 2003 termasuk Zend, PHP5.2.17, PHPWind8.7 dan PHPMyadmin3.5.2 Anda boleh memuat turun pakej pemasangan terus untuk menjimatkan masa mencari sumber. Walau bagaimanapun, memandangkan MySQL telah melebihi had muat naik, anda perlu pergi ke laman web rasmi MySQL untuk memuat turun. Kemudian nyahzip dan salin ke pemacu D, seperti yang ditunjukkan di bawah: MySQLinDdisk Pasang dan konfigurasi WindowsIIS+FTP Klik Mula>Panel Kawalan>Tambah atau Buang Program.MenambahordeletingaPG Klik Tambah/Buang Komponen Windows (A). Addingorde

PHP tidak mengenali ZendOptimizer, bagaimana untuk menyelesaikannya? Dalam pembangunan PHP, kadangkala anda mungkin menghadapi situasi di mana PHP tidak dapat mengenali ZendOptimizer, yang akan menyebabkan beberapa kod PHP tidak berjalan dengan betul. Dalam kes ini, kita perlu mengambil beberapa langkah untuk menyelesaikan masalah tersebut. Beberapa penyelesaian yang mungkin diterangkan di bawah, bersama dengan contoh kod khusus. 1. Sahkan sama ada ZendOptimizer dipasang dengan betul: Pertama, kita perlu mengesahkan bahawa ZendOptimizer

Dengan perkembangan pesat teknologi maklumat, semakin banyak perusahaan mula menyedari keperluan pengurusan maklumat. Platform pengurusan ERP (Enterprise Resource Planning) ialah alat penting untuk pengurusan perusahaan moden, yang boleh membantu perusahaan merealisasikan perancangan sumber, kerjasama, kawalan, pengoptimuman dan pengurusan. Antaranya, rangka kerja PHP Zend ialah alat pembangunan yang sangat baik yang boleh membantu pembangun membangunkan sistem ERP dengan cepat dan cekap. Artikel ini akan memperkenalkan cara menggunakan Zend untuk membangunkan platform pengurusan ERP yang cekap. 1. Tentukan analisis keperluan sebelum memulakan proses pembangunan
