laravel配置系统使用问题

现在有几个渠道,不想要创建数据表,怎么配置比较好?

channel
a:渠道1
b:渠道2
c:渠道3

本来一个表有用这个字段,直接在model里面定义

const A = 'a'; 
const B = 'b'; 
const C = 'c'; 

const CHANNEL_ARR1 = [
  self::A => '渠道1',
  self::B => '渠道2',
  self::C => '渠道3',
];
const CHANNEL_ARR2 = [
  'all' => '全部',
  self::A => '渠道1',
  self::B => '渠道2',
  self::C => '渠道3',
];

现在多了几张表使用channel这个字段,该怎么使用配置文件配置比较好调用?
想过使用config/channel.php,感觉不是很灵活

<?php
return [
    'a' => '渠道1',
    'b' => '渠道2',
    'c' => '渠道3',
];

求有好的方案,谢谢

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 12
Junwind

你的model不是会继承吗,在父类里面定义这些就行了,然后用类名调用 parent::CHANNEL_ARR1

3个月前 评论
可爱多 (楼主) 3个月前
slowlyo 3个月前
sanders

我来理解一下楼主的需求:

想实现多渠道数据加载,渠道数据有英文标识和中文名称,英文标识为枚举值。

楼主可以讲一下为什么觉得配置不够灵活?我觉得如果配置数据跟着每次发布来更新的话,配置数据已经足够灵活了。除非是想在发布后还继续更新渠道数据,那只能是再进行额外的存储。

另外楼主这里 CHANNEL_ARR1 和 CHANNEL_ARR2 这两个常量没有在配置数据中体现,我觉得这里可能会有些问题。

3个月前 评论
可爱多 (楼主) 3个月前
sanders (作者) 3个月前
可爱多 (楼主) 3个月前
sanders (作者) 3个月前
可爱多 (楼主) 3个月前

渠道配置不经常变化,做个枚举类就好了,php8.1版本引入枚举类,不想封装可以找个枚举类composer包就好了,好多都支持语言翻译和一些快捷方法,拿来开箱即用就好了。

例如这个包,Laravel Enum

3个月前 评论
可爱多 (楼主) 3个月前

你的意思是多个 Model 共用相同的 channel字段? trait 就行,把共用属性写进 trait

3个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!