Codeigniter, как установить ключи API и URL ресурсов для удобного доступа в приложениях
Я пытаюсь очистить свой сайт, поставив все свои конфигурации в одном месте для легкого доступа.
У меня много разных конфигурационных зависимостей, например, PayPal и Stripe public/private и песочницы/живые клавиши, а также ряд ссылок, например ссылки google recaptcha.
Я не хочу распространять эти ключи вокруг своего приложения, а затем нужно искать их, если я хочу перейти из песочницы, чтобы жить, например.
Я пытаюсь определить мои ключи API и большинство используемых ссылок в файле config.php CodeIgniter, как это...
$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';
];
Вопрос один:
Если бы я хотел получить доступ к личным ключам в Stripe live, мне пришлось бы писать...
$stripe_live = $this->config->item('stripe_live');
$stripe_live['public_key'];
Это почти такая же работа, как просто копирование ключа туда, где мне это нужно (одно или два места). Так есть более простой способ?
Второй вопрос:
Можно ли поместить мои URL-адреса в файл конфигурации, как в моем примере выше? Или было бы лучше определить мои URL-адреса как константы (в файле констант), а затем просто получить к ним доступ в виде констант вместо того, чтобы записывать $this->config->item('bootstrap_link')
Благодарю.
Посмотрев на документацию CodeIgniter Config, я придумал следующее решение, по крайней мере, для моих настроек конфигурации API. В приведенном ниже примере я использую API-интерфейс google recaptcha.
1 - Создайте новый файл внутри папки application/config и вызовите его как хотите... например 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 - В файле контроллера загрузите свой файл конфигурации и массируйте данные в виде, подобном этому...
$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>
Теперь, чтобы изменить данные конфигурации в нескольких местах, просто перейдите в файл api_config.php и вставьте новые ключи.
Поскольку я новичок не могу комментировать:/.
Я начну с вопроса 2. Его так держать. Но полоса, paypal - это платежные шлюзы, и будет хорошо хранить ее в db, как сказал Yogesh, и получить ее, чтобы использовать ее. Это также будет полезно, если вы хотите предоставить пользователю его редактировать.
Для 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;
}
?>
Сохраните это в приложении /helpers как paymentdetail_helper.php и загрузите его, как обычно. больше информации о помощниках, о которых идет речь Информация о помощнике
Это моя идея. :) Добро пожаловать с предложениями