【发布时间】:2017-04-28 13:43:51
【问题描述】:
Here is my directory (the screen-shot in this link)。另外我还有一个名为config.php 的文件,其中包含一些变量,如下所示:
<?php
// db
$dbname = 'mydb';
$db_username = 'root';
$db_password = '';
// login
$l_email = 'some@one.com';
$l_password = 'mypas'
// details
$sleep_on_error = 1; // per sec
// and etc
// .
// .
// .
?>
如您所见,我有一些变量存储在config.php 文件中。我可能在项目的每个部分都需要这些变量。所以我需要让config.php 文件在整个项目中都可以访问。所以我可以将config.php 文件添加到作曲家中,使其在整个项目中都可以访问。像这样:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/classes/config.php"
]
},
我要做的只是为我的项目实现一个简单的配置系统。请告诉我我这样做是否正确?或者我应该为此定义一个类?或者我所做的一切都是错的,我应该做点别的?
简而言之,为项目进行配置的最佳结构是什么?
【问题讨论】:
-
配置通常只是键/值对,因此格式应该简单且易于维护。
-
@JayBlanchard 你的意思是我必须制作一个文件(不是
.php文件,类似于xml 文件) 并解析它以供使用? -
你知道 PHP 实际上支持正确的常量吗?因为你在这里使用了变量。
-
这是一种方式。我们有时使用 .ini 作为文件扩展名,有时使用 .txt。这是个人喜好。
-
@JayBlanchard 许多 PHP 项目实际上使用 PHP 模块进行配置的原因是,与普通文本文件相比,在正常情况下 PHP 文件永远不会以文本形式发送给客户端,而是始终以文本形式发送给客户端。由 PHP 处理器解析,因此不会生成任何输出,而对于普通文本文件,您需要通过其他方式确保配置从未真正发送到客户端的浏览器。所以这实际上是一个额外的安全功能,你的解决方案——如果做错了——实际上是危险的。
标签: php laravel configuration composer-php constants