【问题标题】:CodeIgniter env based MY_ class extensions基于 CodeIgniter env 的 MY_ 类扩展
【发布时间】:2018-07-14 16:15:03
【问题描述】:

我正在开发一个 CodeIgniter 3.1.4 项目,并且知道我可以使用 MY_ 前缀库类来扩展系统库。

这很好,可以按预期工作,但我希望能够根据当前环境或 DotEnv 值确定正在使用的类 (我已经有一个运行良好的 DotEnv 库).

生产站点使用服务器“sendmail”发送电子邮件,我希望能够在开发中使用 MailGun(或其他),允许我在发送之前覆盖 'to' 值以允许安全开发利用像数据集一样的产品。

在 Laravel 中可以做到这一点,您可以使用 .envMAIL_DRIVER=mailgunMAIL_TO_ADDRESS=x@y.com 将所有出站邮件强制发送到一个地址以进行开发。

我确信这一定是可能的,但我缺乏 CI 方面的经验以及我应该将其实施到框架中的什么地方,这让我很失望。

【问题讨论】:

  • 谢谢 - 我已经通过了这两个,它只概述了如何根据环境指定不同的配置......我需要能够基于动态覆盖核心系统库环境,不加载不同的... CI强制您使用基于 MY_ 的文件/类名来覆盖基本文件名,我无法弄清楚如何仅动态加载基于 env 的文件/类名...因为它们单独存在于目录中过载。 =(
  • 但在 MY_ 中,您可以检查您拥有的环境并为您的电子邮件创建 2 个不同的配置
  • 我想过——在使用 MY_Email.php 类作为基于 env 定义的服务在幕后需要的实际真实类的工厂——但你不能有两个 MY 类覆盖电子邮件一 - 所以你会有一个 MASSIVE MY_Email 类,每个服务都有开关......感觉很讨厌
  • 在 config/email.php 中为您的电子邮件进行 2 种不同的设置

标签: php codeigniter codeigniter-3


【解决方案1】:

答案实际上在 Vickel 发送的链接中。您可以覆盖您的配置文件每个域/环境,因此您可以在不同的 config.php 文件中将 MY_ 前缀更改为 YOUR_ 前缀。

您是如何做到的(引用但经过调整):

创建目录application/config/not_my_environment/

将现有的 config.php 复制到上述目录中

编辑 application/config/not_my_environment/config.php 使其包含您的生产设置

根据 htaccess SetEnv 变量设置 ENVIRONMENT 常量(我刚刚在这里发布了一个非常相似的答案:Maintain the same project within multiple sub-domains),然后您可以更改每个域的文件。

一旦您运行自定义的每个部署的配置文件集,您可以将前缀设置为您喜欢的任何内容,因此多个基于 MY_、YOUR_、ANY_ 前缀的类会覆盖 CI 默认值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多