當前位置:文思屋>社會工作>電腦培訓>

php知識框架總結

文思屋 人氣:2.17W

篇一:php基礎知識點總結

php知識框架總結

PHP語言基礎簡單整理

1.開始結束標記的格式只有在沒有判斷語句時才能使用。

對錶單傳遞的變數進行編碼和解碼:PHP中實現對查詢字串進行URL編碼可以通過函式urlencode()實現,該函式的使用格式如下:string urlencode(string str);對URL編碼後的查詢字串進行解碼,可以通過urldecode()函式實現,該函式的使用格式如下:string urldecode(string str);

15.PHP連線資料庫:

步驟: 一、建立連線------mssql_connect(server,uid,pwd);

二、指定database-------mssql_select_db(databasename);

三、執行sql------mssql_query($sql,$link);

四、處理記錄集-------資源型別資料,格式:bof---資料---eof

五、以特定格式讀取資料-----mssql_fetch_array()....

六、釋放相關資源、關閉連線------mssql_free_result($result);mssql_close();

16.陣列:php的陣列由鍵值和value值組成

定義:$array = array("鍵值"=>"value","鍵值"=>"value","鍵值"=>"value");如果不給鍵值賦值,預設從0開始的int值

相關函式:(1)in_array("值",陣列名); 返回bool型-----檢視陣列中是否存在某value值

(2)array_key_exists("key值",陣列名); 返回bool型-----檢視陣列中是否存在某鍵值

(3)array_keys(陣列名);---將陣列鍵值返回出來形成一個新陣列,此鍵值作為新陣列的value值

(4)array_values(陣列名);---將陣列value值返回出來形成一個新陣列,此值作為新陣列的value值

(5)key(陣列名);----返回當前指標指向的元素key值

(6)current(陣列名);----返回當前指標指向的元素value值

(7)next(陣列名);----挪動當前陣列指標到下一步

(8)reset(陣列名);----恢復陣列指標,指向第0個元素

(9)end(陣列名);----將指標挪向最後一個元素

(10)prev(陣列名);----將指標向前挪動一位

(11)foreach(陣列名 as $key=>$value)

{

$key是鍵值,$value是value值,實現陣列遍歷

}

(12)each(陣列名);----將當前陣列元素依次取出(自動挪動指標)並放到一個新的陣列中

(13)array_shift(陣列名);----返回陣列中第一個元素值

(14)array_pop(陣列名);----返回陣列最後一個元素值

(15)array_push(陣列名,value);----向陣列中追加元素

(16)array_unshift(陣列名,value);----在陣列最前面新增元素

(17)array_pad(陣列名,陣列長度,value);----向陣列中追加多個元素,對陣列副本操作,不改變原陣列,返回一個新陣列

(18)count();----返回個數

(19)array_unique(陣列名);----去掉陣列中重複部分,運算元組副本,不改變原陣列,返回新陣列

(20)sort(陣列名);----從小到大升序排列陣列value值,一般針對int型value值,返回bool型,成功返回true

(21)rsort(陣列名);----從大到小,逆序排列陣列value值

(22)array_combine(陣列1,陣列2);----將陣列1的value值作為key,陣列2的value值作為value值,形成一個新陣列

(23)array_merge(陣列1,陣列2,陣列3...);----合併多個數組,將多個數組value值依次合併,合為一個數組

(24)array_slice(陣列名,int,int);----從目標陣列擷取元素,形成一個新陣列。開始位置為第二個引數,結束位置為第三個引數。若第三個引數不寫,則預設是擷取到最後。

(25)array_splice();----用法同array_slice();但是其擷取部分從原陣列中刪除

(26)explode("字元依據",目標字串);----將字串按照一定的依據拆分成陣列

(27)implode("字元依據",目標陣列);----將陣列元素按照依據組合成一個字串

(28)range(mixed low,mixed high[number step]);----生成陣列,例:range(1,100,8);---即從1到100,每8位取一個數,組成一個數組

(29)shuffle(陣列名);----用於將陣列進行隨機排序

(30)array_sum(陣列名);----對數值型陣列元素值進行求和

(31)array_chunk(陣列名,int);----分割目標陣列,返回一個新陣列,其中陣列的每個元素都是一個一維陣列,int引數為分割成的一維陣列的長度

17.Cookie和會話控制:

Cookie是在HTTP協議下,伺服器或指令碼可以維護客戶工作站上資訊的一種方式。Cookie是由Web伺服器儲存在客戶機上的小文字檔案,它可以包含有關使用者的資訊。無論何時使用者連結到伺服器,Web站點都可以訪問Cookie資訊。

存在server端的是session,存在client端的是cookie,它們用來儲存全域性變數。 設定Cookie值:setcookie("名","值");

通過Cookie陣列取值:$_cookie["名"];

設定生成期:setcookie("名","值",time()+1800);生成期為當前時間加1800秒之後。

刪除cookie: setcookie("名","",time()-3600);中間值設定為空,並將當前時間減去3600秒。 Cookie陣列:setcookie("名[key]","值"); 使用foreach讀取。

在PHP中可以通過$_COOKIE預定義變數訪問Cookie的值。如果設定了php.ini中的register_long_arrays,那麼就能夠應用$_COOKIE和$HTTP_COOKIE_VARS;如果在php.ini中還設定了register_globals,那麼就可以在PHP中作為全域性變數使用各個Cookie值。但是,更改php.ini中的兩個檔案設定,容易對PHP的安全構成威脅,不推薦使用該方法,建議使用更新的$_COOKIE。

會話ID的傳送

會話ID的傳送有兩種方式,一種是Cookie方式,另一種是URL方式。

Cookie傳送方式:

這是最簡單的會話方式,但是有些客戶可能限制使用Cookie,如果客戶限制使用Cookie的條件下,仍要繼續工作,那就要通過其他方式來實現了。

URL傳送方式:

在該方式中,URL本身用來傳送會話,會話標誌被簡單地附加到URL的尾部,或者作為窗體中的一個變數來傳遞。例:ADD

會話ID的生成:

PHP的會話函式會自動處理ID的建立,但也可以通過手工方式建立會話ID。它必須是不容易被人猜出來的,否則有安全隱患。

一般推薦生成會話ID使用隨機數發生器函式srand(),函式宣告如下:

srand((double)microtime()*1000000);

在呼叫該函式後,要想生成一個唯一的會話ID,還必須使用下面的語句:

md5(unique(rand()));

Session會話:

建立會話的步驟:啟動一個會話,註冊會話變數,使用會話變數和登出會話變數。

(1)啟動一個會話:》通過session_start();函式建立會話,函式宣告為:bool session_start(void);

》通過設定php.ini自動建立會話:設定php.ini中的session.auto_start選項,啟用該選項即可自動建立會話(配置值改為1),但是使用該方法啟動auto_start會導致無法使用物件作為會話變數。

(2)註冊會話變數:會話變數被啟動後,全部儲存在陣列$_session中。通過陣列$_session,直接給該陣列提新增一個元素即可建立一個會話變數: $_session[session_name]=session_value;

(3)使用會話變數:

if(!empty($_session[session_name])){$myvalue=$_session[session_name]}

(4)登出會話變數:登出某個session成員:unset($_session[session_name])

登出所有會話功能:$_session=array();然後使用session_destory();函式清除會話ID。

18.字串處理:

(1)獲取字串長度:int strlen($str);

(2)將指定字串轉換成大寫:strtoupper($str);

(3)將首字母轉換成大寫:ucfirst($str);

(4)字串與HTMl相互轉換:htmlspecialchars($str);----將字串中某些特殊字元轉化成html格式

(5)去除字串的空格:trim()---去兩遍空格,ltrim()----去左邊空格,rtrim()----去右邊空格

(6)substr_count($str,"value");查詢某字元在目標字串中出現的個數

(7)strpos($str,"value");----定位字元位置,返回int

(8)防止單引號破壞sql語句:自動轉義函式:addslashes();

<?php

$str = "Is your name O'reilly?";

// 輸出:Is your name O'reilly?

echo addslashes($str);

?>

(9)擷取字串:substr($str,start_int,end_int);---return $newstr

(10)填充字串:string str_pad ( string input, int pad_length [, string pad_string [, int pad_type]] )

例:<?php

$input = "Alien";

echo str_pad($input, 10); // produces "Alien " echo str_pad($input, 10, "-=", STR_PAD_LEFT); // produces "-=-=-Alien"

echo str_pad($input, 10, "_", STR_PAD_BOTH); // produces "__Alien___"

echo str_pad($input, 6 , "___"); // produces "Alien_"

?>

(11)字串的比較:int strcmp ( string str1, string str2 )----按逐個字元的ascll碼進行比較,如果返回等於0,則相等;大於0,則str1大於str2;小於0,則str1小於str2。

(12)數字字串的格式化:string number_format ( float number [, int decimals [, string dec_point, string thousands_sep]] )

該函式可以有1個,2個,或4個引數,但不能使三個。decimals意思是取小數點後幾位,dec_point用來代替小數點,thousands_sep用來代替千位分隔符。

(13)查詢和替換:

查詢:string strstr ( string haystack, string needle )

例:<?php

$email = '[email protected]';

$domain = strstr($email, '@');

echo $domain; // prints @example.com

?>

替換:mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )----區分大小寫

篇二:php重要知識點總結(PHP網路開發必背)

PHP網站開發必用知識點總結,函式一覽,開發必背

魔術方法

__construct() 當例項化一個物件的時候,這個物件的這個方法首先被呼叫。 __destruct() 當刪除一個物件或物件操作終止的時候,呼叫該方法。

__get() 當試圖讀取一個並不存在的屬性的時候被呼叫。

__set() 當試圖向一個並不存在的屬性寫入值的時候被呼叫。

__call() 當試圖呼叫一個物件並不存在的方法時,呼叫該方法。

__toString() 當列印一個物件的時候被呼叫

__clone() 當物件被克隆時,被呼叫

__isset()

__unset()

__autoload($classname)

__sleep()

__wakeup()

系統常量

__FILE__ 當前檔名

__LINE__ 當前行數

__FUNCTION__ 當前函式名

__CLASS__ 當前類名

__METHOD__ 當前物件的方法名

PHP_OS 當前系統

PHP_VERSION php版本

DIRECTORY_SEPARATOR 根據系統決定目錄的分隔符 /

PATH_SEPARATOR 根據系統決定環境變數的目錄列表分隔符 ; :

E_ERROR 1

E_WARNING 2

E_PARSE 4

E_NOTICE 8

M_PI 3.141592

$_SERVER

$_ENV 執行環境提交至指令碼的變數

$_GET

$_POST

$_REQUEST

$_FILES

$_COOKIE

$_SESSION

$_GLOBALS

輸出

echo //Output one or more strings

print //Output a string

print_r() //列印關於變數的易於理解的資訊。

var_dump() //列印變數的相關資訊

var_export() //輸出或返回一個變數的字串表示

printf("%.1f",$num) //Output a formatted string

sprintf() //Return a formatted string

編碼轉換

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] ) iconv();

時間

date_default_timezone_set("PRC");

date("Y-m-d H:i:s");

time();

date("Y-m-d H:i:s",time()+3600)

ini_set('date.timezone', 'PRC');

msec sec microtime() 以秒返回時間戳 explode(' ', microtime())

錯誤處理

@1/0

error_reporting(E_ALL) 顯示所有錯誤

error_reporting(0)

trigger_error("Cannot divide by zero", E_USER_ERROR);

try

{

throw new Exception("執行失敗");

}

catch (Exception $ex)

{

echo $ex;

}

字串處理

string trim("eee ") trim ('ffffe','e') //ltrim rtrim

array explode(".", "fff.ff.f") 按指定字元切割

string implode(".", $array) 別名:join 把陣列值資料按指定字元連線起來

array str_split("eeeeeeee",4) 按長度切割字串

array split("-","fff-ff-f") 按指定字元切割

int strlen('ffffffff') 取字元長度

string substr ( string $string , int $start [, int $length ] )

substr($a,-2, 2) 擷取字元

int substr_count($text, 'is') 字串出現的次數

string strstr($text, 'h') 第一次出現h後的字串 //別名:strchr

int strpos($text, 'h') 第一次出現h的位置

strrpos();最後一次出現h的位置

str_replace('a', 'ttt', $t) 把$t裡的'a'替換為'ttt'

strtr($t,'is','ppp') 把$t中'is'替換成'ppp'

strtr("hi all, I said hello", array("hello" => "hi")) 把'hello'轉換成'hi'

string md5_file('1.txt',false) 檔案資料md5加密

int strcmp(string str1, string str2) 字串比較

int strcasecmp(string str1, string str2) 忽略大小寫

string str_pad($i, 10, "-=", STR_PAD_LEFT) 在原字元左邊補'-=',直到新字串長度為10

STR_PAD_RIGHT

STR_PAD_BOTH

string str_repeat('1', 5) 重複5個1

void parse_str('id=11'); echo $id; 將字串符解析為變數

array preg_grep("/^(d+)?.d+$/", array(11.2,11,11.2)) 匹配資料

array preg_split ("/[s,]+/", "hypertext language,programming"); 按指定的字元切割 array pathinfo(string path [, int options]) 返回檔案路徑的資訊

string basename ( string path [, string suffix] ) 返回路徑中的檔名部分

string dirname ( string path ) $_SERVER[PHP_SELF] 返回路徑中的目錄部分 string nl2br("foo isn't bar") "foo isn't
bar" 把換行轉成

string chr ( int ascii ) *

mixed str_word_count ( string string [, int format [, string charlist]] )

string str_shuffle ('abc') 打亂字串順序

string strrev($str) * 翻轉一個字串

string strtolower($str) * 將字串 $str 的字元全部轉換為小寫的

string strtoupper($str) * 將字串 $str 的字元全部轉換為大寫的

string ucfirst ($str) * 將字串 $str 的第一個單詞的首字母變為大寫。 string ucwords($str) * 將字串 $str 的每個單詞的首字母變為大寫。

string addslashes("I'm") I'm 使用反斜線引用字串 這些字元是單引號(')、雙引號(")、反斜線()與 NUL(NULL 字元)

string stripcslashes("I'm") I'm 將用addslashes()函式處理後的字串返回原樣

strip_tags("

tt

", '

') 去除html、xml、php標記,第二個引數用來保留標記 string urlencode(string str)

string urldecode(string str)

string htmlspecialchars("Test", ENT_QUOTES) 轉換特殊字元為HTML字元編碼

Test

ENT_COMPAT –對雙引號進行編碼,不對單引號進行編碼

ENT_QUOTES –對單引號和雙引號進行編碼

ENT_NOQUOTES –不對單引號或雙引號進行編碼

string htmlentities('

ff

', ENT_QUOTES) 轉換特殊字元為HTML字元編碼,中文會轉成亂碼

陣列處理

int count( mixed var [, int mode] ) 別名:sizeof() 取陣列長度

string implode(".", $array) 別名:join 把陣列值資料按指定字元連線起來 array explode(".", "fff.ff.f") 按指定字元切割

array range(0, 6, 2) 返回陣列 array(0,2,4,6) 第一個引數為起使數,第二個引數為結束數,第三個引數為資料增加步長

int array_push($a, "3", 1) 把'3'、'1'壓入$a,將一個或多個單元壓入陣列的末尾(入棧),第二個引數開始就是壓入的資料

void unset ( mixed var [, mixed var [, ...]] )

array array_pad ($a, 5, 's')用's'將陣列填補到指定長度

bool shuffle ( array $array ) 將陣列打亂

mixed array_rand ( array input [, int num_req] )從陣列中隨機取出一個或多個單元的索引或鍵名

array array_count_values ( array input )統計陣列中所有的值出現的次數

array array_combine ( array keys, array values ) 建立一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值

bool array_key_exists ( mixed key, array search )檢查給定的鍵名或索引是否存在於陣列中

mixed array_search ( mixed needle, array haystack [, bool strict] )在陣列中搜索給定的值,如果成功則返回相應的鍵名

bool is_array ( mixed var )

bool in_array ( mixed needle, array haystack [, bool strict] )檢查陣列中是否存在某個值 number array_sum ( array array )計算陣列中所有值的和

array array_unique ( array array )移除陣列中重複的值

mixed reset ( array &array )將陣列的內部指標指向第一個單元

mixed current ( array &array )

mixed next ( array &array )

mixed prev ( array &array )

mixed end ( array &array )

mixed key ( array &array )

array array_keys ( array input [, mixed search_value [, bool strict]] ) 返回陣列中所有的鍵名

array array_values ( array input ) 返回陣列中所有的值

bool print_r ( mixed expression [, bool return] )

void var_dump ( mixed expression [, mixed expression [, ...]] )

int array_unshift ( array &array, mixed var [, mixed ...] )在陣列開頭插入一個或多個單元 mixed array_shift ( array &array )將陣列開頭的單元移出陣列

mixed array_pop ( array &array )將陣列最後一個單元彈出(出棧)

array array_splice ( array $input, int offset [, int length [, array replacement]] ) 把陣列中的一部分去掉並用其它值取代

array array_merge ( array array1 [, array array2 [, array ...]] )合併一個或多個數組 array array_flip ( array trans )交換陣列中的鍵和值

int extract( array var_array [, int extract_type [, string prefix]] ) 從陣列中將變數匯入到當

前的符號表

array compact ( mixed varname [, mixed ...] ) 建立一個數組,包括變數名和它們的值 bool sort ( array &array [, int sort_flags] )從最低到最高重新安排

bool natsort($a) 用“自然排序”演算法對陣列排序

bool rsort ( array &array [, int sort_flags] )對陣列進行逆向排序(最高到最低) bool asort ( array &array [, int sort_flags] )對陣列進行排序並保持索引關係

bool arsort ( array &array [, int sort_flags] ) 對陣列進行逆向排序並保持索引關係 bool ksort ( array &array [, int sort_flags] )對陣列按照鍵名排序

bool krsort ( array &array [, int sort_flags] )對陣列按照鍵名逆向排序

array array_filter ( array input [, callback callback] ) 用回撥函式過濾陣列中的單元

bool array_walk ( array &array, callback funcname [, mixed userdata] ) 對陣列中的每個成員應用使用者函式

array array_map ( callback callback, array arr1 [, array ...] )將回調函式作用到給定陣列的單元上

array array_fill ( int start_index, int num, mixed value ) 用給定的值填充陣列

array_fill(5, 3, 'a')-->array(5=>'a',6=>'a',7=>'a')

array array_chunk ( array input, int size [, bool preserve_keys] )將一個數組分割成多個

其他

isset() 變數是否存在

boolean empty() 檢查變數是否存在,並判斷值是否為非空或非0

void unset() 銷燬變數

header('Content-Type: text/html; charset=utf-8');

method_exists($obj, $method) 判斷物件的方法是否可用

file_exists($file) 判斷檔案是否存在

function_exists();

class_exists($class_name);

gettype();獲取資料型別

set_magic_quotes_runtime() 0 for off, 1 for on 當遇到反斜杆、單引號,將會自動加上一個反斜杆,保護系統和資料庫的安全

ini_set();

安全

function strReplace($str)

{

$strResult = $str;

if(!get_magic_quotes_gpc())//判斷設定是否開啟

{

$strResult = addslashes($strResult);//轉換sql語句特殊字元

}

return $strResult;

}

篇三:php框架分析

PHP框架

本文來自國外的一個PHP技術人員網站,總結了國外的十個目前最流行的PHP MVC框架。具體排名順序未必準確,還有些知名框架,如Kohana等也沒有提及。不過仍可以做為一篇不錯的參考。

以下為十個目前最流行的基於MVC設計模式的PHP框架。

1. Yii

Yii是一個基於元件的高效能的PHP的框架,用於開發大規模Web應用。Yii採用嚴格的OOP編寫,並有著完善的庫引用以及全面的教程。從 MVC,DAO/ActiveRecord,widgets,caching,等級式RBAC,Web服務,到主體化,I18N和L10N,Yii提供了 今日Web 2.0應用開發所需要的幾乎一切功能。而且這個框架的價格也並不太高。事實上,Yii是最有效率的PHP框架之一。

2. CodeIgniter

CodeIgniter是一個應用開發框架——一個為建立PHP網站的人們所設計的工具包。其目標在於快速的開發專案:它提供了豐富的庫組以完成常 見的任務,以及簡單的介面,富有條理性的架構來訪問這些庫。使用CodeIgniter開發可以往專案中注入更多的創造力,因為它節省了大量編碼的時間。

3. CakePHP

CakePHP是一個快速開發PHP的框架,其中使用了一些常見的設計模式如ActiveRecord,Association Data Mapping,Front Controller以及MVC。其主要目標在於提供一個令任意水平的PHP開發人員都能夠快速開發web應用的框架,而且這個快速的實現並沒有犧牲專案 的彈性。

4. PHPDevShell

PHPDevShell是一個開源(GNU/LGPL)的快速應用開發框架,用於開發不含Javascript的純PHP。它有一個完整的GUI管 理員後臺介面。其主要目標在於開發外掛一類的基於管理的應用,其中速度、安全、穩定性及彈性是最優先考慮的重點。其設計形成了一個簡單的學習曲線,PHP 開發者無需學習複雜的新術語。PHPDevShell的到來滿足了開發者們對於一個輕量級但是功能完善,可以無限制的進行配置的GUI的需求。

5. Akelos

Akelos PHP框架是一個基於MVC設計模式的web應用開發平臺。基於良好的使用習慣,使用它可以完成如下任務:

方便的使用Ajax編寫views

通過控制器管理請求(request)及響應(response)

管理國際化的應用

使用簡單的協議與模型及資料庫通訊

你的Akelos應用可以在大多數共享主機服務供應方上執行,因為Akelos對伺服器唯一的要求就是支援PHP。因此,Akelos PHP框架是理想的用於釋出單獨web應用的框架,因為它不需要非標準PHP配置便能執行。

6. Symfony

Symfony是一個用於開發PHP5專案的web應用框架。其目的在於加速web應用的開發以及維護,減少重複的編碼工作。

Symfony的系統需求不高,可以被輕易的安裝在任意設定上:你只需一個Unix或Windows,搭配一個安裝了PHP5的網路伺服器即可。它與差不多所有的資料庫相容。Symfony的價位不高,相比主機上的花銷要低得多。

對於PHP開發者而言,使用Symfony是一件很自然的事,其學習曲線只有短短一天。乾淨的設計以及程式碼可讀性將縮短開發時間。開發者可以將敏捷 開發的原理(如DRY,KISS

或XP等)應用在其中,將重點放在應用邏輯層面上,而不用花費大量時間在編寫沒完沒了的XML配置檔案上。

Symfony旨在建立企業級的完善應用程式。也就是說,你擁有整個設定的控制權:從路徑結構到外部庫,幾乎一切都可以自定義。為了符合企業的開發條例,Symfony還綁定了一些額外的工具,以便於專案的測試,除錯以及歸檔

7. Prado

PRADO團隊由一些PRADO狂熱者組成,這些成員開發並推動PRADO框架以及相關專案的進行。 PRADO的靈感起源於Apache Tapestry。從04年開始,PRADO成為SourceForge上的開源專案之一。

8. Zend

作為PHP藝術及精神的延伸,Zend框架的基礎在於簡單,物件導向的最佳方法,方便企業的許可協議,以及經過反覆測試的快速程式碼庫。Zend框架 旨在建造更安全,更可靠的Web 2.0應用及web服務,並不斷從前沿廠商(如Google,Amazon,Yahoo,Flickr,StrikeIron和 ProgrammableWeb等)的API那裡吸收精華。

9. ZooP

Zoop PHP框架,意為Zoop物件導向的PHP框架。

這是個穩定,可伸縮並可移植的框架。從誕生到現在的5年間,已經在不少產品開發中被使用。Zoop是一個快速,有效並乾淨的框架。它的伸縮性很好,你可以只安裝你需要的功能。對程式碼並不很熟悉的開發者也可以通過Zoop快速的開發安全的web應用。熟練的開發者則可以更加將Zoop的彈性利用到極致。Zoop建議將display,logic以及資料層(MVC)分開使用。

Zoop由很多元件和專案集合而成,其中包括smarty和prototype AJAX框架,PEAR模組等。高效的核心元件提供了很多你原本需要自己編碼來實現的功能。Zoop內建的糾錯功能可以通過配置實現生產環境下的錯誤日誌 生成,這個錯誤日誌提供了很多資訊,可讀性很高,可以更輕易的尋找並排除錯誤。Zoop的一個特別之處在於其GuiControls,在PHP中是一個相當革新的想法。它提供了很多form widgets與驗證完整的集合到一起,並形成了一個可以輕鬆打造個性化GuiControls的框架。

10. QPHP

QPHP,意為快速PHP,它是一個與ASP.NET類似的MVC框架。基本上它是這樣一個情況: 整合了Java和C#的美感

除去了在其他PHP框架中使用的Perl形式的意義含糊的語言

大量基於OOP的概念

PHP伺服器

一、phpStudy簡體中文版

該程式包整合最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安裝,無須配置即可使用,是非常方便、好用的PHP除錯環境.該程式不僅包括PHP除錯環境,還包括了開發工具、開發手冊等.總之學習PHP只需一個包.對學習PHP的新手來說, WINDOWS下環境配置是一件很困難的事;對老手來說也是一件煩瑣的事.因此無論你是新手還是老手,該程式包都是一個不錯的選擇。

二、PHPnow

PHPnow是 Win32 下綠色免費的 Apache + PHP + MySQL 環境套件包。簡易安裝、快速搭建支援虛擬主機的 PHP 環境。

附帶 PnCp.cmd 控制面板,幫助你快速配置你的套件,使用非常方便。安裝 PHPnow 只需解壓、初始化,就可得到一個標準的 PHP + MySQL 的伺服器環境。然後就可以直接安裝 Discuz!

等程式,或者進行 PHP 開發除錯。支援虛擬主機:便捷的虛擬主機管理。虛擬主機代理:可與 IIS 共存 80 埠(代理方式)

三、NPMserv(win下nginx+php+mysql)

NPMserv 是一款圖形介面的快速搭建nginx 0.7.61、PHP 5.3.0、MySQL 5.1.35、phpMyAdmin 3.2.1,網站伺服器平臺的綠色軟體。無需安裝,具有靈活的移動性,盤下根目錄(如D:/NPMserv)、開啟NPMserv.exe啟動服務即可。

www.yes919.com www.packyw.cn http://soft.yes919.com

四、EasyPHP(Apache+PHP+MySQL套件)

相信很多朋友對 Win+Apche+PHP+MySQL這樣的組合感興趣,但是不懂得編輯配置檔案,導致在配置上面花了很大的時間。本套件採用傻瓜式安裝,一次搞定,方便除錯和執行PHP+MySQL程式。如果作為伺服器對外開放請調整相關配置檔案,本系統配置的安全係數不是非常高。請在 相關配置檔案中修改Apache及PHP中網站管理員信箱及網站名稱。

建議:由於出於程式測試目的配置,安全係數並不是太高,請自行調整相關配置檔案,MySQL資料庫使用者名稱:root,密碼為空,安裝後請設定密碼。

篇四:最佳PHP,HTML5和CSS框架大薈萃之一 PHP框架

最佳PHP,HTML5和CSS框架大薈萃之一 PHP框架

開發框架是用來幫助開發人員快速設計和開發動態網站的基礎,幾乎每個月都會有大量的框架被開發人員釋出,用來幫助web開發者更簡單和高效的開發web應用。

在這篇文章中,我將總結薈萃出最佳的PHP,HTML5和CSS框架,希望能夠在大家選擇框架的時候能夠供大家參考借鑑。如果你有任何建議和補充,謝謝閱讀!

PHP框架

1. Cake PHP

CakePHP是一個擁有極大靈活性的開發,維護和部署的快速開發框架。使用非常常見的MVC和ORM設計模式,及其配置規則幫助大家簡化開發過程而無須開發過多的程式碼

和ZF類似,CakePHP不要求配置。使用簡單。在IRC上擁有非常友好的社群#cakePHP,用來幫助新的使用者快速開始學習。基於MIT License,擁有最佳實踐,例如,安全,認證和session處理。擁有面對物件的方式幫助你更簡單的使用。

2. Yii Framework

Yii是一個免費,開源的web應用開發框架,使用PHP5開發,幫助開發乾淨,簡潔的設計並且鼓勵開發開發。它幫助流水化的開發應用,並且保證高效,可擴充套件和易維護。效能極大的優化,非常適合開發任何型別的產品和專案。然而,它內建複雜,企業級別的應用。你擁有完整的控制,包括表現層和持久層,符合了企業級別開發的指導方針

3. Zend

Zend Framework 2 是一個使用PHP5.3+來開發web應用和服務的開源框架。使用100%的面對物件的程式碼並且使用PHP5.3種的新特性,例如名字空間,late static binding,lamda function和closure。Zend framewok 2 由成功的PHP框架Zend Framework 1演變而來,而Zend framework 1擁有1500萬的下載量。Zend framework2擁有獨特的元件結構,每一個元件都設計的儘量少和其它元件產生依賴關係。 ZF2遵循了嚴格的面對物件的設計原理。這種非嚴格的元件關係結構允許開發人員使用任何他想使用的元件。

4. Symfony

Smyfony是一個web應用框架,遵循了典型的MVC(model view controller)的'設計結構,現在越來越受歡迎,Symfony基於MIT license,它使用一些PHP程式碼類的輔助類庫得開發的過程簡單

5. Webasyst

webasyst是一個開源的框架用來開發平滑的多使用者web應用或者複雜的網站。和其它的框架,例如,zend和symfony,比較起來,Webasyst框架更專注,並且允許更快和更高效的建立基於商業和團隊使用的應用。這個框架提供了大量的現成的工具用來管理使用者和授權,UI建立,移動端的訪問等等

6. Laravel

Laravle是一個定位於優雅簡單的PHP框架。變成不會變的苦悶。事實上,使用正確的工具絕對是讓它成為一個讓人愉悅的事情。Laravel適合所有的PHP開發人員,特別是初學者。

除了完善的文章,Laravel的友好的社群一直幫助回答文件上沒有涉及到的相關問題。使用Bundle來打包和分享程式碼絕對是一個非常棒的方式

7. Guzzle

Guzzle是一個幫助大家解決傳送HTTP請求和建立web service 客戶端中多餘的步驟的框架。包含了用來建立強壯的web service客戶端的工具,其中: 定義輸入和輸出的服務描述API,用來遍歷分頁資源的資源迭代,高效傳送大量請求等等。

8. Phalcon PHP

Phalcon PHP是一個被髮布成為C擴充套件並且提供高效能和低資源消耗的web框架。使用C書寫,平臺無關。作為這樣的框架,PHP支援微軟的windows系統, GNU/linux,Max OSX,你可以下載一個適合你的系統的二進位制包或者自己編譯

9. CodeIgniter

Codelgiter是一個強大的PHP框架,擁有非常小的體積,針對需要使用簡單優雅的工具套件開發完整特性的web應用而開發。如果你需要處理共享主機賬號或者客戶時間有限制,並且厭倦了沒有文件的大型框架的話,Codeignier可能非常適合你

10. Fuel PHP

Fuel是一個簡單,靈活,社群驅動的5.3 web框架,基於其它框架中的好的想法而開發一個框架。在Apache,,IIS和Nginx上測試過。Fuel使用另外一種方式實現,和其它框架不同,它努力成為社群驅動的框架。剛成立不到6個月,已經有30多個開發人員貢獻了程式碼和文件。

當然了國產框架也有一些, 例如,thinkPHP也還可以,具體專案還是得具體分析!

免費領取兄弟連php原創視訊教程光碟,詳情諮詢官網客服: http://www.lampbrother.net

篇五:主流PHP框架優缺點對比

主流PHP框架優缺點對比

2012-04-14 文章網際網路 瀏覽次數: 206

PHP是一種在國內外都比較流行的開源伺服器端指令碼開發語言。能夠適應大中小型專案的開發需求。我們將在這篇文章中向大家介紹幾款主流PHP框架及其相關優缺點評比,作為一個參考分享給朋友們。

主要參考的PHP框架包括:CodeIgniter、CakePHP、ZendFramework、Symfony。我對很多框架也沒有認真使用,只是簡單試用了一下,可能很多看法不成熟或者是錯誤的,請大家指正,一起成長。

優點:

1. 配置簡單,全部的配置使用PHP指令碼來配置,執行效率高;具有基本的路由功能,能夠進行一定程度的路由;具有初步的Layout功能,能夠製作一定程度的介面外觀;資料庫層封裝的不錯,具有基本的MVC功能

2. 快速簡潔,程式碼不多,執行效能高,PHP框架簡單,容易上手,學習成本低,文件詳細;自帶了很多簡單好用的library,框架適合小型應用

缺點:

1. 把Model層簡單的理解為資料庫操作

2. PHP框架略顯簡單,只能夠滿足小型應用,略微不太能夠滿足中型應用需要 評價:

總體來說,拿CodeIgniter來完成簡單快速的應用還是值得,同時能夠構造一定程度的layout,便於模板的複用,資料操作層來說封裝的不錯,並且CodeIgniter沒有使用很

多太複雜的設計模式,執行效能和程式碼可讀性上都不錯。至於附加的 library 也還不錯,簡潔高效。

優點:

1. CakePHP是最類似於RoR的PHP框架,包括設計方式,資料庫操作的Active Record方式;設計層面很優雅,沒有自帶多餘的 library,所有的功能都是純粹的框架,執行效率還不錯;資料庫層的 hasOne, hasMany 功能很強大,對於複雜業務處理比較合適;路由功能,配置功能還不錯;自動構建腳手架(scaffold)很強大;適合中型應用;基本實現過了MVC每一層;具有自動操作命令列指令碼功能;

2. 文件比較全,在國內推廣的比較成功,大部分都知道CakePHP,學習成本中等 缺點:

1. CakePHP非常嚴重的問題是把Model理解為資料庫層操作,嚴重影響了除了資料庫之外的操作能力

2. CakePHP的cache功能略顯薄弱,配置功能稍嫌弱;CakePHP不適合大型應用,只適合中型應用,小型應用來說略微的學習成本高了點

評價:

總體來說CakePHP框架代表了PHP框架很重要的一個時代和代表,並且目前發揮著很重要的作用,不少自己寫的框架都模仿了CakePHP的方式,是個里程碑式的產品;CakePHP透露著RoR的敏捷開發方式和把資料庫操作認為是唯一Model的設計思想,作為開發快速應用和原型是絕好的工具;同樣,用來做Web2.0網站的開發框架,也是值得選擇的。

優點:

1. 官方出品,自帶了非常多的 library,框架本身使用了很多設計模式來編寫,架構上很優雅,執行效率中等;MVC設計中,比較簡潔,具有路由功能,配置檔案比較強大(能夠處理XML和php INI),各種 library 很強大,是所有PHP框架中各種功能最全面的,包括它不僅是一個PHP框架,更是一個大類庫(取代PEAR),這是它的主要特色;能夠直觀的支援除資料庫操作之外的Model層(比 CodeIgniter 和 CakePHP 強),並且能夠很輕易的使用Loader功能載入其他新增加的Class;Cache功能很強大,從前端Cache到後端Cache都支援,後端Cache支援Memcache、APC、SQLite、檔案等等方式;資料庫操作功能很強大,支援各種驅動(介面卡)

2. 文件很全,在國內社群很成熟,並且目前不少Web 2.0網站在使用,學習成本中等

缺點:

1. MVC功能完成比較弱,View層簡單實現(跟沒實現一樣),無法很強大的控制前端頁面

2. 沒有自動化指令碼,建立一個應用,包括入口檔案,全部必須自己手工構建,入門成本高

3. Zend Framework 作為一箇中型應用框架問題不大,也能夠勉強作為大型應用的PHP框架,但是作為一個很成熟的大型PHP框架來說,還需要一些努力

評價:

作為官方出品的框架,Zend Framework的野心是可以預見的,想把其他框架擠走,同時封裝很多強大的類庫,能夠提供一站式的框架服務,並且他們的開發團隊很強大,完全足夠有能力開發很強大的產品出來,所以基本可以確定的是Zend Framework前途無量,如果花費更多的時間去完善框架。同樣的,Zend Framework架構本身也是比較優雅的,說明Zend官方是有很多高手的,設計理念上比較先進,雖然有一些功能實現的不夠完善,

比如View層,自動化指令碼等等,這些都有賴於未來的升級。總體來說Zend Framework是最值得期待的PHP框架,當然,你目前要投入你的專案中使用也是完全沒問題的。

優點

1. Symfony 是我瞭解的PHP框架中功能最強大的,而且我使用時間比較長,但是很多功能還是沒有挖掘出來;它完整實現了MVC三層,封裝了所有東西,包括 $_POST,$_GET 資料,異常處理,除錯功能,資料檢測;包含強大的快取功能,自動載入Class(這個功能很爽),強大的i18n國家化支援;具有很強大的view層操作,能夠零碎的包含單個多個檔案;非常強大的配置功能,使用yml配置能夠控制所有框架和程式執行行為,強大到讓人無語;能夠很隨意的定義各種自己的class,並且symfony能夠自動載入(auto load)這些class,能夠在程式中隨意呼叫;包含強大的多層級專案和應用管理:Project --> Application --> Module --> Action,能夠滿足一個專案下多個應用的需要,並且每層可以定義自己的類庫,配置檔案,layout;非常強大的命令列操作功能,包括建立專案、建立應用、建立模組、重新整理快取等等;

2. Symfony絕對是開發大型複雜專案的首選,因為使用了Symfony,將大大節約開發成本,並且多人協作的時候,不會出現問題,在Project級別定義好基礎Class以後,任何模組都能夠重用,大大複用程式碼

缺點:

1. 資料庫操作model採用了重量級的propel和creole,不過在我測試的版本中已經把他們移到了addon裡,可用可不用

2. 快取功能無法控制,每次開發除錯總是快取,需要執行 symfony cc, symfony rc 來清除和重建快取;

3. 效率不是很高,特別是解析模板和讀取配置檔案的過程,花費時間不少;

4. 學習成本很高,並且國內沒有成熟的社群和文件,連中文手冊都沒有,相應的要掌握所有功能,需要花費比較多的時間

評價:

Symfony絕對是企業級的PHP框架,唯一能夠貌似能夠跟Java領域哪些強悍框架抗衡的東西;強悍的東西,自然學習複雜,但是相應的對專案開發也比較有幫助,自然是推薦複雜的專案使用Symfony來處理,覺得是值得,後期的維護成本比較低,複用性很強。相應的如果使用Symfony的應該都是比較複雜的網際網路專案,那麼相應的就要考慮關於資料庫分佈的問題,那麼就需要拋棄Symfony自帶的資料庫操作層,需要自己定義,當然了,Symfony支援隨意的構造model層。

總結

以上數款PHP框架,各有特色,而且都是開源專案,不過框架針對的專案不一樣,一般來說 CodeIngiter 比較適合小型專案,CakePHP 和 Zend Framework 比較適合中型專案,Symfony 比較適合大型重量級專案,在專案選型的時候,要充分考慮框架的可以定製性、擴充套件性,因為每個專案都無法確定你是否會隨著需求的變化進行改變。

相對來說,Zend Framework 和 Symfony 應對變化的能力比較強,特別是能夠隨意定製 model 層的Class,能夠非常方便增加自己業務或者資料處理類,我是個人比較推薦在中大型專案中使用的PHP框架。

CodeIngiter 和 CakePHP 在中小型專案中同樣能夠發揮重大作用,快速開發和原型構建,非常適合目標不清晰的原型專案的開發。

TAGS:PHP 框架