一步步编写PHP的Framework(六)
不知道大家注意到没有,之前我们导入一个配置文件是通过include CONFIGS_PATH . '/config.php'来做的,这样做好吗?
不忙回答,我可以提两个问题:
1. 如果这个路径下面的config.php不存在会发生什么现象?
2.如果我将PHP这种配置文件修改成为xml这种配置文件之后会发生什么现象?
首先,如果文件不存在,那么PHP会抛出一个警告,但是程序继续执行;配置文件变成xml之后,入口文件处需要编写相应的读取xml的代码,而且需要把之前的include CONFIGS_PATH . '/config.php'这句代码修改掉。
那么有没有方法能够实现配置文件的无缝切换呢?
在具体讲解这些之前,我首先说一下工厂模式,现假设:A需要购买一辆红色汽车,他直接向B(一个生产汽车的工厂)提出需求,B按照A的需求,从仓库中选取一辆合适的汽车,然后交给A。整个过程,A只是提出需求,具体汽车的选取是由B工厂来确定的,这种方式就是工厂模式。
举个例子:
01 |
02 | public class Factory { |
03 | public static function factory($whichOneToChoose) { |
04 | $returnVal = 'Red'; |
05 | switch($whichOneToChoose) { |
06 | case1 : |
07 | $returnVal = 'Blue'; |
08 | break |
09 | case 2 : |
10 | $returnVal = 'Green'; |
11 | break; |
12 | default : |
13 | break; |
14 | } |
15 | return $returnVal; |
16 | } |
17 | } |
工厂模式一般都有一个静态的方法:factory负责逻辑的处理。
现在我们可以新建一个专门处理配置文件的类:Config.php
01 |
02 | class Config { |
03 | const XML = 1; |
04 | const INI = 2; |
05 | const PHP = 3; |
06 | public static function factory($which) { |
07 | switch($which) { |
08 | caseConfig::XML : |
09 | return XmlConfig::parse(CONFIGS_PATH . '/config.xml'); |
10 | break; |
11 | case Config::INI : |
12 | return IniConfig::parse(CONFIGS_PATH . '/config.ini'); |
13 | break; |
14 | case Config::PHP : |
15 | //此处没有做文件是否存在的判定,你可以自己判定一下,我只是做一个例子 |
16 | return include CONFIGS_PATH . '/config.php'; |
17 | break; |
18 | default: |
19 | return array(); |
20 | break; |
21 | } |
22 | } |
23 | } |
如果你要将配置文件修改成为xml这种方式,只需要在XmlConfig.php中实现即可,当然,为了简单,我在这儿只是实现ini配置文件的编写,xml的配置文件你可以自己去尝试一下,如果你想查看具体实现,可以查看Toper中的/Library/Toper/Config/XmlConfig.class.php的具体代码。
01 |
02 | class XmlConfig { |
03 | public static function parse($file) { |
04 | if(!is_file($file)) { |
05 | throw new Exception('none exists xml config file'); |
06 | } else { |
07 | return parse_ini_file($file,true); |
08 | } |
09 | } |
10 | } |
这个文件的代码是我随手写的,不保证代码的正确性,了解思路即可。

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



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Log masuk CakePHP adalah tugas yang sangat mudah. Anda hanya perlu menggunakan satu fungsi. Anda boleh log ralat, pengecualian, aktiviti pengguna, tindakan yang diambil oleh pengguna, untuk sebarang proses latar belakang seperti cronjob. Mengelog data dalam CakePHP adalah mudah. Fungsi log() disediakan
