Amr*_*Amr 18 php configuration class config-files
我想创建一个config.php文件来保存通常从一个项目更改为项目的各种配置值,我想定义一个类来保存此文件中的配置值,如下所示:
class Config {
const DB_SERVER = 'localhost',
DB_NAME = 'abc',
DB_USERNAME = 'admin',
DB_PASSWORD = '12345',
WEBSITE_NAME = 'My New Website',
IMAGE_DIR = 'img';
}
Run Code Online (Sandbox Code Playgroud)
等等,我想在类中定义所有值作为常量,我会像下面这样调用它们:
$connection = mysql_connect(Config::DB_SERVER, Config::DB_USERNAME, Config::DB_PASSWORD) or die("Database connection failed..");
Run Code Online (Sandbox Code Playgroud)
我想知道:这种设置项目配置的方式是对的吗?这种方式有任何缺点吗?如果它是错的,那么最好的方法是什么呢?
cHa*_*Hao 11
这是一种做法,是的.一个不太糟糕的方式,IMO.基本上,类只是使用PHP语法成为配置文件.
但是有一些缺点:
你不能拥有const 数组或对象.(当然,你不能拥有全局常量数组/对象,所以......)(从5.6开始,你可以拥有常量数组.但是仍然没有const对象.我很确定你不能拥有const资源,因为这没有多大意义.)
你可以通过为对象实现一个静态getter来解决这个问题(当然它被编码为总是返回相同的对象)......但是在大多数情况下我建议不要使用它.如果配置中的对象在设计上是不可变的,那么它只是一个安全的选项.(不是为不变性而设计的物体太容易改变,即使偶然也是如此.)
(除了可变性问题,它让我在配置文件中有实际运行的代码......但这主要是个人偏好.)
这个类的目的与其他类不同 - 它旨在根据项目进行更改.您可以考虑将Config类保持在与其他类不同的位置,例如您通常保留配置文件的位置.
使用真实的配置文件,因为您在运行时解析它,您可以想象处理丢失或无效的文件(例如,通过使用默认设置运行,使用哪些部分是可解析的,和/或显示有用的错误消息).但是,一旦你的配置作为PHP代码运行,任何语法错误 - 或者,如果你没有考虑到它,一个丢失的Config类 - 将停止应用程序死在它的轨道.如果你正在display_errors关闭(在生产中推荐),问题可能不那么明显.