1. 程式人生 > >PHP CI 框架簡單使用(二)

PHP CI 框架簡單使用(二)

mes base per undefine color message defined 保持 def

  我們簡單認識一下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();
    }

PHP CI 框架簡單使用(二)