PHP遍历数组时如何根据元素值动态分配配置(Laravel Okta场景)
解决方法
你可以直接用遍历出来的单条应用数据里的name字段,动态拼接配置仓库的键名,替换掉原来硬编码的固定键名即可,修改后的boot方法代码如下:
public function boot(OktaApp $oktaApp, Repository $repository) { $oktaApps = $oktaApp ->where('name', 'oktaApp1') ->orWhere('name', 'oktaApp2') ->get() ->toArray(); foreach ($oktaApps as $app) { // 用应用的name字段动态生成配置键 $repository["services.{$app['name']}"] = [ 'client_id' => $app['client_id'], 'client_secret' => $app['client_secret'], 'redirect' => $app['redirect_uri'], 'base_url' => $app['base_url'], ]; } }
扩展优化建议
如果后续新增Okta应用时不需要修改服务提供者代码,可以直接去掉查询条件,拉取所有Okta应用自动加载配置:
// 无需指定应用名,全量加载数据库中存储的所有Okta应用配置 $oktaApps = $oktaApp->get()->toArray();
只要应用的name字段值符合配置键命名规范,就能自动生成对应services.应用名的配置项,后续新增应用不需要调整当前代码。
内容的提问来源于stack exchange,提问作者CodeConnoisseur
相关产品推荐
相关产品推荐

