中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      php知識框架總結(jié)

      時(shí)間:2024-10-20 07:42:58 PHP 我要投稿
      • 相關(guān)推薦

      php知識框架總結(jié)

        篇一:php基礎(chǔ)知識點(diǎn)總結(jié)

      php知識框架總結(jié)

        PHP語言基礎(chǔ)簡單整理

        1.開始結(jié)束標(biāo)記的格式只有在沒有判斷語句時(shí)才能使用。

        對表單傳遞的變量進(jìn)行編碼和解碼:PHP中實(shí)現(xiàn)對查詢字符串進(jìn)行URL編碼可以通過函數(shù)urlencode()實(shí)現(xiàn),該函數(shù)的使用格式如下:string urlencode(string str);對URL編碼后的查詢字符串進(jìn)行解碼,可以通過urldecode()函數(shù)實(shí)現(xiàn),該函數(shù)的使用格式如下:string urldecode(string str);

        15.PHP連接數(shù)據(jù)庫:

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

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

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

        四、處理記錄集-------資源類型數(shù)據(jù),格式:bof---數(shù)據(jù)---eof

        五、以特定格式讀取數(shù)據(jù)-----mssql_fetch_array()....

        六、釋放相關(guān)資源、關(guān)閉連接------mssql_free_result($result);mssql_close();

        16.數(shù)組:php的數(shù)組由鍵值和value值組成

        定義:$array = array("鍵值"=>"value","鍵值"=>"value","鍵值"=>"value");如果不給鍵值賦值,默認(rèn)從0開始的int值

        相關(guān)函數(shù):(1)in_array("值",數(shù)組名); 返回bool型-----查看數(shù)組中是否存在某value值

        (2)array_key_exists("key值",數(shù)組名); 返回bool型-----查看數(shù)組中是否存在某鍵值

       。3)array_keys(數(shù)組名);---將數(shù)組鍵值返回出來形成一個(gè)新數(shù)組,此鍵值作為新數(shù)組的value值

        (4)array_values(數(shù)組名);---將數(shù)組value值返回出來形成一個(gè)新數(shù)組,此值作為新數(shù)組的value值

       。5)key(數(shù)組名);----返回當(dāng)前指針指向的元素key值

       。6)current(數(shù)組名);----返回當(dāng)前指針指向的元素value值

        (7)next(數(shù)組名);----挪動(dòng)當(dāng)前數(shù)組指針到下一步

        (8)reset(數(shù)組名);----恢復(fù)數(shù)組指針,指向第0個(gè)元素

       。9)end(數(shù)組名);----將指針挪向最后一個(gè)元素

       。10)prev(數(shù)組名);----將指針向前挪動(dòng)一位

       。11)foreach(數(shù)組名 as $key=>$value)

        {

        $key是鍵值,$value是value值,實(shí)現(xiàn)數(shù)組遍歷

        }

       。12)each(數(shù)組名);----將當(dāng)前數(shù)組元素依次取出(自動(dòng)挪動(dòng)指針)并放到一個(gè)新的數(shù)組中

       。13)array_shift(數(shù)組名);----返回?cái)?shù)組中第一個(gè)元素值

       。14)array_pop(數(shù)組名);----返回?cái)?shù)組最后一個(gè)元素值

        (15)array_push(數(shù)組名,value);----向數(shù)組中追加元素

       。16)array_unshift(數(shù)組名,value);----在數(shù)組最前面添加元素

       。17)array_pad(數(shù)組名,數(shù)組長度,value);----向數(shù)組中追加多個(gè)元素,對數(shù)組副本操作,不改變原數(shù)組,返回一個(gè)新數(shù)組

       。18)count();----返回個(gè)數(shù)

        (19)array_unique(數(shù)組名);----去掉數(shù)組中重復(fù)部分,操作數(shù)組副本,不改變原數(shù)組,返回新數(shù)組

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

       。21)rsort(數(shù)組名);----從大到小,逆序排列數(shù)組value值

        (22)array_combine(數(shù)組1,數(shù)組2);----將數(shù)組1的value值作為key,數(shù)組2的value值作為value值,形成一個(gè)新數(shù)組

       。23)array_merge(數(shù)組1,數(shù)組2,數(shù)組3...);----合并多個(gè)數(shù)組,將多個(gè)數(shù)組value值依次合并,合為一個(gè)數(shù)組

       。24)array_slice(數(shù)組名,int,int);----從目標(biāo)數(shù)組截取元素,形成一個(gè)新數(shù)組。開始位置為第二個(gè)參數(shù),結(jié)束位置為第三個(gè)參數(shù)。若第三個(gè)參數(shù)不寫,則默認(rèn)是截取到最后。

       。25)array_splice();----用法同array_slice();但是其截取部分從原數(shù)組中刪除

       。26)explode("字符依據(jù)",目標(biāo)字符串);----將字符串按照一定的依據(jù)拆分成數(shù)組

        (27)implode("字符依據(jù)",目標(biāo)數(shù)組);----將數(shù)組元素按照依據(jù)組合成一個(gè)字符串

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

       。29)shuffle(數(shù)組名);----用于將數(shù)組進(jìn)行隨機(jī)排序

        (30)array_sum(數(shù)組名);----對數(shù)值型數(shù)組元素值進(jìn)行求和

       。31)array_chunk(數(shù)組名,int);----分割目標(biāo)數(shù)組,返回一個(gè)新數(shù)組,其中數(shù)組的每個(gè)元素都是一個(gè)一維數(shù)組,int參數(shù)為分割成的一維數(shù)組的長度

        17.Cookie和會(huì)話控制:

        Cookie是在HTTP協(xié)議下,服務(wù)器或腳本可以維護(hù)客戶工作站上信息的一種方式。Cookie是由Web服務(wù)器保存在客戶機(jī)上的小文本文件,它可以包含有關(guān)用戶的信息。無論何時(shí)用戶鏈接到服務(wù)器,Web站點(diǎn)都可以訪問Cookie信息。

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

        通過Cookie數(shù)組取值:$_cookie["名"];

        設(shè)置生成期:setcookie("名","值",time()+1800);生成期為當(dāng)前時(shí)間加1800秒之后。

        刪除cookie: setcookie("名","",time()-3600);中間值設(shè)置為空,并將當(dāng)前時(shí)間減去3600秒。 Cookie數(shù)組:setcookie("名[key]","值"); 使用foreach讀取。

        在PHP中可以通過$_COOKIE預(yù)定義變量訪問Cookie的值。如果設(shè)置了php.ini中的register_long_arrays,那么就能夠應(yīng)用$_COOKIE和$HTTP_COOKIE_VARS;如果在php.ini中還設(shè)置了register_globals,那么就可以在PHP中作為全局變量使用各個(gè)Cookie值。但是,更改php.ini中的兩個(gè)文件設(shè)置,容易對PHP的安全構(gòu)成威脅,不推薦使用該方法,建議使用更新的$_COOKIE。

        會(huì)話ID的傳送

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

        Cookie傳送方式:

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

        URL傳送方式:

        在該方式中,URL本身用來傳送會(huì)話,會(huì)話標(biāo)志被簡單地附加到URL的尾部,或者作為窗體中的一個(gè)變量來傳遞。例:ADD">">ADD

        會(huì)話ID的生成:

        PHP的會(huì)話函數(shù)會(huì)自動(dòng)處理ID的創(chuàng)建,但也可以通過手工方式創(chuàng)建會(huì)話ID。它必須是不容易被人猜出來的,否則有安全隱患。

        一般推薦生成會(huì)話ID使用隨機(jī)數(shù)發(fā)生器函數(shù)srand(),函數(shù)聲明如下:

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

        在調(diào)用該函數(shù)后,要想生成一個(gè)唯一的會(huì)話ID,還必須使用下面的語句:

        md5(unique(rand()));

        Session會(huì)話:

        創(chuàng)建會(huì)話的步驟:啟動(dòng)一個(gè)會(huì)話,注冊會(huì)話變量,使用會(huì)話變量和注銷會(huì)話變量。

       。1)啟動(dòng)一個(gè)會(huì)話:》通過session_start();函數(shù)創(chuàng)建會(huì)話,函數(shù)聲明為:bool session_start(void);

        》通過設(shè)置php.ini自動(dòng)創(chuàng)建會(huì)話:設(shè)置php.ini中的session.auto_start選項(xiàng),激活該選項(xiàng)即可自動(dòng)創(chuàng)建會(huì)話(配置值改為1),但是使用該方法啟動(dòng)auto_start會(huì)導(dǎo)致無法使用對象作為會(huì)話變量。

       。2)注冊會(huì)話變量:會(huì)話變量被啟動(dòng)后,全部保存在數(shù)組$_session中。通過數(shù)組$_session,直接給該數(shù)組提添加一個(gè)元素即可創(chuàng)建一個(gè)會(huì)話變量: $_session[session_name]=session_value;

        (3)使用會(huì)話變量:

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

       。4)注銷會(huì)話變量:注銷某個(gè)session成員:unset($_session[session_name])

        注銷所有會(huì)話功能:$_session=array();然后使用session_destory();函數(shù)清除會(huì)話ID。

        18.字符串處理:

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

       。2)將指定字符串轉(zhuǎn)換成大寫:strtoupper($str);

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

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

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

        (6)substr_count($str,"value");查詢某字符在目標(biāo)字符串中出現(xiàn)的個(gè)數(shù)

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

        (8)防止單引號破壞sql語句:自動(dòng)轉(zhuǎn)義函數(shù):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 )----按逐個(gè)字符的ascll碼進(jìn)行比較,如果返回等于0,則相等;大于0,則str1大于str2;小于0,則str1小于str2。

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

        該函數(shù)可以有1個(gè),2個(gè),或4個(gè)參數(shù),但不能使三個(gè)。decimals意思是取小數(shù)點(diǎn)后幾位,dec_point用來代替小數(shù)點(diǎn),thousands_sep用來代替千位分隔符。

        (13)查找和替換:

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

        例:<?php

        $email = 'user@example.com';

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

        echo $domain; // prints @example.com

        ?>

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

        篇二:php重要知識點(diǎn)總結(jié)(PHP網(wǎng)絡(luò)開發(fā)必背)

        PHP網(wǎng)站開發(fā)必用知識點(diǎn)總結(jié),函數(shù)一覽,開發(fā)必背

        魔術(shù)方法

        __construct() 當(dāng)實(shí)例化一個(gè)對象的時(shí)候,這個(gè)對象的這個(gè)方法首先被調(diào)用。 __destruct() 當(dāng)刪除一個(gè)對象或?qū)ο蟛僮鹘K止的時(shí)候,調(diào)用該方法。

        __get() 當(dāng)試圖讀取一個(gè)并不存在的屬性的時(shí)候被調(diào)用。

        __set() 當(dāng)試圖向一個(gè)并不存在的屬性寫入值的時(shí)候被調(diào)用。

        __call() 當(dāng)試圖調(diào)用一個(gè)對象并不存在的方法時(shí),調(diào)用該方法。

        __toString() 當(dāng)打印一個(gè)對象的時(shí)候被調(diào)用

        __clone() 當(dāng)對象被克隆時(shí),被調(diào)用

        __isset()

        __unset()

        __autoload($classname)

        __sleep()

        __wakeup()

        系統(tǒng)常量

        __FILE__ 當(dāng)前文件名

        __LINE__ 當(dāng)前行數(shù)

        __FUNCTION__ 當(dāng)前函數(shù)名

        __CLASS__ 當(dāng)前類名

        __METHOD__ 當(dāng)前對象的方法名

        PHP_OS 當(dāng)前系統(tǒng)

        PHP_VERSION php版本

        DIRECTORY_SEPARATOR 根據(jù)系統(tǒng)決定目錄的分隔符 /

        PATH_SEPARATOR 根據(jù)系統(tǒng)決定環(huán)境變量的目錄列表分隔符 ; :

        E_ERROR 1

        E_WARNING 2

        E_PARSE 4

        E_NOTICE 8

        M_PI 3.141592

        $_SERVER

        $_ENV 執(zhí)行環(huán)境提交至腳本的變量

        $_GET

        $_POST

        $_REQUEST

        $_FILES

        $_COOKIE

        $_SESSION

        $_GLOBALS

        輸出

        echo //Output one or more strings

        print //Output a string

        print_r() //打印關(guān)于變量的易于理解的信息。

        var_dump() //打印變量的相關(guān)信息

        var_export() //輸出或返回一個(gè)變量的字符串表示

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

        sprintf() //Return a formatted string

        編碼轉(zhuǎn)換

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

        時(shí)間

        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() 以秒返回時(shí)間戳 explode(' ', microtime())

        錯(cuò)誤處理

        @1/0

        error_reporting(E_ALL) 顯示所有錯(cuò)誤

        error_reporting(0)

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

        try

        {

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

        }

        catch (Exception $ex)

        {

        echo $ex;

        }

        字符串處理

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

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

        string implode(".", $array) 別名:join 把數(shù)組值數(shù)據(jù)按指定字符連接起來

        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') 字符串出現(xiàn)的次數(shù)

        string strstr($text, 'h') 第一次出現(xiàn)h后的字符串 //別名:strchr

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

        strrpos();最后一次出現(xiàn)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'轉(zhuǎn)換成'hi'

        string md5_file('1.txt',false) 文件數(shù)據(jù)md5加密

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

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

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

        STR_PAD_RIGHT

        STR_PAD_BOTH

        string str_repeat('1', 5) 重復(fù)5個(gè)1

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

        array preg_grep("/^(d+)?.d+$/", array(11.2,11,11.2)) 匹配數(shù)據(jù)

        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" 把換行轉(zhuǎn)成

        string chr ( int ascii ) *

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

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

        string strrev($str) * 翻轉(zhuǎn)一個(gè)字符串

        string strtolower($str) * 將字符串 $str 的字符全部轉(zhuǎn)換為小寫的

        string strtoupper($str) * 將字符串 $str 的字符全部轉(zhuǎn)換為大寫的

        string ucfirst ($str) * 將字符串 $str 的第一個(gè)單詞的首字母變?yōu)榇髮憽?string ucwords($str) * 將字符串 $str 的每個(gè)單詞的首字母變?yōu)榇髮憽?/p>

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

        string stripcslashes("I'm") I'm 將用addslashes()函數(shù)處理后的字符串返回原樣

        strip_tags("

      tt

      ", '

      ') 去除html、xml、php標(biāo)記,第二個(gè)參數(shù)用來保留標(biāo)記 string urlencode(string str)

        string urldecode(string str)

        string htmlspecialchars("Test", ENT_QUOTES) 轉(zhuǎn)換特殊字符為HTML字符編碼

        Test

        ENT_COMPAT –對雙引號進(jìn)行編碼,不對單引號進(jìn)行編碼

        ENT_QUOTES –對單引號和雙引號進(jìn)行編碼

        ENT_NOQUOTES –不對單引號或雙引號進(jìn)行編碼

        string htmlentities('

      ff

      ', ENT_QUOTES) 轉(zhuǎn)換特殊字符為HTML字符編碼,中文會(huì)轉(zhuǎn)成亂碼

        數(shù)組處理

        int count( mixed var [, int mode] ) 別名:sizeof() 取數(shù)組長度

        string implode(".", $array) 別名:join 把數(shù)組值數(shù)據(jù)按指定字符連接起來 array explode(".", "fff.ff.f") 按指定字符切割

        array range(0, 6, 2) 返回?cái)?shù)組 array(0,2,4,6) 第一個(gè)參數(shù)為起使數(shù),第二個(gè)參數(shù)為結(jié)束數(shù),第三個(gè)參數(shù)為數(shù)據(jù)增加步長

        int array_push($a, "3", 1) 把'3'、'1'壓入$a,將一個(gè)或多個(gè)單元壓入數(shù)組的末尾(入棧),第二個(gè)參數(shù)開始就是壓入的數(shù)據(jù)

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

        array array_pad ($a, 5, 's')用's'將數(shù)組填補(bǔ)到指定長度

        bool shuffle ( array $array ) 將數(shù)組打亂

        mixed array_rand ( array input [, int num_req] )從數(shù)組中隨機(jī)取出一個(gè)或多個(gè)單元的索引或鍵名

        array array_count_values ( array input )統(tǒng)計(jì)數(shù)組中所有的值出現(xiàn)的次數(shù)

        array array_combine ( array keys, array values ) 創(chuàng)建一個(gè)數(shù)組,用一個(gè)數(shù)組的值作為其鍵名,另一個(gè)數(shù)組的值作為其值

        bool array_key_exists ( mixed key, array search )檢查給定的鍵名或索引是否存在于數(shù)組中

        mixed array_search ( mixed needle, array haystack [, bool strict] )在數(shù)組中搜索給定的值,如果成功則返回相應(yīng)的鍵名

        bool is_array ( mixed var )

        bool in_array ( mixed needle, array haystack [, bool strict] )檢查數(shù)組中是否存在某個(gè)值 number array_sum ( array array )計(jì)算數(shù)組中所有值的和

        array array_unique ( array array )移除數(shù)組中重復(fù)的值

        mixed reset ( array &array )將數(shù)組的內(nèi)部指針指向第一個(gè)單元

        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]] ) 返回?cái)?shù)組中所有的鍵名

        array array_values ( array input ) 返回?cái)?shù)組中所有的值

        bool print_r ( mixed expression [, bool return] )

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

        int array_unshift ( array &array, mixed var [, mixed ...] )在數(shù)組開頭插入一個(gè)或多個(gè)單元 mixed array_shift ( array &array )將數(shù)組開頭的單元移出數(shù)組

        mixed array_pop ( array &array )將數(shù)組最后一個(gè)單元彈出(出棧)

        array array_splice ( array $input, int offset [, int length [, array replacement]] ) 把數(shù)組中的一部分去掉并用其它值取代

        array array_merge ( array array1 [, array array2 [, array ...]] )合并一個(gè)或多個(gè)數(shù)組 array array_flip ( array trans )交換數(shù)組中的鍵和值

        int extract( array var_array [, int extract_type [, string prefix]] ) 從數(shù)組中將變量導(dǎo)入到當(dāng)

        前的符號表

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

        bool natsort($a) 用“自然排序”算法對數(shù)組排序

        bool rsort ( array &array [, int sort_flags] )對數(shù)組進(jìn)行逆向排序(最高到最低) bool asort ( array &array [, int sort_flags] )對數(shù)組進(jìn)行排序并保持索引關(guān)系

        bool arsort ( array &array [, int sort_flags] ) 對數(shù)組進(jìn)行逆向排序并保持索引關(guān)系 bool ksort ( array &array [, int sort_flags] )對數(shù)組按照鍵名排序

        bool krsort ( array &array [, int sort_flags] )對數(shù)組按照鍵名逆向排序

        array array_filter ( array input [, callback callback] ) 用回調(diào)函數(shù)過濾數(shù)組中的單元

        bool array_walk ( array &array, callback funcname [, mixed userdata] ) 對數(shù)組中的每個(gè)成員應(yīng)用用戶函數(shù)

        array array_map ( callback callback, array arr1 [, array ...] )將回調(diào)函數(shù)作用到給定數(shù)組的單元上

        array array_fill ( int start_index, int num, mixed value ) 用給定的值填充數(shù)組

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

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

        其他

        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();獲取數(shù)據(jù)類型

        set_magic_quotes_runtime() 0 for off, 1 for on 當(dāng)遇到反斜桿、單引號,將會(huì)自動(dòng)加上一個(gè)反斜桿,保護(hù)系統(tǒng)和數(shù)據(jù)庫的安全

        ini_set();

        安全

        function strReplace($str)

        {

        $strResult = $str;

        if(!get_magic_quotes_gpc())//判斷設(shè)置是否開啟

        {

        $strResult = addslashes($strResult);//轉(zhuǎn)換sql語句特殊字符

        }

        return $strResult;

        }

        篇三:php框架分析

        PHP框架

        本文來自國外的一個(gè)PHP技術(shù)人員網(wǎng)站,總結(jié)了國外的十個(gè)目前最流行的PHP MVC框架。具體排名順序未必準(zhǔn)確,還有些知名框架,如Kohana等也沒有提及。不過仍可以做為一篇不錯(cuò)的參考。

        以下為十個(gè)目前最流行的基于MVC設(shè)計(jì)模式的PHP框架。

        1. Yii

        Yii是一個(gè)基于組件的高性能的PHP的框架,用于開發(fā)大規(guī)模Web應(yīng)用。Yii采用嚴(yán)格的OOP編寫,并有著完善的庫引用以及全面的教程。從 MVC,DAO/ActiveRecord,widgets,caching,等級式RBAC,Web服務(wù),到主體化,I18N和L10N,Yii提供了 今日Web 2.0應(yīng)用開發(fā)所需要的幾乎一切功能。而且這個(gè)框架的價(jià)格也并不太高。事實(shí)上,Yii是最有效率的PHP框架之一。

        2. CodeIgniter

        CodeIgniter是一個(gè)應(yīng)用開發(fā)框架——一個(gè)為建立PHP網(wǎng)站的人們所設(shè)計(jì)的工具包。其目標(biāo)在于快速的開發(fā)項(xiàng)目:它提供了豐富的庫組以完成常 見的任務(wù),以及簡單的界面,富有條理性的架構(gòu)來訪問這些庫。使用CodeIgniter開發(fā)可以往項(xiàng)目中注入更多的創(chuàng)造力,因?yàn)樗?jié)省了大量編碼的時(shí)間。

        3. CakePHP

        CakePHP是一個(gè)快速開發(fā)PHP的框架,其中使用了一些常見的設(shè)計(jì)模式如ActiveRecord,Association Data Mapping,F(xiàn)ront Controller以及MVC。其主要目標(biāo)在于提供一個(gè)令任意水平的PHP開發(fā)人員都能夠快速開發(fā)web應(yīng)用的框架,而且這個(gè)快速的實(shí)現(xiàn)并沒有犧牲項(xiàng)目 的彈性。

        4. PHPDevShell

        PHPDevShell是一個(gè)開源(GNU/LGPL)的快速應(yīng)用開發(fā)框架,用于開發(fā)不含Javascript的純PHP。它有一個(gè)完整的GUI管 理員后臺界面。其主要目標(biāo)在于開發(fā)插件一類的基于管理的應(yīng)用,其中速度、安全、穩(wěn)定性及彈性是最優(yōu)先考慮的重點(diǎn)。其設(shè)計(jì)形成了一個(gè)簡單的學(xué)習(xí)曲線,PHP 開發(fā)者無需學(xué)習(xí)復(fù)雜的新術(shù)語。PHPDevShell的到來滿足了開發(fā)者們對于一個(gè)輕量級但是功能完善,可以無限制的進(jìn)行配置的GUI的需求。

        5. Akelos

        Akelos PHP框架是一個(gè)基于MVC設(shè)計(jì)模式的web應(yīng)用開發(fā)平臺;诹己玫氖褂昧(xí)慣,使用它可以完成如下任務(wù):

        方便的使用Ajax編寫views

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

        管理國際化的應(yīng)用

        使用簡單的協(xié)議與模型及數(shù)據(jù)庫通信

        你的Akelos應(yīng)用可以在大多數(shù)共享主機(jī)服務(wù)供應(yīng)方上運(yùn)行,因?yàn)锳kelos對服務(wù)器唯一的要求就是支持PHP。因此,Akelos PHP框架是理想的用于發(fā)布單獨(dú)web應(yīng)用的框架,因?yàn)樗恍枰菢?biāo)準(zhǔn)PHP配置便能運(yùn)行。

        6. Symfony

        Symfony是一個(gè)用于開發(fā)PHP5項(xiàng)目的web應(yīng)用框架。其目的在于加速web應(yīng)用的開發(fā)以及維護(hù),減少重復(fù)的編碼工作。

        Symfony的系統(tǒng)需求不高,可以被輕易的安裝在任意設(shè)置上:你只需一個(gè)Unix或Windows,搭配一個(gè)安裝了PHP5的網(wǎng)絡(luò)服務(wù)器即可。它與差不多所有的數(shù)據(jù)庫兼容。Symfony的價(jià)位不高,相比主機(jī)上的花銷要低得多。

        對于PHP開發(fā)者而言,使用Symfony是一件很自然的事,其學(xué)習(xí)曲線只有短短一天。干凈的設(shè)計(jì)以及代碼可讀性將縮短開發(fā)時(shí)間。開發(fā)者可以將敏捷 開發(fā)的原理(如DRY,KISS

        或XP等)應(yīng)用在其中,將重點(diǎn)放在應(yīng)用邏輯層面上,而不用花費(fèi)大量時(shí)間在編寫沒完沒了的XML配置文件上。

        Symfony旨在建立企業(yè)級的完善應(yīng)用程序。也就是說,你擁有整個(gè)設(shè)置的控制權(quán):從路徑結(jié)構(gòu)到外部庫,幾乎一切都可以自定義。為了符合企業(yè)的開發(fā)條例,Symfony還綁定了一些額外的工具,以便于項(xiàng)目的測試,調(diào)試以及歸檔。

        7. Prado

        PRADO團(tuán)隊(duì)由一些PRADO狂熱者組成,這些成員開發(fā)并推動(dòng)PRADO框架以及相關(guān)項(xiàng)目的進(jìn)行。 PRADO的靈感起源于Apache Tapestry。從04年開始,PRADO成為SourceForge上的開源項(xiàng)目之一。

        8. Zend

        作為PHP藝術(shù)及精神的延伸,Zend框架的基礎(chǔ)在于簡單,面向?qū)ο蟮淖罴逊椒,方便企業(yè)的許可協(xié)議,以及經(jīng)過反復(fù)測試的快速代碼庫。Zend框架 旨在建造更安全,更可靠的Web 2.0應(yīng)用及web服務(wù),并不斷從前沿廠商(如Google,Amazon,Yahoo,F(xiàn)lickr,StrikeIron和 ProgrammableWeb等)的API那里吸收精華。

        9. ZooP

        Zoop PHP框架,意為Zoop面向?qū)ο蟮腜HP框架。

        這是個(gè)穩(wěn)定,可伸縮并可移植的框架。從誕生到現(xiàn)在的5年間,已經(jīng)在不少產(chǎn)品開發(fā)中被使用。Zoop是一個(gè)快速,有效并干凈的框架。它的伸縮性很好,你可以只安裝你需要的功能。對代碼并不很熟悉的開發(fā)者也可以通過Zoop快速的開發(fā)安全的web應(yīng)用。熟練的開發(fā)者則可以更加將Zoop的彈性利用到極致。Zoop建議將display,logic以及數(shù)據(jù)層(MVC)分開使用。

        Zoop由很多組件和項(xiàng)目集合而成,其中包括smarty和prototype AJAX框架,PEAR模塊等。高效的核心組件提供了很多你原本需要自己編碼來實(shí)現(xiàn)的功能。Zoop內(nèi)置的糾錯(cuò)功能可以通過配置實(shí)現(xiàn)生產(chǎn)環(huán)境下的錯(cuò)誤日志 生成,這個(gè)錯(cuò)誤日志提供了很多信息,可讀性很高,可以更輕易的尋找并排除錯(cuò)誤。Zoop的一個(gè)特別之處在于其GuiControls,在PHP中是一個(gè)相當(dāng)革新的想法。它提供了很多form widgets與驗(yàn)證完整的集合到一起,并形成了一個(gè)可以輕松打造個(gè)性化GuiControls的框架。

        10. QPHP

        QPHP,意為快速PHP,它是一個(gè)與ASP.NET類似的MVC框架;旧纤沁@樣一個(gè)情況: 整合了Java和C#的美感

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

        大量基于OOP的概念

        PHP服務(wù)器

        一、phpStudy簡體中文版

        該程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安裝,無須配置即可使用,是非常方便、好用的PHP調(diào)試環(huán)境.該程序不僅包括PHP調(diào)試環(huán)境,還包括了開發(fā)工具、開發(fā)手冊等.總之學(xué)習(xí)PHP只需一個(gè)包.對學(xué)習(xí)PHP的新手來說, WINDOWS下環(huán)境配置是一件很困難的事;對老手來說也是一件煩瑣的事.因此無論你是新手還是老手,該程序包都是一個(gè)不錯(cuò)的選擇。

        二、PHPnow

        PHPnow是 Win32 下綠色免費(fèi)的 Apache + PHP + MySQL 環(huán)境套件包。簡易安裝、快速搭建支持虛擬主機(jī)的 PHP 環(huán)境。

        附帶 PnCp.cmd 控制面板,幫助你快速配置你的套件,使用非常方便。安裝 PHPnow 只需解壓、初始化,就可得到一個(gè)標(biāo)準(zhǔn)的 PHP + MySQL 的服務(wù)器環(huán)境。然后就可以直接安裝 Discuz!

        等程序,或者進(jìn)行 PHP 開發(fā)調(diào)試。支持虛擬主機(jī):便捷的虛擬主機(jī)管理。虛擬主機(jī)代理:可與 IIS 共存 80 端口(代理方式)

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

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

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

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

        相信很多朋友對 Win+Apche+PHP+MySQL這樣的組合感興趣,但是不懂得編輯配置文件,導(dǎo)致在配置上面花了很大的時(shí)間。本套件采用傻瓜式安裝,一次搞定,方便調(diào)試和運(yùn)行PHP+MySQL程序。如果作為服務(wù)器對外開放請調(diào)整相關(guān)配置文件,本系統(tǒng)配置的安全系數(shù)不是非常高。請?jiān)?相關(guān)配置文件中修改Apache及PHP中網(wǎng)站管理員信箱及網(wǎng)站名稱。

        建議:由于出于程序測試目的配置,安全系數(shù)并不是太高,請自行調(diào)整相關(guān)配置文件,MySQL數(shù)據(jù)庫用戶名:root,密碼為空,安裝后請?jiān)O(shè)置密碼。

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

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

        開發(fā)框架是用來幫助開發(fā)人員快速設(shè)計(jì)和開發(fā)動(dòng)態(tài)網(wǎng)站的基礎(chǔ),幾乎每個(gè)月都會(huì)有大量的框架被開發(fā)人員發(fā)布,用來幫助web開發(fā)者更簡單和高效的開發(fā)web應(yīng)用。

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

        PHP框架

        1. Cake PHP

        CakePHP是一個(gè)擁有極大靈活性的開發(fā),維護(hù)和部署的快速開發(fā)框架。使用非常常見的MVC和ORM設(shè)計(jì)模式,及其配置規(guī)則幫助大家簡化開發(fā)過程而無須開發(fā)過多的代碼

        和ZF類似,CakePHP不要求配置。使用簡單。在IRC上擁有非常友好的社區(qū)#cakePHP,用來幫助新的用戶快速開始學(xué)習(xí);贛IT License,擁有最佳實(shí)踐,例如,安全,認(rèn)證和session處理。擁有面對對象的方式幫助你更簡單的使用。

        2. Yii Framework

        Yii是一個(gè)免費(fèi),開源的web應(yīng)用開發(fā)框架,使用PHP5開發(fā),幫助開發(fā)干凈,簡潔的設(shè)計(jì)并且鼓勵(lì)開發(fā)開發(fā)。它幫助流水化的開發(fā)應(yīng)用,并且保證高效,可擴(kuò)展和易維護(hù)。性能極大的優(yōu)化,非常適合開發(fā)任何類型的產(chǎn)品和項(xiàng)目。然而,它內(nèi)建復(fù)雜,企業(yè)級別的應(yīng)用。你擁有完整的控制,包括表現(xiàn)層和持久層,符合了企業(yè)級別開發(fā)的指導(dǎo)方針

        3. Zend

        Zend Framework 2 是一個(gè)使用PHP5.3+來開發(fā)web應(yīng)用和服務(wù)的開源框架。使用100%的面對對象的代碼并且使用PHP5.3種的新特性,例如名字空間,late static binding,lamda function和closure。Zend framewok 2 由成功的PHP框架Zend Framework 1演變而來,而Zend framework 1擁有1500萬的下載量。Zend framework2擁有獨(dú)特的組件結(jié)構(gòu),每一個(gè)組件都設(shè)計(jì)的盡量少和其它組件產(chǎn)生依賴關(guān)系。 ZF2遵循了嚴(yán)格的面對對象的設(shè)計(jì)原理。這種非嚴(yán)格的組件關(guān)系結(jié)構(gòu)允許開發(fā)人員使用任何他想使用的組件。

        4. Symfony

        Smyfony是一個(gè)web應(yīng)用框架,遵循了典型的MVC(model view controller)的設(shè)計(jì)結(jié)構(gòu),現(xiàn)在越來越受歡迎,Symfony基于MIT license,它使用一些PHP代碼類的輔助類庫得開發(fā)的過程簡單

        5. Webasyst

        webasyst是一個(gè)開源的框架用來開發(fā)平滑的多用戶web應(yīng)用或者復(fù)雜的網(wǎng)站。和其它的框架,例如,zend和symfony,比較起來,Webasyst框架更專注,并且允許更快和更高效的創(chuàng)建基于商業(yè)和團(tuán)隊(duì)使用的應(yīng)用。這個(gè)框架提供了大量的現(xiàn)成的工具用來管理用戶和授權(quán),UI創(chuàng)建,移動(dòng)端的訪問等等

        6. Laravel

        Laravle是一個(gè)定位于優(yōu)雅簡單的PHP框架。變成不會(huì)變的苦悶。事實(shí)上,使用正確的工具絕對是讓它成為一個(gè)讓人愉悅的事情。Laravel適合所有的PHP開發(fā)人員,特別是初學(xué)者。

        除了完善的文章,Laravel的友好的社區(qū)一直幫助回答文檔上沒有涉及到的相關(guān)問題。使用Bundle來打包和分享代碼絕對是一個(gè)非常棒的方式

        7. Guzzle

        Guzzle是一個(gè)幫助大家解決發(fā)送HTTP請求和創(chuàng)建web service 客戶端中多余的步驟的框架。包含了用來創(chuàng)建強(qiáng)壯的web service客戶端的工具,其中: 定義輸入和輸出的服務(wù)描述API,用來遍歷分頁資源的資源迭代,高效發(fā)送大量請求等等。

        8. Phalcon PHP

        Phalcon PHP是一個(gè)被發(fā)布成為C擴(kuò)展并且提供高性能和低資源消耗的web框架。使用C書寫,平臺無關(guān)。作為這樣的框架,PHP支持微軟的windows系統(tǒng), GNU/linux,Max OSX,你可以下載一個(gè)適合你的系統(tǒng)的二進(jìn)制包或者自己編譯

        9. CodeIgniter

        Codelgiter是一個(gè)強(qiáng)大的PHP框架,擁有非常小的體積,針對需要使用簡單優(yōu)雅的工具套件開發(fā)完整特性的web應(yīng)用而開發(fā)。如果你需要處理共享主機(jī)賬號或者客戶時(shí)間有限制,并且厭倦了沒有文檔的大型框架的話,Codeignier可能非常適合你

        10. Fuel PHP

        Fuel是一個(gè)簡單,靈活,社區(qū)驅(qū)動(dòng)的5.3 web框架,基于其它框架中的好的想法而開發(fā)一個(gè)框架。在Apache,,IIS和Nginx上測試過。Fuel使用另外一種方式實(shí)現(xiàn),和其它框架不同,它努力成為社區(qū)驅(qū)動(dòng)的框架。剛成立不到6個(gè)月,已經(jīng)有30多個(gè)開發(fā)人員貢獻(xiàn)了代碼和文檔。

        當(dāng)然了國產(chǎn)框架也有一些, 例如,thinkPHP也還可以,具體項(xiàng)目還是得具體分析!

        免費(fèi)領(lǐng)取兄弟連php原創(chuàng)視頻教程光盤,詳情咨詢官網(wǎng)客服: http://www.lampbrother.net

        篇五:主流PHP框架優(yōu)缺點(diǎn)對比

        主流PHP框架優(yōu)缺點(diǎn)對比

        2012-04-14 文章互聯(lián)網(wǎng) 瀏覽次數(shù): 206

        PHP是一種在國內(nèi)外都比較流行的開源服務(wù)器端腳本開發(fā)語言。能夠適應(yīng)大中小型項(xiàng)目的開發(fā)需求。我們將在這篇文章中向大家介紹幾款主流PHP框架及其相關(guān)優(yōu)缺點(diǎn)評比,作為一個(gè)參考分享給朋友們。

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

        優(yōu)點(diǎn):

        1. 配置簡單,全部的配置使用PHP腳本來配置,執(zhí)行效率高;具有基本的路由功能,能夠進(jìn)行一定程度的路由;具有初步的Layout功能,能夠制作一定程度的界面外觀;數(shù)據(jù)庫層封裝的不錯(cuò),具有基本的MVC功能

        2. 快速簡潔,代碼不多,執(zhí)行性能高,PHP框架簡單,容易上手,學(xué)習(xí)成本低,文檔詳細(xì);自帶了很多簡單好用的library,框架適合小型應(yīng)用

        缺點(diǎn):

        1. 把Model層簡單的理解為數(shù)據(jù)庫操作

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

        總體來說,拿CodeIgniter來完成簡單快速的應(yīng)用還是值得,同時(shí)能夠構(gòu)造一定程度的layout,便于模板的復(fù)用,數(shù)據(jù)操作層來說封裝的不錯(cuò),并且CodeIgniter沒有使用很

        多太復(fù)雜的設(shè)計(jì)模式,執(zhí)行性能和代碼可讀性上都不錯(cuò)。至于附加的 library 也還不錯(cuò),簡潔高效。

        優(yōu)點(diǎn):

        1. CakePHP是最類似于RoR的PHP框架,包括設(shè)計(jì)方式,數(shù)據(jù)庫操作的Active Record方式;設(shè)計(jì)層面很優(yōu)雅,沒有自帶多余的 library,所有的功能都是純粹的框架,執(zhí)行效率還不錯(cuò);數(shù)據(jù)庫層的 hasOne, hasMany 功能很強(qiáng)大,對于復(fù)雜業(yè)務(wù)處理比較合適;路由功能,配置功能還不錯(cuò);自動(dòng)構(gòu)建腳手架(scaffold)很強(qiáng)大;適合中型應(yīng)用;基本實(shí)現(xiàn)過了MVC每一層;具有自動(dòng)操作命令行腳本功能;

        2. 文檔比較全,在國內(nèi)推廣的比較成功,大部分都知道CakePHP,學(xué)習(xí)成本中等 缺點(diǎn):

        1. CakePHP非常嚴(yán)重的問題是把Model理解為數(shù)據(jù)庫層操作,嚴(yán)重影響了除了數(shù)據(jù)庫之外的操作能力

        2. CakePHP的cache功能略顯薄弱,配置功能稍嫌弱;CakePHP不適合大型應(yīng)用,只適合中型應(yīng)用,小型應(yīng)用來說略微的學(xué)習(xí)成本高了點(diǎn)

        評價(jià):

        總體來說CakePHP框架代表了PHP框架很重要的一個(gè)時(shí)代和代表,并且目前發(fā)揮著很重要的作用,不少自己寫的框架都模仿了CakePHP的方式,是個(gè)里程碑式的產(chǎn)品;CakePHP透露著RoR的敏捷開發(fā)方式和把數(shù)據(jù)庫操作認(rèn)為是唯一Model的設(shè)計(jì)思想,作為開發(fā)快速應(yīng)用和原型是絕好的工具;同樣,用來做Web2.0網(wǎng)站的開發(fā)框架,也是值得選擇的。

        優(yōu)點(diǎn):

        1. 官方出品,自帶了非常多的 library,框架本身使用了很多設(shè)計(jì)模式來編寫,架構(gòu)上很優(yōu)雅,執(zhí)行效率中等;MVC設(shè)計(jì)中,比較簡潔,具有路由功能,配置文件比較強(qiáng)大(能夠處理XML和php INI),各種 library 很強(qiáng)大,是所有PHP框架中各種功能最全面的,包括它不僅是一個(gè)PHP框架,更是一個(gè)大類庫(取代PEAR),這是它的主要特色;能夠直觀的支持除數(shù)據(jù)庫操作之外的Model層(比 CodeIgniter 和 CakePHP 強(qiáng)),并且能夠很輕易的使用Loader功能加載其他新增加的Class;Cache功能很強(qiáng)大,從前端Cache到后端Cache都支持,后端Cache支持Memcache、APC、SQLite、文件等等方式;數(shù)據(jù)庫操作功能很強(qiáng)大,支持各種驅(qū)動(dòng)(適配器)

        2. 文檔很全,在國內(nèi)社區(qū)很成熟,并且目前不少Web 2.0網(wǎng)站在使用,學(xué)習(xí)成本中等

        缺點(diǎn):

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

        2. 沒有自動(dòng)化腳本,創(chuàng)建一個(gè)應(yīng)用,包括入口文件,全部必須自己手工構(gòu)建,入門成本高

        3. Zend Framework 作為一個(gè)中型應(yīng)用框架問題不大,也能夠勉強(qiáng)作為大型應(yīng)用的PHP框架,但是作為一個(gè)很成熟的大型PHP框架來說,還需要一些努力

        評價(jià):

        作為官方出品的框架,Zend Framework的野心是可以預(yù)見的,想把其他框架擠走,同時(shí)封裝很多強(qiáng)大的類庫,能夠提供一站式的框架服務(wù),并且他們的開發(fā)團(tuán)隊(duì)很強(qiáng)大,完全足夠有能力開發(fā)很強(qiáng)大的產(chǎn)品出來,所以基本可以確定的是Zend Framework前途無量,如果花費(fèi)更多的時(shí)間去完善框架。同樣的,Zend Framework架構(gòu)本身也是比較優(yōu)雅的,說明Zend官方是有很多高手的,設(shè)計(jì)理念上比較先進(jìn),雖然有一些功能實(shí)現(xiàn)的不夠完善,

        比如View層,自動(dòng)化腳本等等,這些都有賴于未來的升級?傮w來說Zend Framework是最值得期待的PHP框架,當(dāng)然,你目前要投入你的項(xiàng)目中使用也是完全沒問題的。

        優(yōu)點(diǎn)

        1. Symfony 是我了解的PHP框架中功能最強(qiáng)大的,而且我使用時(shí)間比較長,但是很多功能還是沒有挖掘出來;它完整實(shí)現(xiàn)了MVC三層,封裝了所有東西,包括 $_POST,$_GET 數(shù)據(jù),異常處理,調(diào)試功能,數(shù)據(jù)檢測;包含強(qiáng)大的緩存功能,自動(dòng)加載Class(這個(gè)功能很爽),強(qiáng)大的i18n國家化支持;具有很強(qiáng)大的view層操作,能夠零碎的包含單個(gè)多個(gè)文件;非常強(qiáng)大的配置功能,使用yml配置能夠控制所有框架和程序運(yùn)行行為,強(qiáng)大到讓人無語;能夠很隨意的定義各種自己的class,并且symfony能夠自動(dòng)加載(auto load)這些class,能夠在程序中隨意調(diào)用;包含強(qiáng)大的多層級項(xiàng)目和應(yīng)用管理:Project --> Application --> Module --> Action,能夠滿足一個(gè)項(xiàng)目下多個(gè)應(yīng)用的需要,并且每層可以定義自己的類庫,配置文件,layout;非常強(qiáng)大的命令行操作功能,包括建立項(xiàng)目、建立應(yīng)用、建立模塊、刷新緩存等等;

        2. Symfony絕對是開發(fā)大型復(fù)雜項(xiàng)目的首選,因?yàn)槭褂昧薙ymfony,將大大節(jié)約開發(fā)成本,并且多人協(xié)作的時(shí)候,不會(huì)出現(xiàn)問題,在Project級別定義好基礎(chǔ)Class以后,任何模塊都能夠重用,大大復(fù)用代碼

        缺點(diǎn):

        1. 數(shù)據(jù)庫操作model采用了重量級的propel和creole,不過在我測試的版本中已經(jīng)把他們移到了addon里,可用可不用

        2. 緩存功能無法控制,每次開發(fā)調(diào)試總是緩存,需要執(zhí)行 symfony cc, symfony rc 來清除和重建緩存;

        3. 效率不是很高,特別是解析模板和讀取配置文件的過程,花費(fèi)時(shí)間不少;

        4. 學(xué)習(xí)成本很高,并且國內(nèi)沒有成熟的社區(qū)和文檔,連中文手冊都沒有,相應(yīng)的要掌握所有功能,需要花費(fèi)比較多的時(shí)間

        評價(jià):

        Symfony絕對是企業(yè)級的PHP框架,唯一能夠貌似能夠跟Java領(lǐng)域哪些強(qiáng)悍框架抗衡的東西;強(qiáng)悍的東西,自然學(xué)習(xí)復(fù)雜,但是相應(yīng)的對項(xiàng)目開發(fā)也比較有幫助,自然是推薦復(fù)雜的項(xiàng)目使用Symfony來處理,覺得是值得,后期的維護(hù)成本比較低,復(fù)用性很強(qiáng)。相應(yīng)的如果使用Symfony的應(yīng)該都是比較復(fù)雜的互聯(lián)網(wǎng)項(xiàng)目,那么相應(yīng)的就要考慮關(guān)于數(shù)據(jù)庫分布的問題,那么就需要拋棄Symfony自帶的數(shù)據(jù)庫操作層,需要自己定義,當(dāng)然了,Symfony支持隨意的構(gòu)造model層。

        總結(jié)

        以上數(shù)款PHP框架,各有特色,而且都是開源項(xiàng)目,不過框架針對的項(xiàng)目不一樣,一般來說 CodeIngiter 比較適合小型項(xiàng)目,CakePHP 和 Zend Framework 比較適合中型項(xiàng)目,Symfony 比較適合大型重量級項(xiàng)目,在項(xiàng)目選型的時(shí)候,要充分考慮框架的可以定制性、擴(kuò)展性,因?yàn)槊總(gè)項(xiàng)目都無法確定你是否會(huì)隨著需求的變化進(jìn)行改變。

        相對來說,Zend Framework 和 Symfony 應(yīng)對變化的能力比較強(qiáng),特別是能夠隨意定制 model 層的Class,能夠非常方便增加自己業(yè)務(wù)或者數(shù)據(jù)處理類,我是個(gè)人比較推薦在中大型項(xiàng)目中使用的PHP框架。

        CodeIngiter 和 CakePHP 在中小型項(xiàng)目中同樣能夠發(fā)揮重大作用,快速開發(fā)和原型構(gòu)建,非常適合目標(biāo)不清晰的原型項(xiàng)目的開發(fā)。

      【php知識框架總結(jié)】相關(guān)文章:

      2017最熱門的PHP框架07-26

      如何學(xué)好PHP知識09-20

      PHP語言新手入門知識09-27

      PHP高手需要掌握的知識點(diǎn)02-15

      Smarty (PHP模板引擎)知識點(diǎn)介紹06-12

      PHP的錯(cuò)誤機(jī)制總結(jié)09-09

      關(guān)于php面試寶典及PHP面試技巧08-16

      PHP的壓縮函數(shù)06-21

      php高級教程01-23

      php對圖像的各種處理函數(shù)代碼總結(jié)07-03

      主站蜘蛛池模板: аⅴ天堂一区视频在线观看| 加勒比精品一区二区三区 | 亚洲区一区二区中文字幕 | 日韩精品一区二区三区在线观看的| 久久er这里都是精品23| 日本一区二区三区资源视频| 国产一区亚洲欧美成人| 日本视频一区二区三区免费观看| AV中文码一区二区三区| 亚洲香蕉毛片久久网站老妇人| 精品国产又大又黄又粗av| 亚洲av免费不卡一区二区| 江安县| 欧美日韩综合在线视频免费看| 亚洲无人一区二区蜜桃| 国产精品亚洲专区一区二区| 99久久婷婷这里只有精品| 宜章县| 茶陵县| 五华县| 海安县| 临江市| 北宁市| 2020亚洲国产| 亚洲区一区二在线视频| 太和县| 熟女丝袜美腿亚洲一区二区三区| 惠来县| 91精品国产91久久综合蜜臀| 崇阳县| 富锦市| 99热高清亚洲无码| 国产人妖av一级黄片| 国产啪精品视频网站免| 读书| 亚洲人成无码网站十八禁| 日韩中文字幕区一区有砖一区| AV熟妇导航网| 亚洲一区二区在线精品| 国产黄片小视频在线观看| 国产亚洲精品hd网站|