讲师中心 微信公众号
AI工具推荐 视频效率加速

CodeIgniter4怎么配置自动加载model

秋丽君_8552

秋丽君_8552

发布时间:2026-10-22 15:26:33

|

100人浏览过

|

来源于php中文网

原创

CodeIgniter 4 不支持全局自动加载 Model,推荐使用 Factories 工厂按需加载、在 BaseController 中统一注入常用 Model,或通过服务容器注册为可注入服务;应避免预加载类文件、全局实例化等破坏框架设计的做法。

codeigniter4怎么配置自动加载model

CodeIgniter 4 不提供传统意义上的“全局自动加载 Model”机制(比如一启动就实例化所有 Model),但可通过工厂(Factories)和依赖注入实现按需、高效、可复用的 Model 加载,避免在每个控制器里重复写 $this->model('UserModel')。

使用 Factories 工厂按需加载

这是 CI4 官方推荐方式,支持单例复用、命名空间识别与路径自动解析:

  • 直接调用 Factories::models('UserModel'),会自动在 app/Models/ 下查找 UserModel 类;
  • 若类存在且继承自 CodeIgniter\Model,返回已初始化的实例;
  • 后续相同调用返回同一实例(共享模式),无需手动管理生命周期;
  • 支持传入选项数组,例如 Factories::models('UserModel', ['db' => 'custom_db']) 来指定数据库组。

在 BaseController 中统一注入常用 Model

适合全站高频使用的 Model(如 SettingModel、MenuModel),避免重复加载逻辑:

CodeIgniter 4.7.0
CodeIgniter 4.7.0

CodeIgniter下载页提供 CodeIgniter 4.7.0 官方源码包,并整理框架安装、数据库配置与入门开发说明。

下载
  • 在 app/Controllers/BaseController.php 的构造函数中注入:

<?php
  namespace App\Controllers;
  use CodeIgniter\Controller;
  use CodeIgniter\Config\Factories;

  class BaseController extends Controller
  {
    protected $settingModel;

    public function __construct()
    {
      $this->settingModel = Factories::models('SettingModel');
    }
  }
?>

  • 所有继承 BaseController 的控制器都可直接使用 $this->settingModel;
  • 不破坏依赖显式性,也便于单元测试时替换模拟对象。

通过服务容器注册 Model 为可注入服务(进阶)

若希望 Model 像其他服务一样被自动注入(如构造函数参数自动解析),可在 app/Config/Services.php 中扩展:

  • 添加静态方法,例如:

public static function userModel($getShared = true)
{
  return new \App\Models\UserModel(); // 或用 Factories::models() 封装
}

  • 之后在控制器中可这样使用(需启用容器自动注入):

class UserController extends BaseController
{
  public function __construct(private UserModel $userModel) {}
}

  • 注意:此方式要求项目启用 PHP 8.0+ 属性注入或完整配置了服务容器别名映射。

不推荐的方式:修改自动加载器或强行全局实例化

CI4 的设计哲学强调“按需加载”,以下做法应避免:

  • 在 app/Config/Autoload.php 的 $psr4 或 $classmap 中试图“预加载 Model 类文件”——这仅注册类路径,不创建实例,也无法触发依赖注入;
  • 在 index.php 或 Common.php 中手动 new Model 实例并赋值到全局变量——破坏作用域、引发并发问题、绕过框架生命周期管理;
  • 仿照 CI3 写法,在构造函数里调用 $this->load->model() —— CI4 已移除该语法,$this->load 不再可用。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

相关专题

更多
PHP CodeIgniter框架
PHP CodeIgniter框架

本专题专注于 PHP 轻量级框架 CodeIgniter 的学习与应用,系统讲解 MVC 模型、路由与控制器、数据库操作、表单验证、安全机制以及 REST API 开发。通过博客系统、内容管理平台和小型电商等实战项目,帮助学员快速掌握 CodeIgniter 的开发方法与实践技能。

3699

2025.08.28

剧云故事大纲与分场规划教程
剧云故事大纲与分场规划教程

本专题讲解剧云梗概与多级大纲功能,覆盖全局、分集、分场结构生成,以及主线冲突、剧情节点和场次顺序调整。

0

2026.10.22

VibeKnow PPT讲解视频教程汇总
VibeKnow PPT讲解视频教程汇总

本专题介绍VibeKnow PPT讲解模式的素材准备、旁白生成、页面节奏、画面呈现与导出设置,适合课程和培训场景。

0

2026.10.22

VibeKnow PDF转视频教程合集
VibeKnow PDF转视频教程合集

本专题围绕VibeKnow的PDF转视频功能,讲解文件准备、内容解析、脚本生成、重点可视化及配音字幕检查方法。

0

2026.10.22

二狗PPT模板与视觉设计
二狗PPT模板与视觉设计

本专题介绍二狗PPT的职场模板、主题风格与页面版式,覆盖模板切换、色彩选择、内容匹配和正式汇报场景下的视觉优化方法。

0

2026.10.22

php漏洞修复方法
php漏洞修复方法

PHP漏洞聚合专题,持续整理PHP最新高危漏洞、CVE安全预警、受影响版本、自查命令及修复方案,覆盖PHP-FPM、Docker、Ubuntu与Linux服务器环境,帮助开发者快速完成漏洞排查、版本升级和安全加固。

0

2026.10.22

二狗PPT入门与基础操作
二狗PPT入门与基础操作

本专题整理二狗PPT从官网进入、输入主题、生成大纲到制作成稿的基础操作,帮助新手掌握AI一键生成职场PPT的完整流程。

0

2026.10.22

讯飞绘文AI配图与绘图模型合集
讯飞绘文AI配图与绘图模型合集

本专题讲解讯飞绘文AI配图与绘图2.0 Pro,覆盖提示词、画面比例、参考图、风格选择及图片优化,帮助用户制作匹配内容的视觉素材。

0

2026.10.22

讯飞绘文AI选题与热点策划合集
讯飞绘文AI选题与热点策划合集

本专题介绍讯飞绘文选题中心与AI选题方法,涵盖热点发现、赛道筛选、选题评估和内容规划,解决创作者找灵感难题。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第六期_前端基础
第六期_前端基础

共107课时 | 23.9万人学习

CodeIgniter 4 官方用户指南
CodeIgniter 4 官方用户指南

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn