CodeIgniter 電子書下載 (rsebook.com)

十月 18, 2009 作者: mrmu  
類別: 學習資源

實CodeIgniter的官方使用者手冊就已經有很多詳細的說明了,但一定也有人跟我一樣,希望有更詳細的書本,可以掌握的更完全。
前幾天發現有個網站可以下載很多免費的原文電子書,裡面也有一本Professional CodeIgniter可以下載,真的…嗯…很囂張的感覺XD。

雖然這本書的評價不是非常好,而且版本有點舊了,不過有總比沒有好….XD
話說這本書的電子檔實在不難找,其實隨便拜一下Google就有了…

這裡就是rsebook.com提供的Prof. CodeIgniter電子書載點了,喜歡的話還是要買書支持哦!!

相關文章

利用CodeIgniter建立簡單的MVC架構範例

十月 7, 2009 作者: mrmu  
類別: PHP程式設計

codeigniter for MVC

[圖片來源: CodeIgniter.com]

CodeIgniter是一套簡單、快速的PHP Framework,因為採用MVC的概念,所以能讓中、大型網站專案的架構變得漂亮乾淨許多,最近有空又開始試玩它,建議剛入門的同學可以先到官網跟著教學影片run幾次,尤其是20分鐘建立Blog的例子,實際跑過幾次流程,認識一下Controller跟View之間的互動方式。

耶,為什麼只提到Controller跟View呢?Model呢?是的,那個範例並沒有使用到Model,它是將取得資料的動作,直接寫在Controller了。其實寫CodeIgniter,並不用強制一定要M、V、C都使用,如果網站很單純,只要有C (只要有心…),V跟M都能被實作在C裡。跑過教學影片的同學一定有印象,Controller就是一堆PHP的Class,一個繼承Controller類別的Class,本身就像是一頁網頁,使用echo的方式就能達到View的效果,而在Controller直接呼叫像是 $this->db->get(’db_table_name’)的語法就能取得資料庫的資料了,就像範例那樣。

雖說Controller似乎能控制一切,但使用MVC架構的目的本來就是不想全部的code都搞成一沱,所以我們先來看看一個簡單的MVC例子,M,V,C都用。現在請先確定已經把CodeIgniter抓下來,並且放在Server目錄內了。

好的,首先我們先建立資料庫的資料,一切從簡,以下是SQL script,我建了一個名為test的資料庫,執行以下SQL會建立一個名為entries的資料表,欄位有id, title, body,再建立兩筆記錄:

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

---- database: `test`--

-- --------------------------------------------------------

---- table: `entries`--

CREATE TABLE IF NOT EXISTS `entries` (
 `id` int(16) NOT NULL,
 `title` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
 `body` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

---- data: `entries`--

INSERT INTO `entries` (`id`, `title`, `body`)
           VALUES(1, 'mrmu1', 'HiHi!~'),(2, 'mrmu2', 'HIHIHI~');

再來準備Controller的部份,請在system/application/controllers目錄下建立blog.php,內容如下:

class Blog extends Controller {
      function __construct() {
            parent::Controller();
      }

      function index() {
            $data['title'] = "TitleT";
            $data['heading'] = "My PageT";

            //$data['query'] = $this->db->get('entries');  // A
           $this->load->model('blog_model'); // B
           $data['query'] = $this->blog_model->getdata(); // C

           $this->load->view('blog_view', $data);
      }
}

其中標示A的那行,就是官網的教學影片使用的方式,直接在Controller取得資料庫的資料,我們先把它註解掉,以B,C行來取代它,即是使用load->model的方式,把載入資料的事交給blog_model這個類別,而接著再使用blog_model裡的getdata()來取得資料。

對了,要記得載入database函式庫,讓我們能使用db相關的函式。要載入database這個函式庫您可以在Controller裡面加上這行 $this->load->database();,可以加在呼叫$this->db->get(’entries’);之前,最好是放在建構子中,這樣可叫用的範圍比較廣,不過您也可以像這個範例一樣,直接到system/application/config/autoload.php 找到 $autoload['libraries'] = array();,改成$autoload['libraries'] = array(’database’); 這樣一來,它就會自動載入,您也就不用在Controller裡面額外加上load database的指令了。

接下來我們就來看看blog_model這個類別要怎麼寫。

請在system/application/models目錄下建立blog_model.php,因為我們只是要驗證一下,所以內容非常簡潔,如下:

class Blog_model extends Model {
      function Blog_model() {
            parent::Model();
      }

      function getdata() {
            $query = $this->db->get('entries');
            return $query;
      }
}

很簡潔吧,好,接下來就是把View的部份也建立起來,請到system/application/views目錄建立blog_view.php,內容如下:

// 從Controller傳來的heading變數

<h1><?php echo $heading; ?></h1>

<?php foreach($query-&gt;result() as $row): ?>// 一筆一筆讀出資料

<h3><?php echo $row-&gt;title ?></h3>

// 讀出title欄位的資料
<? php echo $row-&gt;body ?>

// 讀出body欄位的資料
<hr />//分隔線 <? php endforeach; ?>

基本上,View就是一堆Html語法加上輸出一些PHP的變數,如此就完成了我們的MVC架構簡單範例了。

輸出結果:

My PageT

mrmu1

HiHi!~


mrmu2

HIHIHI~


*注意,如果出現了 Message: Undefined property: Blog_model::$db 就表示您沒有載入database這個函式庫,請參考上述作法加載。

CodeIgniter官網:http://codeigniter.com/
CodeIgniter官方教學影片:http://codeigniter.com/tutorials/

相關文章

CodeIgniter-簡單快速易上手的PHP Framework

二月 15, 2009 作者: mrmu  
類別: PHP程式設計


圖片來源: http://blog.ekofedriyanto.co.cc/

最近空閒的時候會看看PHP相關的東西,雖然我接觸的時間不長,不過因為一時興起寫了一個widget貼紙之後,就一發不可收拾了…XD
慢慢的這個貼紙從一個php檔,變五、六個,也算是像個網站了,用戶也逐漸增加…我知道除了簡單的功能外,簡單的視覺設計也是需要的,所以連同css也開始接觸…
慢慢的,這些php檔變成了一盤盤惱人的義大利麵,我知道基本又隨性的php語法已不能支撐住整個網站的發展,該是理性面對程式碼架構的時候了…XD (雖然心裡想著「我不要重寫呀!」)

年假大概花了三天重寫了,參考了一些framework的寫法,但還是不滿意…今天看到一些大大介紹的CakePHP,感覺好像不錯,但我似乎比較喜歡輕型一點的framework,於是找到了CodeIgniter這個東西…

所謂framework的東西,感覺上就有點像是整理原本的語言後再多包一層邏輯讓programmer比較容易使用。所謂”整理原本的語言”,即是指把常用的操作分類包裝;而多包一層邏輯,事實上就是各別framework的賣點(他們自認為最好理解且最易用的方式),也能說是每個開發團隊的創意,而programmer主要就是學習這層邏輯。

CodeIgniter使用MVC的Pattern概念,把Model (可視為資料層)、View (網頁的外觀)、Control (邏輯控制) 區分開來,讓code脫離義大利麵的苦海。如果有練習過php連結資料庫的經驗,只要稍微看一下它提供的tutorials影片,就大概能感覺到它的好處了。

雖然我大言不慚一直說它好,其實目前我也只是練習了它的一些小範例而已…XD

相關文章請參考:CodeIgniter

相關文章