Php Codeigniter如何设置API键和资源URL,以便在应用程序中轻松访问

Php Codeigniter如何设置API键和资源URL,以便在应用程序中轻松访问,php,codeigniter,dry,Php,Codeigniter,Dry,我试图通过将所有配置放在一个地方以便于访问来清理我的站点 我有许多不同的配置依赖项,例如,PayPal和Stripe公用/专用和沙盒/live密钥,以及许多链接,例如google recaptcha链接 例如,如果我想从沙盒走向生活,我不想在我的应用程序中散布这些密钥,然后需要去寻找它们 我试图在CodeIgniter config.php文件中定义我的API键和最常用的链接,如下所示 $config['stripe_live'] = [ 'secret' => 'secret_

我试图通过将所有配置放在一个地方以便于访问来清理我的站点

我有许多不同的配置依赖项,例如,PayPal和Stripe公用/专用和沙盒/live密钥,以及许多链接,例如google recaptcha链接

例如,如果我想从沙盒走向生活,我不想在我的应用程序中散布这些密钥,然后需要去寻找它们

我试图在CodeIgniter config.php文件中定义我的API键和最常用的链接,如下所示

$config['stripe_live'] = [
    'secret'  => 'secret_key_xyz',
    'private' => 'private_key_xyz',
]

$config['stripe_sandbox'] = [
    'secret'  => 'secret_key_xyz',
    'private' => 'private_key_xyz',
]

$config['paypal'] = [
    'secret'  => 'secret_key_xyz',
    'private' => 'private_key_xyz',
]

$config['recaptcha'] = [
    'site_key'   => 'xyz_one_two_three',
    'secret_key' => 'xyz_one_two_three',
];

$config['jquery'] = [
    ['jquery_link'] => base_url() . 'Public/js/jquery.js',
]

$config['bootstrap'] = [
    ['bootstrap_link'] => base_url() . 'Public/js/jquery.js',
]

$config['fontawesome'] = [

]

$config['google_fonts'] = [

];

$config['groupworld'] = [
    'groupworld_api' => 'api_key_xyz';
];
    $this->config->load('api_config');
    $data['recaptcha_api_url'] = $this->config->item('recaptcha_api_url');
    $data['recaptcha_public_key'] = $this->config->item('recaptcha_public_key');
问题一:

如果我想访问我的Stripe live私钥,我必须编写

$stripe_live = $this->config->item('stripe_live');

$stripe_live['public_key'];
这几乎和把钥匙复制到我需要的地方(一两个地方)一样多。那么有没有更简单的方法

问题二:

可以像上面的例子那样将我的URL放在配置文件中吗?或者最好将我的URL定义为常量(在常量文件中),然后将其作为常量访问,而不是写出
$this->config->item('bootstrap\u link')


谢谢。

因为我是新手,不能评论:/

我将从问题2开始。保持这样没关系。但stripe、paypal是支付网关,如Yogesh所说,将其存储在db中并检索以使用它会很好。如果您想让用户编辑它,它也很方便

对于js、css链接,您可以将它们放在类似“includefiles.php”的视图中,并在加载视图时将其加载到所有页面中

为了方便检索数据,您可以使用助手函数

<?php
//paymentdetail_helper
function getpaymentdetailhelper(someid or gateway name as arg eg.$id){
$ins=& get_instance();
$ins->load->database();

//your queries $ins->db->query();

return $data;
}

?>

将其保存在application/helpers中作为paymentdetail_helper.php并像往常一样加载。有关相关帮助者的详细信息


这是我的主意欢迎您提出建议

在阅读了CodeIgniter配置文档之后,我至少为我的API配置设置提出了以下解决方案,在下面的示例中,我使用的是google recaptcha API

1-在application/config文件夹中创建一个新文件,并随意调用它。。。e、 g.api_config.php

在该文件中,按如下方式放置API密钥:

// stripe api
$config["stripe_live_public_key"] = "public_key_xyz";
$config["stripe_live_private_key"] = "public_key_xyz";

$config["stripe_sandbox_public_key"] = "public_key_xyz";
$config["stripe_sandbox_private_key"] = "public_key_xyz";

// paypal api
$config["paypal_live_public_key"] = "public_key_xyz";
$config["paypal_live_private_key"] = "public_key_xyz";

$config["paypal_sandbox_public_key"] = "public_key_xyz";
$config["paypal_sandbox_private_key"] = "public_key_xyz";

// recaptcha api
$config["recaptcha_api_url"] = 'https://www.google.com/recaptcha/api.js';
$config["recaptcha_verification_url"] = "https://www.google.com/recaptcha/api/siteverify";
$config["recaptcha_public_key"] = "lfgksl;dfg;kkkkdsjfhskjfhkjsdhfjshjksjdh";
$config["recaptcha_private_key"] = "sfkljslfjsjfahjjjjjjhjhsdfjskhajkakkajdj";

// groupworld api

// phpmailer api
2-在控制器文件中加载配置文件并将数据聚集到视图中,如下所示

$config['stripe_live'] = [
    'secret'  => 'secret_key_xyz',
    'private' => 'private_key_xyz',
]

$config['stripe_sandbox'] = [
    'secret'  => 'secret_key_xyz',
    'private' => 'private_key_xyz',
]

$config['paypal'] = [
    'secret'  => 'secret_key_xyz',
    'private' => 'private_key_xyz',
]

$config['recaptcha'] = [
    'site_key'   => 'xyz_one_two_three',
    'secret_key' => 'xyz_one_two_three',
];

$config['jquery'] = [
    ['jquery_link'] => base_url() . 'Public/js/jquery.js',
]

$config['bootstrap'] = [
    ['bootstrap_link'] => base_url() . 'Public/js/jquery.js',
]

$config['fontawesome'] = [

]

$config['google_fonts'] = [

];

$config['groupworld'] = [
    'groupworld_api' => 'api_key_xyz';
];
    $this->config->load('api_config');
    $data['recaptcha_api_url'] = $this->config->item('recaptcha_api_url');
    $data['recaptcha_public_key'] = $this->config->item('recaptcha_public_key');
3-在视图文件中只显示您的数据

<script src="<?php echo $recaptcha_api_url; ?>"></script>   
<div class="g-recaptcha" data-sitekey="<?php echo $recaptcha_public_key; ?>"></div>

为此,您可以将这些详细信息保存在数据库中,然后使用以下方法从数据库中提取这些详细信息并在配置中设置:$this->config->set_item('key','value');。如果仍然想询问比请评论有趣的解决方案,但出于我的目的,我将只设置这些键一次或两次,因此使用数据库使其动态化的麻烦对我来说有点远,如果我错过了更大的图片,请纠正我!如果是静态值,您可以使用CI根目录的index.php中的值创建一个超级全局文件,或者创建一个自定义核心文件,并确保扩展具有此功能的核心。虽然这只允许控制器调用函数。