首页 > 其他分享 >CI3使用加载类

CI3使用加载类

时间:2024-07-25 11:17:29浏览次数:17  
标签:load package CI3 add 使用 path 加载 view

加载器类

加载器,顾名思义,是用于加载元素的,加载的元素可以是库(类),视图文件 , 驱动器 ,辅助函数 , 模型 或其他你自己的文件。

 

应用程序包

目录结构

 

/application/third_party/foo_bar
//文件夹可选
config/
helpers/
language/
libraries/
models/
views/

 

 

读取视图、配置文件

  

public function index()
    {        
        $this->load->add_package_path(APPPATH . 'third_party/foo_bar', FALSE);            //加载附属程序
        $this->load->config('zhangsan');                        //加载附属程序的配置文件
        $this->config->set_item('zhangsan', '李四');
        $res = $this->config->item('zhangsan');

        $this->load->view('hh');            //加载附属程序的视图文件
    }

 

读取辅助函数

1、创建辅助函数

 

<?php

function you()
{$ci = &get_instance();
    $hello = $ci->load->database('hello', true);
    $res = $hello->get('admin')->result_array();
    p($res);
}

 

2、加载并调用辅助函数

function lisi()
    {
        $this->load->add_package_path(APPPATH . 'third_party/foo_bar');
        $this->load->helper('hp');
        you();
    }

 

调用数据库

1、config/database.php中添加数据库连接

$db['hello'] = array(
    'dsn'    => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => 'root',
    'database' => 'temp',
    'dbdriver' => 'mysqli',
    'dbprefix' => 'cms_',
    'pconnect' => TRUE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

2、helper辅助函数中操作数据库

<?php

function you()
{
    echo 444;
    $ci = &get_instance();
    $ci->load->add_package_path(APPPATH . 'third_party/foo_bar');
    $hello = $ci->load->database('hello', true);    //加载数据库组名称
    $res = $hello->get('admin')->result_array();
    p($res);
}

 

使用驱动器:

创建驱动器drv:

 

function qudong()
    {
        $this->load->add_package_path(APPPATH . 'third_party/foo_bar');
        $this->load->driver('drv');      //必须在add_package_path下面调用
        $this->drv->file->save();
    }

 

遇到的bug,第二个参数不起作用

$this->load->add_package_path(APPPATH.'my_app', FALSE);

查找原因发现,原来是system/core/Loader.php,函数里面,返回的数组,导致始终返回的是加载类的视图路径
  $this->_ci_view_paths = array($path . 'views/' => $view_cascade) + $this->_ci_view_paths;  

 

修改代码为就好: $this->_ci_view_paths = $view_cascade ? array($path . 'views/' => $view_cascade) : $this->_ci_view_paths;

 

 

 

标签:load,package,CI3,add,使用,path,加载,view
From: https://www.cnblogs.com/haokan/p/18322398

相关文章

  • Supervisor重新加载配置启动新的进程
    一、添加好配置文件后二、更新新的配置到supervisord  supervisorctl update三、重新启动配置中的所有程序supervisorctl reload四、启动某个进程(program_name=你配置中写的程序名称)supervisorctl start program_name五、查看正在守候的进程supervisorctl六、......
  • Django get_or_create和update_or_create 的作用和使用
    Djangoget_or_create和update_or_create的作用和使用:get_or_create和update_or_create是Django中的两个有用的方法,用于在数据库中获取或创建记录。如果记录不存在,则创建它们;如果存在,则返回现有记录。这两个方法帮助简化了避免重复记录的逻辑,并提供了一种简洁的方法来更新......
  • 使用mybatis-plus拦截器MybatisPlusInterceptor进行分页查询案例
    在MyBatis-Plus中,分页功能通常是通过配置MybatisPlusInterceptor(或其前身PaginationInterceptor)来实现的,这是一个全局的拦截器,用于拦截MyBatis的SQL执行,并在其中添加分页逻辑。以下是一个使用MybatisPlusInterceptor进行分页查询的案例:添加依赖<dependencies><de......
  • 无法将两个字节从 pi 5 主设备发送到从设备 arduino mega(使用 smbus2 库)
    因此,我尝试使用smbus2库中的write_byte函数,并成功使用RaspberryPi5中的该函数来打开和关闭连接到ArduinoMega的LED。我的项目涉及3RPS平行轴机械手由3个步进器控制,我正在通过Pi5使用计算机视觉进行数据采集,计算我希望每个机械手电机达到的必要速度......
  • 使用 @Audited 增强Spring Boot 应用程序的数据审计能力
    介绍在SpringBoot开发的动态世界中,确保数据完整性和跟踪变化是至关重要的。实现这一目标的一个强大工具是@Audited注解。本文深入探讨了该注解的复杂性、其目的、实现步骤以及如何利用其功能进行有效的实体审计。理解@AuditedSpringBoot中的@Audited注解用于审计实体,提供对数......
  • ProcessPoolExecutor 的递归使用挂起
    问题我尝试将aProcessPoolExecutor与递归调用一起使用,但它不起作用。我在下面创建了一个最小的示例fromconcurrent.futuresimportProcessPoolExecutorfromtimeimportsleepexecutor=ProcessPoolExecutor()i=3deftest():globaliprint(......
  • 如何使用 JSON 进行数据交换 ?
    JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON的设计灵感来自于JavaScript的对象表示法,但它与编程语言无关,几乎所有现代编程语言都提供了对JSON的支持。JSON已成为Web应用程序中数据交换的事实标准。JSON......
  • 如何使用 SQLite ?
    SQLite是一个轻量级、嵌入式的关系型数据库管理系统(RDBMS)。它是一种C库,实现了自给自足、无服务器、零配置、事务性SQL数据库引擎。SQLite的源代码是开放的,完全在公共领域。它被广泛用于各种应用程序,包括浏览器、操作系统、移动应用等。SQLite的基本特性轻量级:SQLite......
  • openfeign及熔断的使用以及传参方式的误区
    pom文件<!--熔断依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency><!--引......
  • python webbrowser.open 不使用默认浏览器
    对你们来说这是一个好奇的家伙..在我的python程序中webbrowser.open('etc..')打开MicrosoftEdge现在奇怪的是,我在与opensChrome(我的默认值)稍有不同的文件夹中还有另一个python程序关于发生了什么的任何想法吗?!!(我知道有人问过类似的问题,但......