程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> ci框架(一),ci框架(

ci框架(一),ci框架(

編輯:關於PHP編程

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:

<?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_world
</body>
</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'=>'[email protected]'),
            array('id'=>2,'name'=>'jack2','email'=>'[email protected]'),
            array('id'=>3,'name'=>'jack3','email'=>'[email protected]')
            );
            $data['new_title']="標題";
            $data['list']=$list;
            $this->load->vars($data);
            
            $this->load->view("view_test");
        }

視圖:

<html>
    <head>
    </head>
    <body>
        <h1><?php echo $title;?></h1>
        <h1><?php echo $new_title;?></h1>
        test_ci_hello_world
        <table>
            <?php foreach($list as $item):?>
            <tr>
                <td><?=$item['id']?></td>    
                <td><?=$item['name']?></td>
                <td><?=$item['email']?></td>                
            </tr>
            <?php endforeach;?>
        </table>
    </body>
</html>

效果:

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

視圖view_test:

<html>
    <head>
    </head>
    <body>
        <h1><?php echo $title;?></h1>
        <h1><?php echo $new_title;?></h1>
        test_ci_hello_world
        <table>
            <?php foreach($list as $item):?>
            <tr>
                <td><?=$item['id']?></td>    
                <td><?=$item['name']?></td>
                <td><?=$item['email']?></td>                
            </tr>
            <?php endforeach;?>
        </table>

視圖footer:

CI_hello_world!!!
</body>
</html>

顯示效果:

uri參數獲取                                                                                

控制器:

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

效果:

加載數據庫                                                                                 

這個操作在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."<br />";
    }
}
//插入
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或者其它。。。

<ul style="margin-top:20px; border-top:dashed 1px #666666;">
<li style="font-weight:600;">欄目名稱</li>
<?php foreach ($news as $news_item): //循環一次
if($news_item['uid'] == 0){ //判斷並得到主菜單

echo "<li>".$news_item['title'] . '<ul>';
foreach ($news as $child_item): //循環二次
if($news_item['id'] == $child_item['uid']){ //判斷並得到對應子菜單
echo "<li>"."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 "<li>".$news_item['title'] . '<ul>';
menu($news_item['id']); //遞歸調用

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

endforeach;

}
------ 調用方法 ------------------------------
<ul style="margin-top:20px; border-top:dashed 1px #666666;"&......余下全文>>
 

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

難道MY_Controller不要類名一致?
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved