ci架構(一),ci架構(_PHP教程

來源:互聯網
上載者:User

ci架構(一),ci架構(


ci目錄結構

|-----system                架構程式目錄      |-----core              架構的核心程式          |-----CodeIgniter.php   引導性檔案          |-----Common.php    載入基底類別庫的公用函數          |-----Controller.php    基控制器類檔案:CI_Controller          |-----Model.php     基模型類檔案:CI_Model          |-----Config.php    配置類檔案:CI_Config          |-----Input.php     輸入類檔案:CI_Input          |-----Output.php    輸出類檔案:CI_Output          |-----URL.php       URL類檔案:CI_URl          |-----Router.php    路由類檔案:CI_Router          |-----Loader.php    載入類檔案:CI_Loader      |-----helpers           輔助函數          |-----url_helper.php    url相關的輔助函數,如:建立url的輔助函數          |-----captcha_helper.php建立圖形驗證碼的輔助函數      |-----libraries         通用類庫          |-----Pagination.php    通用分頁類庫          |-----Upload.php    通用檔案上傳類庫          |-----Image_lib.php 通用影像處理類庫          |-----Session.php   通用session類庫      |-----language          語言套件      |-----database          資料庫操作相關的程式          |-----DB_active_rec.php 快捷操作類檔案(ActiveRecord)      |-----fonts             字型檔        |-----application           項目目錄      |-----core              項目的核心程式      |-----helpers           項目的輔助函數      |-----libraries         通用類庫      |-----language          語言套件      |-----config            項目相關的配置          |-----config.php    項目相關的設定檔             |-----database.php  資料庫相關的設定檔          |-----autoload.php  設定自動載入類庫的設定檔          |-----constants.php 常量設定檔          |-----routes.php    路由設定檔      |-----controllers       控制器目錄          |-----welcome.php   控制器檔案,繼承CI_Controller      |-----models            模型目錄          |-----welcome_model.php 模型檔案,繼承CI_Model      |-----views             視圖目錄          |-----welcome.php   視圖模板檔案,預設尾碼名為.php      |-----cache             存放資料或模板的快取檔案      |-----errors            錯誤提示模板      |-----hooks             鉤子,在不修改系統核心檔案的基礎上擴充系統功能      |-----third_party       第三方庫      |-----logs              日誌    |-----index.php             入口檔案

訪問形式

在\application\controllers\welcome.php中添加函數:

public function hello()    {        echo "test";   }

入口檔案.php/控制器/動作

自己建立控制器,hello.php:

if ( ! defined('BASEPATH')) exit('No direct script access allowed');    class Hello extends CI_Controller     {        public function sayHello($name)        {            echo $name,",Hello World";        }    }?>

注意:

  • 方法名以底線開頭的是不能訪問成功的,只能間接訪問。
  • 只能訪問public修飾的方法。
  • 盡量不要與類名相同的方法,會當作建構函式。

載入視圖

application\views\view_test.php或者application\views\view\test.php(這中做法主要是方便同一類型的視圖可以放在同一個檔案夾下方便管理)

<html><head>head><body>test_ci_hello_worldbody>html>

控制器:

public function addView(){    $this->load->view("view_test");}

或者:

public function addView2(){    $this->load->view("view/test");}

效果:

分配變數

把資料從控制器中傳到視圖中,控制器:

public function addView()        {            $this->load->vars("title","value");            $list = array(            array('id'=>1,'name'=>'jack','email'=>'123@123.com'),            array('id'=>2,'name'=>'jack2','email'=>'1233@123.com'),            array('id'=>3,'name'=>'jack3','email'=>'12333@123.com')            );            $data['new_title']="標題";            $data['list']=$list;            $this->load->vars($data);                        $this->load->view("view_test");        }

視圖:

                    

echo $title;?>

echo $new_title;?>

test_ci_hello_world $listas$item foreach( ):?> endforeach;?>
$item['id']?> $item['name']?> $item['email']?>

效果:

public function addView() { $this->load->vars("title","value"); $list = array( array('id'=>1,'name'=>'jack','email'=>'123@123.com'), array('id'=>2,'name'=>'jack2','email'=>'1233@123.com'), array('id'=>3,'name'=>'jack3','email'=>'12333@123.com') ); $data['new_title']="標題"; $data['list']=$list; $this->load->vars($data); $this->load->view("view_test"); $this->load->view("footer"); }

視圖view_test:

                    

echo $title;?>

echo $new_title;?>

test_ci_hello_world $listas$item foreach( ):?> endforeach;?>
$item['id']?> $item['name']?> $item['email']?>

視圖footer:

CI_hello_world!!!body>html>

顯示效果:

uri參數擷取

控制器:

public function getUri($id,$name,$year)        {            echo "id--->".$id."---name--->".$name."---year--->".$year."
"; echo "segment(1)--->".$this->uri->segment(1)."
"; echo "segment(2)--->".$this->uri->segment(2)."
"; echo "segment(3)--->".$this->uri->segment(3)."
"; echo "segment(4)--->".$this->uri->segment(4)."
"; echo "segment(5)--->".$this->uri->segment(5)."
"; }

效果:

載入資料庫

這個操作在MVC中是放到model中做的。

在\application\config\database.php中設定資料庫參數,注意dbprefixswap_pre這兩個參數。在php中寫的是首碼,會預設當作swap_pre,然後放到資料庫中的時候會轉成dbprefix,但是最好兩個都弄成一樣的。

還有$active_group,預設是default,如果要串連兩個資料庫,把default另外取名,然後在函數中寫明參數就OK。

必須繼承資料核心類CI_Model,同時重載父類中的構造方法。

class Model_name extends CI_Model{    function __construct()    {        parent::__construct();    }}

在每次使用資料庫的時候,都需要載入一次資料庫:

$this->load->database();

為了方便,可以將資料庫的載入設定成自動載入,在\application\config\autoload.php中。

$autoload['libraries'] = array('database');

對於資料庫訪問對象,裝載到超級對象的屬性中 $this->db

$res = $this->db->query($sql);//返回對象$res->result();//返回數組,數組中是一個一個的對象$res->result_array();//返回二維數組,裡面是關聯陣列$res->row();//返回第一條資料,直接是一個對象

AR操作資料庫

在database.php檔案中,將$active_recoed的值改為TRUE,這樣就可以使用AR了。

//查詢public function index(){    $res = $this->db->get('表名');//這裡自動調用首碼    foreach($res->result() as $item)    {        echo $item->name."
"; }}
//插入public function index(){    $data=array(        'name'=>'lisi',        'password'=>md5('lisi')    );    $bool = $this->db->insert("表名",$data);    var_dump($bool);}
//更新public function index(){    $data=array(        'name'=>'wangwu',        'password'=>md5('wangwu')    );    $bool = $this->db->update('表名',$data,array('id'=>3));    var_dump($bool);}
//刪除$bool = $this->db->delete('表名',array('id'=>2));var_dump($bool);

新手助PHP 程式 CI架構開發 進來看一眼吧

常規的方法是ul嵌套,即主菜單ul-li裡嵌套子功能表ul,要用到兩級迴圈
首先迴圈主菜單,要有固定的條件來判斷出主菜單,比如主菜單的uid==0或者其它。。。


  • 欄目名稱</li>
    if($news_item['uid'] == 0){ //判斷並得到主菜單

    echo "
  • ".$news_item['title'] . '
      ';
      foreach ($news as $child_item): //迴圈二次
      if($news_item['id'] == $child_item['uid']){ //判斷並得到對應子功能表
      echo "
    • "."ss".$child_item['title']."</li>";
      }
      endforeach;
      echo "</ul></li>";
      }

      endforeach; ?>
      </ul>

      當然這僅限於兩級菜單,多級或無限極,可以使用函數遞迴
      function menu($uid=0){ //設定預設從主菜單開始
      global $news;
      foreach ($news as $news_item):

      if($news_item['uid'] == $uid){

      echo "
    • ".$news_item['title'] . '
        ';
        menu($news_item['id']); //遞迴調用

        echo "</ul></li>";
        }

        endforeach;

        }
        ------ 調用方法 ------------------------------
          >
           

          CI架構想建立一個model類繼承CI_Modle,我建立在app/core/MY_Model,直接報錯了

          難道MY_Controller不要類名一致?
           

          http://www.bkjia.com/PHPjc/836503.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/836503.htmlTechArticleci架構(一),ci架構( ci目錄結構 |----- system 架構程式目錄 |----- core 架構的核心程式 |-----CodeIgniter. php 引導性檔案 |-----Common. php 載入基底類別庫...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.