如何在 php 脚本中导入 config.php 文件
How to import a config.php file in a php script
我尝试将 config.php 读入 php class 但做不到。
我只想在真正需要的时候加载配置,而不是在程序开始时导入它
我在网上搜索了很多,但没有找到任何解释。
我将向您展示我的 class,我在其中阅读了配置:
<?php declare(strict_types=1);
namespace Mailer\Mailer;
class Mailer
{
private $mailConfigs;
public function __construct()
{
$this->mailConfigs = require __DIR__ . '/../../Config/MailConfiguration.php';
}
/**
* @return mixed
*/
public function getMailConfig()
{
return $this->mailConfigs;
}
}
我的索引文件如下所示:
<?php
use Maier/Mailer;
$mailer = new Mailer();
$mailer->getMailConfig();
var_dump($mailConfiguration);
不幸的是,这段代码只给我找不到配置的错误。
然后我以为config dn只能在Mailer.php class中使用,但即便如此,我也只得到他找不到config的错误信息:
<?php declare(strict_types=1);
namespace Mailer\Mailer;
class Mailer
{
private $mailConfigs;
public function __construct()
{
$this->mailConfigs = require __DIR__ . '/../../Config/MailConfiguration.php';
}
/**
* @return mixed
*/
public function getMailConfig()
{
$this->mailConfigs;
var_dump($mailConfig);
}
}
顺便说一句。我的配置如下所示:
<?php
$mailConfig = [
'mailSender' => 'wk@someSender.com',
'mailSubject' => 'XXX',
'maxConnections' => 400,
'maxTime' => 600,
'csv' => 'mailaccounts.csv',
];
谁能帮我解释一下如何在不全局读取的情况下正确访问 oop 配置中的数组?
非常感谢。
代码的问题是您实际上并没有在 MailConfiguration.php
中返回配置。您将其定义为一个变量,您永远不会在构造函数中使用它。
不要将配置数组存储在配置文件的变量中,而是:
return [
'mailSender' => 'wk@someSender.com',
'mailSubject' => 'XXX',
'maxConnections' => 400,
'maxTime' => 600,
'csv' => 'mailaccounts.csv',
];
现在配置数组将被加载到构造函数中的 $this->mailConfigs
。
然后,当你想使用它的时候,只要这样做:
public function getMailConfig()
{
return $this->mailConfigs;
}
因为它包含与您在配置文件中返回的数组相同的数组。
建议
构建配置很好,这样您就可以为不同的环境(生产、暂存、本地、测试等)加载不同的配置文件。所以建议您将配置文件的路径传递给构造函数。然后你可以为不同的环境传递不同的文件。示例:
public function __construct($configFile)
{
$this->mailConfigs = require $configFile;
}
并且当您实例化 class 时:
$mailer = new Mailer(__DIR__ . '/../../Config/MailConfiguration.php');
然后你可以让你传入的文件以当前环境为条件。
另一种方法是以不同的格式保存配置,即序列化它并在需要时反序列化它。要使用的一种格式是 JSON 格式。
示例
index.php
<?php
include 'loader.php';
$loader = new loader();
?>
Loader.php
<?php
class loader{
private $config;
function __construct(){
$this->config = file_get_contents('config.php');
$this->config = json_decode($this->config,true);
echo $this->config['a']; //Test Config
echo $this->config['b']; //Test B
}
}
?>
Config.php (JSON)
{
"a":"Test Config",
"b":"Test B"
}
输出:
测试配置测试 B
我尝试将 config.php 读入 php class 但做不到。
我只想在真正需要的时候加载配置,而不是在程序开始时导入它
我在网上搜索了很多,但没有找到任何解释。
我将向您展示我的 class,我在其中阅读了配置:
<?php declare(strict_types=1);
namespace Mailer\Mailer;
class Mailer
{
private $mailConfigs;
public function __construct()
{
$this->mailConfigs = require __DIR__ . '/../../Config/MailConfiguration.php';
}
/**
* @return mixed
*/
public function getMailConfig()
{
return $this->mailConfigs;
}
}
我的索引文件如下所示:
<?php
use Maier/Mailer;
$mailer = new Mailer();
$mailer->getMailConfig();
var_dump($mailConfiguration);
不幸的是,这段代码只给我找不到配置的错误。
然后我以为config dn只能在Mailer.php class中使用,但即便如此,我也只得到他找不到config的错误信息:
<?php declare(strict_types=1);
namespace Mailer\Mailer;
class Mailer
{
private $mailConfigs;
public function __construct()
{
$this->mailConfigs = require __DIR__ . '/../../Config/MailConfiguration.php';
}
/**
* @return mixed
*/
public function getMailConfig()
{
$this->mailConfigs;
var_dump($mailConfig);
}
}
顺便说一句。我的配置如下所示:
<?php
$mailConfig = [
'mailSender' => 'wk@someSender.com',
'mailSubject' => 'XXX',
'maxConnections' => 400,
'maxTime' => 600,
'csv' => 'mailaccounts.csv',
];
谁能帮我解释一下如何在不全局读取的情况下正确访问 oop 配置中的数组?
非常感谢。
代码的问题是您实际上并没有在 MailConfiguration.php
中返回配置。您将其定义为一个变量,您永远不会在构造函数中使用它。
不要将配置数组存储在配置文件的变量中,而是:
return [
'mailSender' => 'wk@someSender.com',
'mailSubject' => 'XXX',
'maxConnections' => 400,
'maxTime' => 600,
'csv' => 'mailaccounts.csv',
];
现在配置数组将被加载到构造函数中的 $this->mailConfigs
。
然后,当你想使用它的时候,只要这样做:
public function getMailConfig()
{
return $this->mailConfigs;
}
因为它包含与您在配置文件中返回的数组相同的数组。
建议
构建配置很好,这样您就可以为不同的环境(生产、暂存、本地、测试等)加载不同的配置文件。所以建议您将配置文件的路径传递给构造函数。然后你可以为不同的环境传递不同的文件。示例:
public function __construct($configFile)
{
$this->mailConfigs = require $configFile;
}
并且当您实例化 class 时:
$mailer = new Mailer(__DIR__ . '/../../Config/MailConfiguration.php');
然后你可以让你传入的文件以当前环境为条件。
另一种方法是以不同的格式保存配置,即序列化它并在需要时反序列化它。要使用的一种格式是 JSON 格式。
示例
index.php
<?php
include 'loader.php';
$loader = new loader();
?>
Loader.php
<?php
class loader{
private $config;
function __construct(){
$this->config = file_get_contents('config.php');
$this->config = json_decode($this->config,true);
echo $this->config['a']; //Test Config
echo $this->config['b']; //Test B
}
}
?>
Config.php (JSON)
{
"a":"Test Config",
"b":"Test B"
}
输出: 测试配置测试 B