SlideShare uma empresa Scribd logo
1 de 75
Baixar para ler offline
CodeIgniter
             PHP Framework 2.0.X
                Appleboy (Bo-Yi Wu)
                    2011.04.16
2011.04.17                            1
內容皆採用 創用 CC 姓名標示 - 相
    同方式分享 3.0 台灣 授權條款



2011.04.17                2
感謝
 ●   OSSF 自由軟體鑄造場工作坊
 ●   KaLUG 社群
 ●   現場所有工作人員或聽眾




2011.04.17             3
今天上課如果有任何問題
 麻煩請舉手直接打斷講課過程
因為您的問題或許是大家的共同問題




2011.04.17     4
這份投影片適合 PHP 初學者
   及尚未使用過 Framework 有幫助
( 熟悉 MVC 的長輩們就不用聽這些了 )



2011.04.17           5
今天來推廣 CodeIgniter PHP Framework
    教大家如何快速開發網站
  不必一個人辛苦默默從”無 ”寫到有



2011.04.17                    6
Who Am I
Bo-Yi Wu (appleboy)
   CodeIgniter 台灣繁體中文手冊翻譯
   CodeIgniter 台灣繁體中文網站及討論區
   CodeIgniter PHP Plurk API (github)
   CodeIgniter Google Short URL API (github)
Contact
   appleboy.tw At gmail.com
   http://plurk.com/appleboy46
   http://blog.wu-boy.com
Now
   正文科技有限公司 (Software Department)
- Linux Kernel Driver, Soho Router Integration
- Android G-Sensor Driver
2011.04.17                                       7
尚未使用 Framework 的設計模式




2011.04.17                 8
Evolution of Web Development

               最新消息
               最新消息      News.php



               關於我們
               關於我們      About.php
  公司網站
  公司網站

               產品資訊
               產品資訊      Product.php



               聯絡我們
               聯絡我們      Contact.php
2011.04.17                           9
Evolution of Web Development

                                  新增新聞
                                  新增新聞
                         Add


                         Delete   刪除新聞
                                  刪除新聞               MySQL
              News.php
                          Edit    修改新聞
                                  修改新聞

http://xxxx.com.tw/news.php?mode=[add|delete|edit]&news_id=xxxx
 2011.04.17                                                   10
$action = (isset($_GET['mode'])) ? $_GET['mode'] : 'add';
switch($action)
{
    case 'add':
      echo 'add news';
      $sql = “insert into xxxx values('aa', 'bb')”;
    case 'edit':
      echo 'edit news';
      $sql = “update xxx set title = 'title name' where id = '1'”;
    case 'delete':
      echo 'delete news';
      $sql = “delete xxx where id = '1'”;
}
2011.04.17                                                      11
一個模組 一個檔案
 ●   SQL 語法 , CSS html, PHP 全部寫在同一檔案
      ●      維護困難
      ●      擴充性差
      ●      程式雜亂
      ●      無法交接
      ●      系統漏洞 SQL Injection
      ●      開發速度慢
      ●      後輩愈看愈不爽,砍掉重練?太難維護
             –   後後輩更不爽,又砍掉?
                 ●   …..........................
2011.04.17                                         12
Why use PHP Framework?



2011.04.17           13
為了加快網站開發速度及維護
       模組化套件 , 方便閱讀程式碼
       所以 PHP Framework 誕生


2011.04.17                   14
Public Web Framework




2011.04.17                          15
Why Choose CodeIgniter?



2011.04.17                      16
Why Choose CodeIgniter ?
1.    Small ( 非常小 )
2.    Fast ( 非常快速,想用什麼就 load 什麼 )
3.    Simple ( 程式架構容易 )
4.    High Performance (CI vs ZF vs CakePHP)
5.    Nearly Zero Configuration ( 五分鐘內搞定 )
6.    Cleaner Code ( 方便學習擴充 Framework)
7.    由我本人親自支援 ( 歡迎討論區留言 )


2011.04.17                                     17
What is CodeIgniter ?



Open Source Web Application Framework

MVC (Model View Controller) Architecture



2011.04.17                            18
CodeIgniter 版本演進
 ●   Version 1.7.1 Release: 2009.02.10
 ●   Version 1.7.2 Release: 2009.11.11
 ●   Version 1.7.3 Security patch
 ●   Version 2.0.0 Release: 2011.01.28        2 month
 ●   Version 2.0.1 Release: 2011.03.15
                                              1 month
 ●   Version 2.0.2 Release: 2011.04.07
             Thanks for CodeIgniter Reactor


2011.04.17                                          19
MVC Architecture
             Database                    LAYOUT

             MODEL                       View




                          Controller




                           ROUTES

                         WEB SERVER



                        Client BROWSER
2011.04.17                                        20
MVC
              View (views/product.php)
                <html>
      View      <body>
                <p>Product Count:<?=$count?></p>
                </body>
                </html>
              Controller (controllers/product.php)
                function showProduct($id) {
                  $this->load->model(“product”);
 Controller       $count = $this->product->getCount($id);
                  $data[‘count’] = $count;
                  $this->load->view(“product”, $data);
                }

              Model (controllers/product.php)
                function getCount($id) {
                  $this->db->where(“id”, $id);
                  $this->db->from(“my_product”);
     Model        $query = $this->db->get();
                  return $->num_rows();
                }
2011.04.17                                                  21
Application Flow Of CodeIgniter




             CodeIgniter Plugin 已經在 2.0.X 被移除
2011.04.17                                      22
How to install CodeIgniter ?



2011.04.17                         23
System Requirement 系統需求
 ●   System
      ●      Windows, Linux(Fedora, Ubuntu), FreeBSD
 ●   PHP
      ●      Version 5.1.6 (not support PHP 4 for 2.0.x 系列 )
      ●      如果要支援 PHP 4 請使用 CI 1.7.x 系列
 ●   Database
      ●      MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle,
             SQLite, 以及 ODBC

2011.04.17                                                     24
以最短時間內安裝完成
 ●   Windows + Appserv ( 推薦 )
 ●   FreeBSD + Ports (www/codeigniter-devel)
 ●   Ubuntu + apt ( 完成 AMP 架構 )




2011.04.17                                     25
以最快速度安裝好 CodeIgniter 環境
(Windows + Appserv + CodeIgniter 2.0)



 2011.04.17                        26
Windows 環境安裝步驟
 ●   請先準備好 Windows OS (XP, Win 7)
 ●   下載 CodeIgniter 2.0.X 安裝檔
      ●      請參考 http://www.codeigniter.org.tw
 ●   解壓縮到 C 槽 Appserv/www 目錄
 ●   重新命名目錄
      ●      CodeIgniter_2.0.2 → CodeIgniter
 ●   打開瀏覽器鍵入
      ●      http://localhost/CodeIgniter/
2011.04.17                                       27
請大家先安裝好 CodeIgniter 環境




2011.04.17                  28
完成畫面




2011.04.17          29
CodeIgniter 目錄架構
 ●   application/
      ●      專案目錄 ( 存放所有前端後端程式碼 )
 ●   system/
      ●      CodeIgniter 核心目錄 ( 不需要更動 )
 ●   user_guide/
      ●      CodeIgniter Document ( 可以看中文版 )
 ●   index.php


2011.04.17                                     30
根目錄 Index.php 設定
 ●   $system_path : 系統核心目錄設定
 ●   $application_folder : 專案目錄設定
 ●   如果多專案,可以將核心目錄共用




2011.04.17                          31
專案目錄 application
 ●   application
      ●      Cache ( 網站快取檔案 )
      ●      Config ( 網站設定檔 : 資料庫 ....)
      ●      Controllers ( 所有控制 )
      ●      Libraries ( 共用函式 )
      ●      Models ( 資料庫檔案 )
      ●      Views ( 前端 html, css)



2011.04.17                                32
CodeIgniter URL
 ●   example.com/index.php/news/show/article_id
      ●      news 代表 Controller
      ●      show 代表 Controller 類別內的函式或 Method
      ●      article_id 代表 ID 或任何參數傳入給 Method


 ●   範例 : 比對以前設計
     example.com/news.php?mode=show&id=1


2011.04.17                                        33
移除 index.php 檔案
 ●   mod_rewrite 功能
      ●      利用 .htaccess 移除 URL 所包含的 index.php




2011.04.17                                        34
任意副檔名
 ●   CodeIgniter/index.php/welcome/index
 ●   可以在 index 後面任意加上副檔名
 ●   範例 :
      ●      codeIgniter/index.php/welcome/index.html
      ●      codeIgniter/index.php/welcome/index.htm
      ●      codeIgniter/index.php/welcome/index.py
 ●   修改 application/config/config.php
      ●      $config['url_suffix'] = '.py';

2011.04.17                                              35
Controllers
 ●   example.com/index.php/blog/
 ●   直接找到 application/controllers/blog.php

     <?php
     class Blog extends CI_Controller {

          public function index()
          {
            echo 'Hello World!';
          }
     }
     ?>
2011.04.17                                   36
Controller Functions
 ●    example.com/index.php/blog/index
 ●    example.com/index.php/blog/comments
     <?php
     class Blog extends CI_Controller {

          public function index()
          {
             echo 'Hello World!';
          }

          public function comments()
          {
             echo 'Look at this!';
          }
     }
     ?>
2011.04.17                                  37
類別建構子
      <?php
      class Blog extends CI_Controller {

             public function __construct()
             {
               parent::__construct();
                 // Your own constructor code
               $this->load->helper('url');
               $this->load->library('email');
             }
      }
      ?>

2011.04.17                                      38
Default Controller
 ●   example.com/index.php/welcome/index
 ●   example.com/

 ●   修改設定檔
      ●      application/config/routes.php
      ●      $route['default_controller'] = 'welcome';




2011.04.17                                               39
作業
 ●   請新增 Blog Controller
      ●      裏面包含兩個 method
      ●      Index and person
 ●   Index method
      ●      傳入自己的 ID 比如是 appleboy
      ●      畫面會顯示 : Hi appleboy, 歡迎來到 CodeIgniter
 ●   person method
      ●      產生 3 個 input text (name, company, phone)
      ●      帶入 3 個參數可以分別寫入上述欄位
2011.04.17                                              40
Views
 ●   檔案放置 application/views/
 ●   任意新增檔案 blogview.php
         <html>
         <head>
         <title>My Blog</title>
         </head>
         <body>
              <h1>Welcome to my Blog!</h1>
         </body>
         </html>


2011.04.17                                   41
如何載入 View
 ●   $this->load->view('name');
 ●   $this->load->view('folder_name/file_name');
     <?php
     class Blog extends CI_Controller {

             function index()
             {
                $this->load->view('blogview');
             }
     }
     ?>
     URL: example.com/index.php/blog/

2011.04.17                                         42
新增動態資料到 View
 ●   $this->load->view('name', $data);
 ●   $data 陣列格式如下
      $data = array(
               'title' => 'My Title',
               'heading' => 'My Heading',
               'message' => 'My Message'
            );

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



2011.04.17                                    43
Views 接受 $data 顯示資料
 ●   顯示格式如下

      <html>
      <head>
      <title><?php echo $title;?></title>
      </head>
      <body>
           <h1><?php echo $heading;?></h1>
           <hr>
           <div><?php echo $message;?></div>
      </body>
      </html>


2011.04.17                                     44
顯示迴圈
 ●   Controller 程式
       <?php
       class Blog extends CI_Controller {

         function index()
         {
            $data['todo_list'] = array('Clean House' , 'Call
       Mom' , 'Run Errands');
            $data['title'] = "My Real Title";
            $data['heading'] = "My Real Heading";

                 $this->load->view('blogview', $data);
             }
       }
       ?>
2011.04.17                                                     45
<html>
<head>
   <title><?php echo $title;?></title>
</head>
<body>
   <h1><?php echo $heading;?></h1>

      <h3>My Todo List</h3>

      <ul>
      <?php foreach($todo_list as $item):?>

             <li><?php echo $item;?></li>

      <?php endforeach;?>
      </ul>

</body>
</html>
2011.04.17                                    46
將 views 存到變數
 ●   用途 : 常常用在 AJAX (demo)
 ●   $string = $this->load->view('myfile', $data, TRUE);
 ●   將第 3 個參數設定為 true
 ●   範例如下
      $string = $this->load->view('blogview', $data, TRUE);
      echo $string;




2011.04.17                                                 47
作業
 ●   將 blog 的 person 此 method 所有 html 變成
     用 $this->load->view 方式顯示
 ●   產生陣列顯示在 view 如下
      ●      CodeIgniter 非常好玩
      ●      CodeIgniter 是開放軟體
      ●      CodeIgniter 非常快速
      ●      CodeIgniter 非常輕量



2011.04.17                             48
Library and helper
 ●   載入輔助函數
      ●      $this->load->helper('url');
 ●   載入多個輔助函數
      ●      $this->load->helper( array('url', 'email') );
 ●   載入 Library 類別
      ●      $this->load->library('email');
 ●   載多個 Library 類別
      ●      $this->load->library(array('email', 'pagination'));
 ●   系統預設載入類別 (Ex: input ….);
2011.04.17                                                         49
Input Library
 ●   POST, COOKIE, 或 SERVER 資料
      ●      $this->input->post()
      ●      $this->input->cookie()
      ●      $this->input->server()
 ●   取得 POST 資料
      ●      $this->input->post('title');
      ●      $this->input->post('title', TRUE);
              –   第 2 參數使用 XSS 過濾器處理 POST 資料


2011.04.17                                        50
作業
 ●   將 person 資料填入之後送出到 add_person
     此 method ,並且將三欄位資料顯示於畫面




2011.04.17                           51
資料庫模型 (Models)
 ●   修改 application/config/database.php
      ●      $db['default']['hostname'] = 'localhost';
      ●      $db['default']['username'] = 'XXXXXX';
      ●      $db['default']['password'] = 'XXXXXX';
      ●      $db['default']['database'] = 'XXXXXX';
      ●      $db['default']['dbdriver'] = 'mysql';




2011.04.17                                               52
Model 介紹
 ●   application/models/blog_model.php

      class Blog_model extends CI_Model {

             function __construct()
             {
                parent::__construct();
             }
      }




2011.04.17                                  53
簡單 model 寫法
   class Blog_model extends CI_Model {

       function __construct()
       {
         // 呼叫模型 (Model) 的建構函數
         parent::__construct();
       }

       function get_last_ten_entries()
       {
         …............
       }

       function insert_entry()
       {
         …...............
       }
   }
2011.04.17                               54
載入 Model
 ●   請先務必載入 database 才可使用 model
      ●      $this->load->database();
 ●   $this->load->model('blog_model');
      ●      使用如下
             –   $this->blog_model->get_last_ten_entries();
             –   $this->blog_model->insert_entry();




2011.04.17                                                    55
快速入門
 ●   $query = $this->db->query("YOUR QUERY");
      ●      $query = $this->db->query('SELECT name, title,
             email FROM my_table');
             foreach ($query->result() as $row)
             {
                echo $row->title;
                echo $row->name;
                echo $row->email;
             }


2011.04.17                                                    56
Database Active Record
 ●   查詢資料 (Selecting)
 ●   新增資料 (Inserting)
 ●   更新資料 (Updating)
 ●   刪除資料 (Deleting)




2011.04.17                            57
新增資料 Insert
$data = array(
   'title' => 'my title' ,
   'name' => 'my name' ,
   'date' => '2011.04.16'
);

$this->db->insert('table_name', $data);

產生 :INSERT INTO table_name (title, name, date)
VALUES ('my title', 'my name', '2011.04.16')

2011.04.17                                  58
作業
 ●   請新增資料庫 blog
 ●   設定 application/config/database.php 資訊
 ●   新增資料表 blog_author
      ●      author_id, authod_name, author_company,
             author_phone
 ●   新增 blog_model and add_person method
 ●   利用 Controller 呼叫 blog model 新增資料


2011.04.17                                             59
查詢資料 Selecting
 ●   $query = $this->db->get('table_name');
      ●      產生 :SELECT * FROM mytable
 ●   $query = $this->db->get('mytable', 10, 20);
      ●      產生 :SELECT * FROM mytable LIMIT 20, 10




2011.04.17                                            60
●   利用 select + get 查詢
      ●      $this->db->select('title, content, date');
      ●      $query = $this->db->get('mytable');
 ●   利用 select + from + get 查詢
      ●      $this->db->select('title, content, date');
      ●      $this->db->from('mytable');
      ●      $query = $this->db->get();
              –   SELECT title, content, date FROM mytable
 ●   加上判斷條件 where
      ●      $this->db->where('name', $name);
      ●      $this->db->where('title', $title);
      ●      $this->db->where('status', $status);
2011.04.17                                                   61
查詢 Result 回傳值
 ●   多筆資料 ( 常用 )
      ●      result()
      ●      result_array()
 ●   單筆資料
      ●      row()
      ●      row_array()




2011.04.17                              62
多筆資料輸出 ( 物件方式 )
   $query = $this->db->query("YOUR QUERY");

   if ($query->num_rows() > 0)
   {
       foreach ($query->result() as $row)
       {
          echo $row->title;
          echo $row->name;
          echo $row->body;
       }
   }
2011.04.17                                    63
多筆資料輸出 ( 陣列方式 )
   $query = $this->db->query("YOUR QUERY");

   if ($query->num_rows() > 0)
   {
       foreach ($query->result_array() as $row)
       {
          echo $row['title'];
          echo $row['name'];
          echo $row['body'];
       }
   }
2011.04.17                                        64
單筆資料輸出 ( 物件方式 )
    $query = $this->db->query("YOUR QUERY");

    if ($query->num_rows() > 0)
    {
        $row = $query->row();

             echo $row->title;
             echo $row->name;
             echo $row->body;
    }

2011.04.17                                     65
單筆資料輸出 ( 陣列方式 )
    $query = $this->db->query("YOUR QUERY");

    if ($query->num_rows() > 0)
    {
        $row = $query->row_array();

             echo $row['title'];
             echo $row['name'];
             echo $row['body'];
    }

2011.04.17                                     66
作業
 ●   將資料表 blog_author 所有資料顯示出來
 ●   新增 blog_model get_all_data method
      ●      將所有資料回傳給 blog controller
      ●      將資料傳到 view 條列式 顯示出來




2011.04.17                               67
更新資料 (Updating)
   $data = array(
               'title' => $title,
               'name' => $name,
               'date' => $date
          );

   $this->db->where('id', $id);
   $this->db->update('mytable', $data);

   產生 : UPDATE mytable SET title = '{$title}', name =
   '{$name}', date = '{$date}' WHERE id = $id



2011.04.17                                              68
作業
 ●   在 person 顯示畫面加入”編輯”連結
 ●   點選之後會顯示該筆資料
 ●   修改完成之後,按下儲存可以覆蓋該筆資料




2011.04.17                   69
刪除資料 (Deleting)
 ●   $this->db->where('id', $id);
 ●   $this->db->delete('mytable');
      ●      產生 : DELETE FROM mytable WHERE id = $id




2011.04.17                                             70
作業
 ●   在 person 顯示畫面加入”刪除”連結
 ●   點選該連結會刪除該筆資料,並且返回 person
     顯示畫面




2011.04.17                      71
join 兩表格
   $this->db->select('*');
   $this->db->from('blogs');
   $this->db->join('comments', 'comments.id = blogs.id', 'left');

   $query = $this->db->get();

   產生 :SELECT * FROM blogs LEFT JOIN comments ON
   comments.id = blogs.id




2011.04.17                                                          72
期末作業
 ●   實做部落格發文系統
      ●      部落格作者資料表 blog_author
      ●      發表文章時,可以下拉選擇作者 blog_author
      ●      可以新增刪除修改顯示文章
             –   請新增 blog_post 資料表
                  ●   post_id, author_id, post_title, post_data, add_time, edit_time
             –   用 join 方式將作者顯示在畫面




2011.04.17                                                                             73
今天課程就到這裡
             如果有任何問題都可以發問
             大家辛苦了 , 期末作業要交喔




2011.04.17                     74
Thank You




2011.04.17               75

Mais conteúdo relacionado

Mais procurados

Laravel installfest 工作坊 投影片
Laravel installfest 工作坊 投影片Laravel installfest 工作坊 投影片
Laravel installfest 工作坊 投影片Shengyou Fan
 
Web development with zend framework
Web development with zend frameworkWeb development with zend framework
Web development with zend frameworkthinkinlamp
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定Shengyou Fan
 
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者Shengyou Fan
 
應用程式部署
應用程式部署應用程式部署
應用程式部署Shengyou Fan
 
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向Shengyou Fan
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理Shengyou Fan
 
Package安裝與使用
Package安裝與使用Package安裝與使用
Package安裝與使用Shengyou Fan
 
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境Shengyou Fan
 
ASP.NET MVC 5 新功能探索
ASP.NET MVC 5 新功能探索ASP.NET MVC 5 新功能探索
ASP.NET MVC 5 新功能探索Will Huang
 
PHP CodeIgniter 框架之美
PHP CodeIgniter 框架之美PHP CodeIgniter 框架之美
PHP CodeIgniter 框架之美Amigo 陳兆祥
 
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web frameworkBo-Yi Wu
 
給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發Weizhong Yang
 
Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用Shengyou Fan
 
Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南Shengyou Fan
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署Shengyou Fan
 

Mais procurados (20)

Laravel installfest 工作坊 投影片
Laravel installfest 工作坊 投影片Laravel installfest 工作坊 投影片
Laravel installfest 工作坊 投影片
 
Web development with zend framework
Web development with zend frameworkWeb development with zend framework
Web development with zend framework
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
 
應用程式部署
應用程式部署應用程式部署
應用程式部署
 
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
Package安裝與使用
Package安裝與使用Package安裝與使用
Package安裝與使用
 
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
 
ASP.NET MVC 5 新功能探索
ASP.NET MVC 5 新功能探索ASP.NET MVC 5 新功能探索
ASP.NET MVC 5 新功能探索
 
CRUD 綜合運用
CRUD 綜合運用CRUD 綜合運用
CRUD 綜合運用
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 
驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
PHP CodeIgniter 框架之美
PHP CodeIgniter 框架之美PHP CodeIgniter 框架之美
PHP CodeIgniter 框架之美
 
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web framework
 
給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發
 
Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用
 
Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署
 

Destaque

NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Piece Chao
 
Introduction to node.js GDD
Introduction to node.js GDDIntroduction to node.js GDD
Introduction to node.js GDDSudar Muthu
 
Complete MVC on NodeJS
Complete MVC on NodeJSComplete MVC on NodeJS
Complete MVC on NodeJSHüseyin BABAL
 
COSCUP 2016 - ROS + Gazebo機器人模擬器工作坊
COSCUP 2016 - ROS + Gazebo機器人模擬器工作坊COSCUP 2016 - ROS + Gazebo機器人模擬器工作坊
COSCUP 2016 - ROS + Gazebo機器人模擬器工作坊Po-Jen Lai
 
MakerBoard: MT7688 Emulator
MakerBoard: MT7688 EmulatorMakerBoard: MT7688 Emulator
MakerBoard: MT7688 EmulatorFred Chien
 
那些 Functional Programming 教我的事
那些 Functional Programming 教我的事那些 Functional Programming 教我的事
那些 Functional Programming 教我的事Wen-Tien Chang
 

Destaque (7)

NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手
 
Introduction to node.js GDD
Introduction to node.js GDDIntroduction to node.js GDD
Introduction to node.js GDD
 
Complete MVC on NodeJS
Complete MVC on NodeJSComplete MVC on NodeJS
Complete MVC on NodeJS
 
COSCUP 2016 - ROS + Gazebo機器人模擬器工作坊
COSCUP 2016 - ROS + Gazebo機器人模擬器工作坊COSCUP 2016 - ROS + Gazebo機器人模擬器工作坊
COSCUP 2016 - ROS + Gazebo機器人模擬器工作坊
 
MakerBoard: MT7688 Emulator
MakerBoard: MT7688 EmulatorMakerBoard: MT7688 Emulator
MakerBoard: MT7688 Emulator
 
那些 Functional Programming 教我的事
那些 Functional Programming 教我的事那些 Functional Programming 教我的事
那些 Functional Programming 教我的事
 

Semelhante a CodeIgniter 2.0.X

Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.xIntroduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.xBo-Yi Wu
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Gelis Wu
 
rebar erlang 2
rebar erlang 2rebar erlang 2
rebar erlang 2致远 郑
 
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC
 
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC
 
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4twMVC
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型Jackson Tian
 
PHP & AppServ
PHP & AppServPHP & AppServ
PHP & AppServHt Wang
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展江華 奚
 
2012 php conf slide PIXNET 如何使用 php
2012 php conf slide   PIXNET 如何使用 php2012 php conf slide   PIXNET 如何使用 php
2012 php conf slide PIXNET 如何使用 phpronnywang_tw
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中Andrew Wu
 
大话Php之性能
大话Php之性能大话Php之性能
大话Php之性能liqiang xu
 
4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdfssuserd6c7621
 
Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1modou li
 
富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用luolonghao
 
.NET 7 升級教戰手冊_V1.0.pdf
.NET 7 升級教戰手冊_V1.0.pdf.NET 7 升級教戰手冊_V1.0.pdf
.NET 7 升級教戰手冊_V1.0.pdfGelis Wu
 
使用 ASP.NET 5 實戰開發雲端應用程式
使用 ASP.NET 5 實戰開發雲端應用程式使用 ASP.NET 5 實戰開發雲端應用程式
使用 ASP.NET 5 實戰開發雲端應用程式Will Huang
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Wade Huang
 

Semelhante a CodeIgniter 2.0.X (20)

Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.xIntroduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.x
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
 
rebar erlang 2
rebar erlang 2rebar erlang 2
rebar erlang 2
 
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸
 
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
 
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
 
敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
PHP & AppServ
PHP & AppServPHP & AppServ
PHP & AppServ
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展
 
2012 php conf slide PIXNET 如何使用 php
2012 php conf slide   PIXNET 如何使用 php2012 php conf slide   PIXNET 如何使用 php
2012 php conf slide PIXNET 如何使用 php
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中
 
大话Php之性能
大话Php之性能大话Php之性能
大话Php之性能
 
4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf
 
Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1
 
富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用
 
.NET 7 升級教戰手冊_V1.0.pdf
.NET 7 升級教戰手冊_V1.0.pdf.NET 7 升級教戰手冊_V1.0.pdf
.NET 7 升級教戰手冊_V1.0.pdf
 
使用 ASP.NET 5 實戰開發雲端應用程式
使用 ASP.NET 5 實戰開發雲端應用程式使用 ASP.NET 5 實戰開發雲端應用程式
使用 ASP.NET 5 實戰開發雲端應用程式
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
 

Mais de Bo-Yi Wu

Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Bo-Yi Wu
 
用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構Bo-Yi Wu
 
Job Queue in Golang
Job Queue in GolangJob Queue in Golang
Job Queue in GolangBo-Yi Wu
 
Golang Project Layout and Practice
Golang Project Layout and PracticeGolang Project Layout and Practice
Golang Project Layout and PracticeBo-Yi Wu
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub ActionsBo-Yi Wu
 
Drone 1.0 Feature
Drone 1.0 FeatureDrone 1.0 Feature
Drone 1.0 FeatureBo-Yi Wu
 
Drone CI/CD Platform
Drone CI/CD PlatformDrone CI/CD Platform
Drone CI/CD PlatformBo-Yi Wu
 
GraphQL IN Golang
GraphQL IN GolangGraphQL IN Golang
GraphQL IN GolangBo-Yi Wu
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介Bo-Yi Wu
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous IntegrationBo-Yi Wu
 
Gorush: A push notification server written in Go
Gorush: A push notification server written in GoGorush: A push notification server written in Go
Gorush: A push notification server written in GoBo-Yi Wu
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台Bo-Yi Wu
 
用 Go 語言 打造微服務架構
用 Go 語言打造微服務架構用 Go 語言打造微服務架構
用 Go 語言 打造微服務架構Bo-Yi Wu
 
Introduction to Gitea with Drone
Introduction to Gitea with DroneIntroduction to Gitea with Drone
Introduction to Gitea with DroneBo-Yi Wu
 
運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率Bo-Yi Wu
 
用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務Bo-Yi Wu
 
用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps Bot用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps BotBo-Yi Wu
 
A painless self-hosted Git service: Gitea
A painless self-hosted Git service: GiteaA painless self-hosted Git service: Gitea
A painless self-hosted Git service: GiteaBo-Yi Wu
 
Write microservice in golang
Write microservice in golangWrite microservice in golang
Write microservice in golangBo-Yi Wu
 
用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式Bo-Yi Wu
 

Mais de Bo-Yi Wu (20)

Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
 
用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構
 
Job Queue in Golang
Job Queue in GolangJob Queue in Golang
Job Queue in Golang
 
Golang Project Layout and Practice
Golang Project Layout and PracticeGolang Project Layout and Practice
Golang Project Layout and Practice
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
Drone 1.0 Feature
Drone 1.0 FeatureDrone 1.0 Feature
Drone 1.0 Feature
 
Drone CI/CD Platform
Drone CI/CD PlatformDrone CI/CD Platform
Drone CI/CD Platform
 
GraphQL IN Golang
GraphQL IN GolangGraphQL IN Golang
GraphQL IN Golang
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous Integration
 
Gorush: A push notification server written in Go
Gorush: A push notification server written in GoGorush: A push notification server written in Go
Gorush: A push notification server written in Go
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
 
用 Go 語言 打造微服務架構
用 Go 語言打造微服務架構用 Go 語言打造微服務架構
用 Go 語言 打造微服務架構
 
Introduction to Gitea with Drone
Introduction to Gitea with DroneIntroduction to Gitea with Drone
Introduction to Gitea with Drone
 
運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率
 
用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務
 
用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps Bot用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps Bot
 
A painless self-hosted Git service: Gitea
A painless self-hosted Git service: GiteaA painless self-hosted Git service: Gitea
A painless self-hosted Git service: Gitea
 
Write microservice in golang
Write microservice in golangWrite microservice in golang
Write microservice in golang
 
用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式
 

CodeIgniter 2.0.X

  • 1. CodeIgniter PHP Framework 2.0.X Appleboy (Bo-Yi Wu) 2011.04.16 2011.04.17 1
  • 2. 內容皆採用 創用 CC 姓名標示 - 相 同方式分享 3.0 台灣 授權條款 2011.04.17 2
  • 3. 感謝 ● OSSF 自由軟體鑄造場工作坊 ● KaLUG 社群 ● 現場所有工作人員或聽眾 2011.04.17 3
  • 5. 這份投影片適合 PHP 初學者 及尚未使用過 Framework 有幫助 ( 熟悉 MVC 的長輩們就不用聽這些了 ) 2011.04.17 5
  • 6. 今天來推廣 CodeIgniter PHP Framework 教大家如何快速開發網站 不必一個人辛苦默默從”無 ”寫到有 2011.04.17 6
  • 7. Who Am I Bo-Yi Wu (appleboy) CodeIgniter 台灣繁體中文手冊翻譯 CodeIgniter 台灣繁體中文網站及討論區 CodeIgniter PHP Plurk API (github) CodeIgniter Google Short URL API (github) Contact appleboy.tw At gmail.com http://plurk.com/appleboy46 http://blog.wu-boy.com Now 正文科技有限公司 (Software Department) - Linux Kernel Driver, Soho Router Integration - Android G-Sensor Driver 2011.04.17 7
  • 9. Evolution of Web Development 最新消息 最新消息 News.php 關於我們 關於我們 About.php 公司網站 公司網站 產品資訊 產品資訊 Product.php 聯絡我們 聯絡我們 Contact.php 2011.04.17 9
  • 10. Evolution of Web Development 新增新聞 新增新聞 Add Delete 刪除新聞 刪除新聞 MySQL News.php Edit 修改新聞 修改新聞 http://xxxx.com.tw/news.php?mode=[add|delete|edit]&news_id=xxxx 2011.04.17 10
  • 11. $action = (isset($_GET['mode'])) ? $_GET['mode'] : 'add'; switch($action) { case 'add': echo 'add news'; $sql = “insert into xxxx values('aa', 'bb')”; case 'edit': echo 'edit news'; $sql = “update xxx set title = 'title name' where id = '1'”; case 'delete': echo 'delete news'; $sql = “delete xxx where id = '1'”; } 2011.04.17 11
  • 12. 一個模組 一個檔案 ● SQL 語法 , CSS html, PHP 全部寫在同一檔案 ● 維護困難 ● 擴充性差 ● 程式雜亂 ● 無法交接 ● 系統漏洞 SQL Injection ● 開發速度慢 ● 後輩愈看愈不爽,砍掉重練?太難維護 – 後後輩更不爽,又砍掉? ● ….......................... 2011.04.17 12
  • 13. Why use PHP Framework? 2011.04.17 13
  • 14. 為了加快網站開發速度及維護 模組化套件 , 方便閱讀程式碼 所以 PHP Framework 誕生 2011.04.17 14
  • 17. Why Choose CodeIgniter ? 1. Small ( 非常小 ) 2. Fast ( 非常快速,想用什麼就 load 什麼 ) 3. Simple ( 程式架構容易 ) 4. High Performance (CI vs ZF vs CakePHP) 5. Nearly Zero Configuration ( 五分鐘內搞定 ) 6. Cleaner Code ( 方便學習擴充 Framework) 7. 由我本人親自支援 ( 歡迎討論區留言 ) 2011.04.17 17
  • 18. What is CodeIgniter ? Open Source Web Application Framework MVC (Model View Controller) Architecture 2011.04.17 18
  • 19. CodeIgniter 版本演進 ● Version 1.7.1 Release: 2009.02.10 ● Version 1.7.2 Release: 2009.11.11 ● Version 1.7.3 Security patch ● Version 2.0.0 Release: 2011.01.28 2 month ● Version 2.0.1 Release: 2011.03.15 1 month ● Version 2.0.2 Release: 2011.04.07 Thanks for CodeIgniter Reactor 2011.04.17 19
  • 20. MVC Architecture Database LAYOUT MODEL View Controller ROUTES WEB SERVER Client BROWSER 2011.04.17 20
  • 21. MVC View (views/product.php) <html> View <body> <p>Product Count:<?=$count?></p> </body> </html> Controller (controllers/product.php) function showProduct($id) { $this->load->model(“product”); Controller $count = $this->product->getCount($id); $data[‘count’] = $count; $this->load->view(“product”, $data); } Model (controllers/product.php) function getCount($id) { $this->db->where(“id”, $id); $this->db->from(“my_product”); Model $query = $this->db->get(); return $->num_rows(); } 2011.04.17 21
  • 22. Application Flow Of CodeIgniter CodeIgniter Plugin 已經在 2.0.X 被移除 2011.04.17 22
  • 23. How to install CodeIgniter ? 2011.04.17 23
  • 24. System Requirement 系統需求 ● System ● Windows, Linux(Fedora, Ubuntu), FreeBSD ● PHP ● Version 5.1.6 (not support PHP 4 for 2.0.x 系列 ) ● 如果要支援 PHP 4 請使用 CI 1.7.x 系列 ● Database ● MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite, 以及 ODBC 2011.04.17 24
  • 25. 以最短時間內安裝完成 ● Windows + Appserv ( 推薦 ) ● FreeBSD + Ports (www/codeigniter-devel) ● Ubuntu + apt ( 完成 AMP 架構 ) 2011.04.17 25
  • 26. 以最快速度安裝好 CodeIgniter 環境 (Windows + Appserv + CodeIgniter 2.0) 2011.04.17 26
  • 27. Windows 環境安裝步驟 ● 請先準備好 Windows OS (XP, Win 7) ● 下載 CodeIgniter 2.0.X 安裝檔 ● 請參考 http://www.codeigniter.org.tw ● 解壓縮到 C 槽 Appserv/www 目錄 ● 重新命名目錄 ● CodeIgniter_2.0.2 → CodeIgniter ● 打開瀏覽器鍵入 ● http://localhost/CodeIgniter/ 2011.04.17 27
  • 30. CodeIgniter 目錄架構 ● application/ ● 專案目錄 ( 存放所有前端後端程式碼 ) ● system/ ● CodeIgniter 核心目錄 ( 不需要更動 ) ● user_guide/ ● CodeIgniter Document ( 可以看中文版 ) ● index.php 2011.04.17 30
  • 31. 根目錄 Index.php 設定 ● $system_path : 系統核心目錄設定 ● $application_folder : 專案目錄設定 ● 如果多專案,可以將核心目錄共用 2011.04.17 31
  • 32. 專案目錄 application ● application ● Cache ( 網站快取檔案 ) ● Config ( 網站設定檔 : 資料庫 ....) ● Controllers ( 所有控制 ) ● Libraries ( 共用函式 ) ● Models ( 資料庫檔案 ) ● Views ( 前端 html, css) 2011.04.17 32
  • 33. CodeIgniter URL ● example.com/index.php/news/show/article_id ● news 代表 Controller ● show 代表 Controller 類別內的函式或 Method ● article_id 代表 ID 或任何參數傳入給 Method ● 範例 : 比對以前設計 example.com/news.php?mode=show&id=1 2011.04.17 33
  • 34. 移除 index.php 檔案 ● mod_rewrite 功能 ● 利用 .htaccess 移除 URL 所包含的 index.php 2011.04.17 34
  • 35. 任意副檔名 ● CodeIgniter/index.php/welcome/index ● 可以在 index 後面任意加上副檔名 ● 範例 : ● codeIgniter/index.php/welcome/index.html ● codeIgniter/index.php/welcome/index.htm ● codeIgniter/index.php/welcome/index.py ● 修改 application/config/config.php ● $config['url_suffix'] = '.py'; 2011.04.17 35
  • 36. Controllers ● example.com/index.php/blog/ ● 直接找到 application/controllers/blog.php <?php class Blog extends CI_Controller { public function index() { echo 'Hello World!'; } } ?> 2011.04.17 36
  • 37. Controller Functions ● example.com/index.php/blog/index ● example.com/index.php/blog/comments <?php class Blog extends CI_Controller { public function index() { echo 'Hello World!'; } public function comments() { echo 'Look at this!'; } } ?> 2011.04.17 37
  • 38. 類別建構子 <?php class Blog extends CI_Controller { public function __construct() { parent::__construct(); // Your own constructor code $this->load->helper('url'); $this->load->library('email'); } } ?> 2011.04.17 38
  • 39. Default Controller ● example.com/index.php/welcome/index ● example.com/ ● 修改設定檔 ● application/config/routes.php ● $route['default_controller'] = 'welcome'; 2011.04.17 39
  • 40. 作業 ● 請新增 Blog Controller ● 裏面包含兩個 method ● Index and person ● Index method ● 傳入自己的 ID 比如是 appleboy ● 畫面會顯示 : Hi appleboy, 歡迎來到 CodeIgniter ● person method ● 產生 3 個 input text (name, company, phone) ● 帶入 3 個參數可以分別寫入上述欄位 2011.04.17 40
  • 41. Views ● 檔案放置 application/views/ ● 任意新增檔案 blogview.php <html> <head> <title>My Blog</title> </head> <body> <h1>Welcome to my Blog!</h1> </body> </html> 2011.04.17 41
  • 42. 如何載入 View ● $this->load->view('name'); ● $this->load->view('folder_name/file_name'); <?php class Blog extends CI_Controller { function index() { $this->load->view('blogview'); } } ?> URL: example.com/index.php/blog/ 2011.04.17 42
  • 43. 新增動態資料到 View ● $this->load->view('name', $data); ● $data 陣列格式如下 $data = array( 'title' => 'My Title', 'heading' => 'My Heading', 'message' => 'My Message' ); $this->load->view('blogview', $data); 2011.04.17 43
  • 44. Views 接受 $data 顯示資料 ● 顯示格式如下 <html> <head> <title><?php echo $title;?></title> </head> <body> <h1><?php echo $heading;?></h1> <hr> <div><?php echo $message;?></div> </body> </html> 2011.04.17 44
  • 45. 顯示迴圈 ● Controller 程式 <?php class Blog extends CI_Controller { function index() { $data['todo_list'] = array('Clean House' , 'Call Mom' , 'Run Errands'); $data['title'] = "My Real Title"; $data['heading'] = "My Real Heading"; $this->load->view('blogview', $data); } } ?> 2011.04.17 45
  • 46. <html> <head> <title><?php echo $title;?></title> </head> <body> <h1><?php echo $heading;?></h1> <h3>My Todo List</h3> <ul> <?php foreach($todo_list as $item):?> <li><?php echo $item;?></li> <?php endforeach;?> </ul> </body> </html> 2011.04.17 46
  • 47. 將 views 存到變數 ● 用途 : 常常用在 AJAX (demo) ● $string = $this->load->view('myfile', $data, TRUE); ● 將第 3 個參數設定為 true ● 範例如下 $string = $this->load->view('blogview', $data, TRUE); echo $string; 2011.04.17 47
  • 48. 作業 ● 將 blog 的 person 此 method 所有 html 變成 用 $this->load->view 方式顯示 ● 產生陣列顯示在 view 如下 ● CodeIgniter 非常好玩 ● CodeIgniter 是開放軟體 ● CodeIgniter 非常快速 ● CodeIgniter 非常輕量 2011.04.17 48
  • 49. Library and helper ● 載入輔助函數 ● $this->load->helper('url'); ● 載入多個輔助函數 ● $this->load->helper( array('url', 'email') ); ● 載入 Library 類別 ● $this->load->library('email'); ● 載多個 Library 類別 ● $this->load->library(array('email', 'pagination')); ● 系統預設載入類別 (Ex: input ….); 2011.04.17 49
  • 50. Input Library ● POST, COOKIE, 或 SERVER 資料 ● $this->input->post() ● $this->input->cookie() ● $this->input->server() ● 取得 POST 資料 ● $this->input->post('title'); ● $this->input->post('title', TRUE); – 第 2 參數使用 XSS 過濾器處理 POST 資料 2011.04.17 50
  • 51. 作業 ● 將 person 資料填入之後送出到 add_person 此 method ,並且將三欄位資料顯示於畫面 2011.04.17 51
  • 52. 資料庫模型 (Models) ● 修改 application/config/database.php ● $db['default']['hostname'] = 'localhost'; ● $db['default']['username'] = 'XXXXXX'; ● $db['default']['password'] = 'XXXXXX'; ● $db['default']['database'] = 'XXXXXX'; ● $db['default']['dbdriver'] = 'mysql'; 2011.04.17 52
  • 53. Model 介紹 ● application/models/blog_model.php class Blog_model extends CI_Model { function __construct() { parent::__construct(); } } 2011.04.17 53
  • 54. 簡單 model 寫法 class Blog_model extends CI_Model { function __construct() { // 呼叫模型 (Model) 的建構函數 parent::__construct(); } function get_last_ten_entries() { …............ } function insert_entry() { …............... } } 2011.04.17 54
  • 55. 載入 Model ● 請先務必載入 database 才可使用 model ● $this->load->database(); ● $this->load->model('blog_model'); ● 使用如下 – $this->blog_model->get_last_ten_entries(); – $this->blog_model->insert_entry(); 2011.04.17 55
  • 56. 快速入門 ● $query = $this->db->query("YOUR QUERY"); ● $query = $this->db->query('SELECT name, title, email FROM my_table'); foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->email; } 2011.04.17 56
  • 57. Database Active Record ● 查詢資料 (Selecting) ● 新增資料 (Inserting) ● 更新資料 (Updating) ● 刪除資料 (Deleting) 2011.04.17 57
  • 58. 新增資料 Insert $data = array( 'title' => 'my title' , 'name' => 'my name' , 'date' => '2011.04.16' ); $this->db->insert('table_name', $data); 產生 :INSERT INTO table_name (title, name, date) VALUES ('my title', 'my name', '2011.04.16') 2011.04.17 58
  • 59. 作業 ● 請新增資料庫 blog ● 設定 application/config/database.php 資訊 ● 新增資料表 blog_author ● author_id, authod_name, author_company, author_phone ● 新增 blog_model and add_person method ● 利用 Controller 呼叫 blog model 新增資料 2011.04.17 59
  • 60. 查詢資料 Selecting ● $query = $this->db->get('table_name'); ● 產生 :SELECT * FROM mytable ● $query = $this->db->get('mytable', 10, 20); ● 產生 :SELECT * FROM mytable LIMIT 20, 10 2011.04.17 60
  • 61. 利用 select + get 查詢 ● $this->db->select('title, content, date'); ● $query = $this->db->get('mytable'); ● 利用 select + from + get 查詢 ● $this->db->select('title, content, date'); ● $this->db->from('mytable'); ● $query = $this->db->get(); – SELECT title, content, date FROM mytable ● 加上判斷條件 where ● $this->db->where('name', $name); ● $this->db->where('title', $title); ● $this->db->where('status', $status); 2011.04.17 61
  • 62. 查詢 Result 回傳值 ● 多筆資料 ( 常用 ) ● result() ● result_array() ● 單筆資料 ● row() ● row_array() 2011.04.17 62
  • 63. 多筆資料輸出 ( 物件方式 ) $query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body; } } 2011.04.17 63
  • 64. 多筆資料輸出 ( 陣列方式 ) $query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { echo $row['title']; echo $row['name']; echo $row['body']; } } 2011.04.17 64
  • 65. 單筆資料輸出 ( 物件方式 ) $query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { $row = $query->row(); echo $row->title; echo $row->name; echo $row->body; } 2011.04.17 65
  • 66. 單筆資料輸出 ( 陣列方式 ) $query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { $row = $query->row_array(); echo $row['title']; echo $row['name']; echo $row['body']; } 2011.04.17 66
  • 67. 作業 ● 將資料表 blog_author 所有資料顯示出來 ● 新增 blog_model get_all_data method ● 將所有資料回傳給 blog controller ● 將資料傳到 view 條列式 顯示出來 2011.04.17 67
  • 68. 更新資料 (Updating) $data = array( 'title' => $title, 'name' => $name, 'date' => $date ); $this->db->where('id', $id); $this->db->update('mytable', $data); 產生 : UPDATE mytable SET title = '{$title}', name = '{$name}', date = '{$date}' WHERE id = $id 2011.04.17 68
  • 69. 作業 ● 在 person 顯示畫面加入”編輯”連結 ● 點選之後會顯示該筆資料 ● 修改完成之後,按下儲存可以覆蓋該筆資料 2011.04.17 69
  • 70. 刪除資料 (Deleting) ● $this->db->where('id', $id); ● $this->db->delete('mytable'); ● 產生 : DELETE FROM mytable WHERE id = $id 2011.04.17 70
  • 71. 作業 ● 在 person 顯示畫面加入”刪除”連結 ● 點選該連結會刪除該筆資料,並且返回 person 顯示畫面 2011.04.17 71
  • 72. join 兩表格 $this->db->select('*'); $this->db->from('blogs'); $this->db->join('comments', 'comments.id = blogs.id', 'left'); $query = $this->db->get(); 產生 :SELECT * FROM blogs LEFT JOIN comments ON comments.id = blogs.id 2011.04.17 72
  • 73. 期末作業 ● 實做部落格發文系統 ● 部落格作者資料表 blog_author ● 發表文章時,可以下拉選擇作者 blog_author ● 可以新增刪除修改顯示文章 – 請新增 blog_post 資料表 ● post_id, author_id, post_title, post_data, add_time, edit_time – 用 join 方式將作者顯示在畫面 2011.04.17 73
  • 74. 今天課程就到這裡 如果有任何問題都可以發問 大家辛苦了 , 期末作業要交喔 2011.04.17 74