zoukankan      html  css  js  c++  java
  • PHP CI 框架简单使用(二)

      我们简单认识一下CI框架的MVC。示例代码如下

    //CI控制器文件Home.php
    
    
    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');   //为了防止用户直接通过文件路径来访问控制器,可以有效的防止跨站攻击
    
    class Home extends CI_Controller{   //继承CI控制类,必须存在的
        public function __construct(){     
            parent::__construct();
            $this->load->model('Home_model');    //加载Model模型类
        }
    
        public function index(){
            echo 'Home页面';
            $this->load->View('home/index');    //渲染home下的index视图页面,View可以小写
        }

      

    //CI模型类文件Hone_model.php
    
    
    <?php
    
    class Home_model extends CI_Model    
    {
        
        function __construct()
        {
            parent::__construct();
            $this->load->database();    // 加载数据库
        }
    
    }

      页面效果

      碰到的问题解决:

      1,在Linux部署访问CI时出现错误 Unable to locate the model you have specified:*_model 时

      解决方法:出现上述问题是没有找到指定的模型类,主要原因是因为在window环境下代码不区分大小写,所以默认model类文件名我小写,但文件中类名必须要为大写的,当我们将项目加载移植到Linux环境下时,Linux环境区分大小写,所以导致类文件没能找到,出现该问题,我们要修改模型类文件名和控制器中的加载名保持一致,要么全小写要么首字母大写,其余字母全小写。模型类中的类名要保证是首字母大写,其余小写的格式。

      例如上例就保证了$this->load->model('Home_model'); 的加载名和模型类文件名一致都是Home_model。

      2,出现错误Message: Undefined property: Home::$load

      解决方法:出现上述问题是因为我们定义的控制器文件名(类名)使用了CI里的关键字导致命名冲突,解决方法有两个,第一种修改控制器文件名和类名(此方法相对比较麻烦,我们推荐第二种方法) ,第二种在控制器种添加一个构造函数,写法如下

        public function __construct(){
            parent::__construct();
        }
  • 相关阅读:
    区块链技术栈-区块链账本
    (引文)可扩展的分布式数据库架构
    CentOS7 通过systemd 添加开机重启服务
    spring发布RMI服务(-)
    使用jdbc连接上oracle的两种方法
    用户态和内核态
    MySQL数据库备份还原(基于binlog的增量备份)
    分布式事务
    shuffle 过程
    MapReduce的流程
  • 原文地址:https://www.cnblogs.com/lovele-/p/9459416.html
Copyright © 2011-2022 走看看