benefit of codeigniter php framework

37
Benefit of CodeIgnite r PHP Framework Appleboy (Bo-Yi Wu) 2010.09.19

Upload: bo-yi-wu

Post on 20-Aug-2015

2.696 views

Category:

Technology


1 download

TRANSCRIPT

Benefit of CodeIgniter PHP Framework

Appleboy (Bo-Yi Wu)2010.09.19

吳柏毅 (Bo-Yi Wu) – Software EngineerGemtek - Wireless Broadband Anywhere ( 正文科技 )

Android Linux Kernel Driver, Switch Router embedded Linux

CodeIgniter 繁體中文手冊翻譯CodeIgniter 繁體中文網站及討論區PHP Plurk API (Google Code)

About Me

Evolution of Web Development

index.php

about.php

news.php links.php

contact.phpproduct.php

剛開始設計網站的時候……… ..

Evolution of Web Development

index.php

page.php

header.php

news.php

footer.php

當你知道每個網頁都有共同的 header 跟 footer 部份

Evolution of Web Development

index.php

Controller

Model

View

當你使用 PHP Framework 設計網站時……

Why use Framework ?

Why use Framework ?• A web application framework

– Dynamic websites– Libraries for database access– Template frameworks– Session management– Pagination function– Often promote code reuse

Many more …….

MVC Architecture

WEB SERVER

ROUTES

Controller

ViewMODEL

LAYOUTDatabase

Client BROWSER

MVCView (views/showProduct.php)

<html><body><p>Product Count:<?=$count?></p></body>

</html>Controller (controllers/product.php)

function showProduct($id) {$this->load->model(“product”);$count = $this->product->getCount($id);$data[‘count’] = $count;$this->load->view(“showProduct”, $data);

}

Model (controllers/product.php)function getCount($id) {

$this->db->where(“id”, $id);$this->db->from(“my_product”);$query = $this->db->get();return $->num_rows();

}

View

Controller

Model

Public Web Framework

Why Choose CodeIgniter• Small ( 非常小 )• Fast ( 非常快速,想用什麼就 load 什麼 )• Simple ( 非常簡易 )• Customer

– 管理者可於幾分鐘內安裝好 CI Framework– 對於初學者有豐富線上中文文件

• Cleaner Code ( 方便學習如何寫 Framework)

What is CodeIgniter????• An Open Source Web Application Framework• Nearly Zero Configuration• MVC (Model View Controller) Architecture• DB Object• Templating• Caching• Modules• Helper• Validation

How to install CodeIgniter ?

• Requirtment– Windows, FreeBSD, Linux......

•Apache, lighttpd, Nginx– PHP

•PHP 4.3.2 or Higher....– Database

•MySQL, MySQLi, MS SQL, Postgres, SQLite...

wget http://codeigniter.com/.......unzip CodeIgniter_1.7.2.zipedit

application/config/config.phpapplication/config/database.php

You can see http://localhost/ci/index.php

Application Flow Of CodeIgniterApplication Flow Of CodeIgniter

CodeIgniter URLCodeIgniter URL

http://localhost/news.php?mode=edit&id=10

http://localhost/index.php/news/edit/10

CodeIgniter Directory• system• user_guide (English Document)• index.php

設定網站 Application 目錄 ,

及 CodeIgniter 核心目錄

CodeIgniter System Directory• Application• Cache• Codeigniter• Database• ..............

Conroller, Model, Views

CodeIgniter Application Directory• Config -> 系統相關設定檔• Controllers -> 放置個人 Controller• Errors -> CI error message• Helpers -> CI Helpers• Hooks • Language -> 多國語系• Libraries -> 個人常用函式• Models -> Database 相關語法• Views -> 畫面

Controller

class News extends Controller { function __construct() {

parent::Controller();}function index(){

echo “welcome CodeIgniter”;}

}

Should be placed under “application/controllers”

Controller

class News extends Controller { function __construct() {

parent::Controller();}function index(){}function edit($id){

echo “news id is ” . $id;}

}

url: http://localhost/news/edit/10

Views

Should be placed under “application/views/index.php”

<html><title> My First CodeIgniter Project</title><body> <h1>Welcome to My CodeIgniter</h1></body></html>

ViewsCalling a VIEW from Controller

$this->load->view(‘index’);

Data Passing to a VIEW from Controller

function index() {$data = array(

‘full_name’ => ‘appleboy’,‘email’ => ‘appleboy.tw@gmail.

com’);$this->load->view(‘index’, $data);

}

Views

<html><title> ..::Personal Info::.. </title>

<body>Full Name : <?=$full_name;?><br />E-mail : <?=$email;?><br /></body></html>

ModelsModels Should be placed Under “application/models/”

class News_model extends Model { function Mlb_model() {

parent::Model(); } function get_news($id) { $this->db->select(‘news_id, news_name'); $this->db->from('project_news'); $query = $this->db->get(); return $query->result_array(); } }

Loading a Model inside a Controller

$this->load->model(‘news_model’);$data = $this->news_model->get_news();

CodeIgniter LibrariesCodeIgniter Libraries• Database ( 支援多種資料庫型態 )• File Uploading ( 檔案上傳 )• Pagination ( 分頁 )• Input and Security (SQL Injection)• Session• Form Valitation ( 表單驗證 )

How to load Libraries?Libraries?

$this->load->library(‘class name’); $this->load->library(‘validation’);

CodeIgniter HelpersCodeIgniter Helpers• Url helper

– site_url()– base_url()– anchor()– mailto()– auto_link()

• Download helper– force_download()

How to load helper?helper?

$this->load->helper(‘helper name’); $this->load->helper(‘download’);

Auto-loading Resources

Core classes found in the "libraries" folder Helper files found in the "helpers" folder Plugins found in the "plugins" folder Config files found in the "config" folder Language files found in the "language" folder Models found in the "models" folder

application/config/autoload.php

$autoload['libraries'] = array();$autoload['helper'] = array();$autoload['plugin'] = array();

CodeIgniter Online Resource• CodeIgniter Wiki ( 超多經典範例及外掛 )• 繁體中文線上文件 (http://goo.gl/RwaC)• 繁體中文討論區 (http://goo.gl/CfJi)• Google CodeIgniter ........

Thank You