3.2版本視頻講解知識點

第一天**********************************************************
 
【介紹】
ThinkPHP框架:簡稱tp框架。
真實項目開發步驟:
1.多人同時開發,協做開發項目、分工合理、效率有提升。(緣由:代碼風格不同、分工很差)。
2.測試階段
3.上線運行
4.對項目進行維護、修改、升級(單我的維護項目,十分困難,代碼風格不同)
5.項目穩定的運行階段
6.項目中止運行(舊項目的人員已經所有離職、新人開發新項目)
 
運用框架的緣由:   

在項目開發中,一些架構和代碼都是重複的,爲了不重複勞動,因而各類各樣的框架誕生了。javascript

在PHP開發中,選擇合適的框架有助於加快軟件開發,節約寶貴的項目時間,讓開發者專一於功能的實現上。因爲流行的框架通過了大量項目的檢驗,因此使用框架還有助於建立更加穩定和安全的應用程序。php

 
 
問題:
1.多人開發項目,分工不合理(html,php,myslq)
2.代碼風格不同,後期維護十分困難
3.項目生命週期十分短。
4.項目不能很好地適應客戶需求,牽一髮而動全身。
 
其餘相關框架
1.zendframework zendphp語言公司發佈的官方框架,重量級(功能多)。
2.yii(讀做:外哎)美國華人開發的框架,xue qiang,qiang,重量級框架,面向對象框架(純OOP框架)
3.CI CodeIgniter 輕量級框架
4.cakephp    外國框架,重量級,速度慢
5.symfony    外國重量級框架。
6.ThinkPHP 輕量級框架,國人框架,入門快。
 
什麼是框架:
        一堆代碼的集合,裏邊有變量、函數、類、常量、,裏邊也有許多設計模式MVC、AR數據庫、單例等等。
        框架能夠節省咱們50%-60%的工做量,咱們所有精力都集中在業務層面。
爲何使用框架:
         1.框架能夠幫助咱們快速,穩定、高效搭建程序系統
         2.該系統因爲框架的使用使得自己的維護性,靈活性、適應客戶需求方面獲得最大化的加強。
         3.使用框架的過程當中可使咱們的注意力所有集中業務層面,而無需關心程序的底層框架。
【框架目錄文件介紹】
3.2版本已經成熟了。不斷有功能在擴展。
index.php:入口文件
Public:放靜態資源的,公共的目錄。像html和css
Application:當前的應用目錄。
ThinkPHP:
       目錄: Common:核心函數庫放在裏面:
                                            build.php:
                                            functions.php:
                  Conf:框架裏面的配置
                                            convation.php:最基本配置文件,不能修改。
                                            debug.php:
                  Lang:語言包,框架支持哪些語言
                  Library:資源庫,很是重要,tp框架中的許多信息均可在其中找到。
                                            Behavior:系統的行爲目錄
                                            Org:可使用到的共鞥類庫
                                            Think:   最核心的東西
                                                       經常使用的:App.class.php和Think.class.php。
                                                                   Image.Class.php::生成驗證碼、縮略圖、水印
                                                                   DB.class.php:數據庫
                                                                   Log.class.php:記錄日誌
                                                                   Model.class.php:數據模型的父類。
                                                                  Page.class.php:作數據分頁的
                                                                  Storage.class.php:運行時生成文件存儲的。
                                                                   Upload.class.php:上傳文件的
                                                                   View.class.php:生成視圖的。
                                            Vendor:小商店,模板的類文件目錄。
                  Tpl:有幾個靜態的模板(html頁面),四個到五個,公共的,
        文件:ThinkPHP.php:框架的核心程序,每一個框架在使用的時候都須要引入它。
【框架項目部署】
shop 商城項目
book 圖書管理系統
car 汽車銷售系統,
三個項目可使用一個公共的tp框架。
        :
 
 
 
步驟:
1.建立一個入口文件:index.php
2.項目自動建立目錄。(建立一個虛擬主機)
Common:當前項目個性函數庫
Conf:配置目錄。
Controller:控制器
Model:model模板
View:視圖目錄。
 
3.訪問入口文件的同時系統會自動把對應的文件建立出來。
    
Common、Home、Runtime爲系統自動建立。
 
【控制器和方法建立】
主流的額設計模式:mvc模式。
入口文件?m=模塊&c=控制器&a= 控制器裏的方法
 
訪問:
【路由解析】
一。經過url地址get參數找到指定控制器並進行對應方法請求
    http://index.php?m=模塊名稱&c=控制器&a=操做方法:
以上url地址信息代碼不夠優雅、不安全。這種方法太直白了
 
二。tp框架url地址能夠由如下四種
    1.http://網址/index.php?m=XX&c=XX&a=XX                基本模式、get模式
    2.http://網址/index.php/模塊/控制器/操做方法                路徑模式pathinfo
    3..http://模塊/控制器/操做方法                                        rewrite重寫模式
    4..http://網址/index.php?s=/模塊/控制器/操做方法        兼容模式
 
三。具體url地址模式設置在配置文件: ThinkPHP/Conf/Convention.php
             'URL_MODEL' => 1, // URL訪問模式,可選參數0、一、二、3,表明如下四種模式:
             // 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE 模式); 3 (兼容模式) 默認爲PATHINFO 模式
    若是要修改,不能直接在該文件中修改。可在模塊中/conf/config.php中修改。
    
config.php是咱們當前本身項目的配置文件,咱們能夠經過該文件達到配置變量的目錄。這個文件在系統運行過程彙總會覆蓋convention.php的配置變量。
include 「convention.php」;
include "config.php";
後引入的文件要把先引入的文件配置變量覆蓋掉。
 
咱們系統有兼容4中url地址模式的使用。
系統有的時候,會自動建立url地址,他會根據當前模式進行url地址建立使用。
U():建立url地址。
 
四。在入口文件index.php調整當前模式爲開發調試模式
    //把目前tp模式又生成模式變爲開發調試模式
     define("APP_DEBUG", true);//會將Runtim/common-runtime.php刪除掉
 
1.咱們學習到了配置變量(核心配置變量conversion.php、當前應用配置變量confin.php)
2.快捷函數U("模塊/控制器/方法")   根據參數和(url模式)建立對應的url地址
3.把框架的模式調整爲開發調試模式。
 
【開發和生成模式】
 1.開發調試模式:系統須要加載26個文件。    index.php  define("APP_DEBUG", true)
    生產模式:系統只須要加載不多的文件。    index.php  define("APP_DEBUG", false)
                    節省了許多文件的開發、關閉的系統開銷,節省資源。
    怎麼知道數量:
            觀察系統運行過程當中生成的日誌信息:
                    1.作變量配置,convention.php, config.php
                    2.tp框架配置變量:convention.php Behavior行爲文件 程序靈活設置
                    Behavior  行爲:ThinkPHP/Library/Behavior/ShowPageTraceBehavior.php:顯示頁面追蹤信息
                    $options裏邊的信息時能夠直接經過config.php進行修改的。
                     //讓頁面顯示追蹤日誌信息
                      'SHOW_PAGE_TRACE' => true,
                    成功時,頁面右下腳,單擊它可打開
                                                                                                        
 
                    將「文件加載」中的全部文件 在一塊兒了,在common~runtime.php
【控制器調用視圖View模板】
1.
APP_DEBUG=true;調試模式錯誤信息顯示更詳細。
 
2.
控制器和模板的關係:在view目錄都會有一個與控制器標誌同樣的目錄,裏面有具體模板文件。
例如:GoodsController.class.php控制在view目錄有Goods目錄,裏邊都是Goods控制器對應的模板文件。
【視圖模板與框架整合】
1.引入靜態代碼
2.引入css、image、js
    a).以上3樣東西,瀏覽器須要發送單獨的http請求。
        
    b)。引入css的時候,一User控制器標誌做爲當前目錄,顯然不行。
 
 <link href="http://localhost/1116/shop/public/css/style.css" rel="stylesheet" type="text/css" />以上目錄設置不利於後期維護,例如其中的目錄有修改,就須要所有都修改,有不少重複勞動。
    優化後:利用常量把路徑定義好,後期只維護一個常量便可。
     //定義css、img、js常量
 define("SITE_URL", "http://localhost/1116/");
 define("CSS_URL",SITE_URL,"shop/public/css/");
 define("IMG_URL",SITE_URL,"shop/public/img/");
 define("JS_URL",SITE_URL,"shop/public/js/");
tp框架默認引擎的使用: <link href="{$Think.const.CSS_URL}style.css" rel="stylesheet" type="text/css" />
 
3.模板與tp模板整合
    1.引入靜態代碼
    2.引入css、img、js文件
    3.在入口文件地方把css、img、js的路徑設置常量
    4.在模板匯中經過常量得到具體的css、img等文件信息(後期重複的一段代碼。)
    5.把css樣式文件自己的圖片路徑設置正確(得到圖片的相對位置是自己本身css文件)
 
【URL地址大小寫】
1.在config.php裏邊url大小寫敏感
    // 默認false 表示URL區分大小寫 true則表示不區分大小寫
     'URL_CASE_INSENSITIVE' => true,   
2.引入文件:include 「hello.php」;              include "Hello.php";實際都會把指定的文件找到。
    tp框架自己本身作了額外設置:include 「hello.php」;              include "Hello.php";表示引入兩個不一樣文件。
【空操做和空控制器使用】
1.空操做:操做方法不存在。
    空控制器:沒有指定控制器。
    http://網址/index.php/Home/User/login
    http://網址/index.php/Home/User/hello    空操做                                        
    http://網址/index.php/Home/beijing/login    空控制器
    eg:空操做:
    
    通常網站處於安全考慮不給用戶提示任何錯誤信息。
    空操做本質意思:一個對象(控制器)調用自己不存在的方法。
    在OOP裏,對象調用自己不存在方法,處於用戶體驗比較好的角度考慮,咱們能夠在類裏邊製做一個魔術方法: 
           function __call();
            //避免該方法被重複在各個控制器中書寫,能夠把該該訪問放在父類裏
              function __call($m,$arg){  }
            普通控制器父類的位置:
                                        
 
3.U():製做url地址的快捷函數
    C(名稱):得到配置變量(convention.php、config.php)信息  
    C(名稱,值)    設置配置變量信息。
    L():得到語言變量信息。
    E():給頁面輸出錯誤信息。
    A(「模塊/控制器」):實例化控制器對象。eg:A("Home/User"):實例化User控制器對象。
            3.2版本:也可實例化其餘項目的控制器對象。A("book://Home/User"):實例化book項目User控制器對象。
4.     
空操做有兩種解決方案:
            1.在對應的控制器裏邊製做一個方法,名稱爲「_empty」,這個控制器的空操做都會自動執行該方法(推薦使用)。
            2.給空操做的名稱制做一個同名的模板出來,系統會自動調用。
5.空控制器
      1. http://網址/index.php/Home/tianjin/login,其中,無tianjin
        
        2.空控制器:在實例化控制器對象的時候,沒有找到指定的類。
            何時實例化控制器對象:ThinkPHP/Library/Think/App.class.php
            熟記文件:
                            index.php:入口文件
                            ThinkPHP/ThinkPHP.php:框架核心文件
                            ThinkPHP/Library/Think/Think.class.php:框架核心文件
                            ThinkPHP/Library/Think/App.class.php:框架應用文件。內部包括控制器對象建立,以及對象調用指定的方法呈                                                                                    
現內容。
        3.
          空控制器解決方案:能夠再作一個控制器,名稱EmptyContrller.class.php。在該控制器內部其實只需製做一個_empty()方法便可。
 
【項目分組設置】
1.系統有前臺用戶操做界面
系統還有後臺共公司內部人員使用維護平臺
二者在使用的過程當中就是對」控制器「、」視圖模板「、」model模型「的操做。
2. 爲了系統開發方便,及代碼部署更加合理,咱們的控制、view視圖、等先後臺文件不要混在一塊兒,要在物理結構上分開。
3.
4.訪問前臺:http://網址/index.php/Home/控制器/操做方法    訪問Home分組的控制器和操做方法
後臺:http://網址/index.php/Admin/控制器/操做方法             訪問Admin分組的控制器和操做方法
【後臺登陸頁面搭建】
1.控制器
        ManagerController.class.php
        function.login()
爲後臺靜態資源目錄建立常量
 
【後臺首頁品字形框架搭建】
1.
 
 

【數據修改具體實現】

1.經過路由給一個操做方法傳遞參數css

    http://網址/index.php/模塊/控制器/方法upd/變量名1/值/變量名2/值/變量名3/值 html

    以上路由是經過get形式給指定的操做傳遞了三個參數信息java

    原則三個參數信息接收的時候經過$_GET接收便可mysql

    例如:$_GET[‘變量名1’];   include()jquery

 

    以上參數信息接收太直白,不安全,須要按照框架規則使用下邊的方式接收get參數信息sql

    http://網址/index.php/Admin/Goods/upd/name/tom/age/25/addr/beijing數據庫

    function upd($name,$age,$addr){編程

        $name;

        $age;

        $addr;

    }

    以上參數表述,若是在請求的時候沒有按照規則傳遞參數,那麼當前方法禁止訪問。

    (除非參數有默認值) 

2.修改商品信息步驟:

    1. 在「修改」按鈕處把被修改商品id信息經過get形式傳遞給upd操做

    2. 在upd方法裏邊製做形式參數$goods_id,接收服務器給傳遞的get變量goods_id

    3. 在修改表單裏邊製做隱藏域goods_id,避免tp框架禁止修改語句執行

    4. 在upd操做方法內部有兩個邏輯:展示表單、收集表單

【表單驗證】

1.方式:javascript、jquery  、在服務器端經過tp框架實現表單驗證

2.要驗證的表單:用戶名、密碼、重複密碼、郵箱、qq、手機號碼、愛好、學歷

3.具體步驟:

    1. 製做表單

    2. 表單form數據經過create()方法收集(驗證功能要求咱們必須經過create()方法收集數據)

    3. 自定義數據model模型類實現具體驗證規則

注意:

    1.一次性得到所有驗證錯誤

    2.爲同一個項目設置多個驗證。

    3.若是出錯,顯示提示:

                如:郵箱:格式不正確。

                      qq:都是數字的,長度5-10位,首位不爲0。---正則:/^[1-9]\d{4,9}$/。qq格式不正確

                      手機:

                     性別不用驗證,默認有一個選項

                    學歷必須選擇一個(下拉框):

                     愛好:複選框(至少選擇一項)

    4.數組--元素的個數

    5.這些基礎知識到任什麼時候候都用獲得。

 

【內容回顧】

1. 3種實例化model模型方法

    a) new  命名空間GoodsModel();

    b) D([「模型標誌Goods」])   (以前版本會實例化自定義model對象,目前都實例化Model基類對象)

        i. 沒有參數實例化一個Model對象、有參數也實例化一個Model對象操做goods數據表

    c) M([「模型標誌Goods」])

        i. 沒有參數實例化一個Model對象、有參數也實例化一個Model對象操做goods數據表

2. 數據庫查詢及連貫操做查詢

    a) select()

    b) select(10)  主鍵值等於10的記錄

    c) select(「20,21,22」)  主鍵值  in  20,21,22 的三條記錄

    d) find(4)  主鍵值等於4的記錄

    e) select()方法返回二維數組,find方法返回一維數組

    f) 連貫操做查詢方法:

    g) field()  where()  limit()  父類Model已經定義好的方法

    h) table()  group()  order()  group()  having() 統一在魔術方法__call()裏邊聲明

    i) 以上方法能夠連續操做執行,使用沒有順序要求

    j) $obj -> limit(5)->where(‘price>100’)->order(‘id desc’)->select();

3. 聚合函數使用

    a) count()  sum()  max()  min()  avg()

    b) 以上方法也是在Model的魔術方法__call()裏邊定義

4. 添加數據記錄add()

    a) 兩種方式:數組、AR操做

5. 修改數據信息save

    a) 兩種方式:數組、AR操做

    b) 注意:爲了修改爲功必須有兩個條件之一被設置

        i. 信息裏邊有主鍵值id值被修改

        ii. 能夠經過where設置具體哪些記錄被修改

6. 刪除數據delete

    a) $goods -> delete(10)  主鍵值等於10的記錄信息

    b) $goods -> delete(「10,12,13」)  刪除三條記錄主鍵值 in  10,12,13 -------------字符串

    c) $goods -> where(‘id>100’)->delete()  id>100的記錄都被刪除-------------where條件

7. 原生sql語句執行

    a) query()  執行查詢語句,返回二維數組信息

    b) execute()  執行增長、修改、刪除,返回受影響的記錄數目,返回false表示sql語句有錯誤,返回0表示sql語句        執行先後對數據沒有改變

8. 表單驗證

    a) 在自定義模型裏邊重寫$_validate

    b) $_validate屬性定義時一個數組信息,內部每一個小的單元仍是一個數組

    c) array(字段,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間)

    d) 驗證規則:require、email

    e) 驗證條件:

        i. 0  字段在$_POST裏邊存在就驗證 

        ii. 1  必須驗證

        iii. 2  值不爲空才驗證

    f) 附加規則:regex   in   callback  

 

第三天**********************************************************************************************************

【用戶註冊完善】

implode()把數組元素用逗號給合併起來

代碼部分:

頁面跳轉:成功呈現笑臉。

 

【命名空間】

namespace

1.在php裏邊,同一個應用請求裏邊若是存在兩個方法(類名),他們的名字同樣(例如都是getName()),因爲php本  

身語法規則的限制,系統是要報錯的

 解決方法:

① 把他們的名字改成不同的 例如  agetName()   bgetName()

② 經過命名空間解決(只有學習tp框架才用命名空間,其餘語言都不用命名空間)

    Yii 框架   爲了不名字重複引發問題,同步的類前邊都有 C  字樣

 

1. 簡單應用

    a) 命名空間是虛擬的定義空間,不是真實存在目錄(能夠寫一些假的)

    b) 命名空間的分隔符都是反斜槓 \

    c) 非限定名稱:getName()  得到與其最近的命名空間的getName()

    d) 限定名稱:beijing\getName()  相對方式  經過最近的命名空間定位beijing\getName()

    e) 徹底限定名稱: \beijing\getName()  直接在指定的命名空間得到具體元素

    f) 命名空間針對:函數、類名、常量三者其做用,在命名空間裏邊把這三種統稱爲元素

                

        定義常量的時候,都定義爲大寫的。

    

2.子空間應用

            

 

3. 別名和導入

    a) 導入/引入 use

    b) 使用一個元素,使用非限定名稱,在當前最接近的空間裏邊得到元素

    c) 若是當前空間裏邊沒有指定元素,也能夠在導入的空間裏邊尋找

          

    d) 別名應用:

    e) 若是在引入空間的時候也把元素給引入了,在當前的空間裏邊也有同名字的元素,那麼這個外來的元素和內部元素要有衝突,這時能夠經過別名定義來從新給外來的元素起名字並使用             

                     

4. 公共空間

    a) 第一種狀況

    b) 沒有使用namespace定義空間,當前空間就是一個公共空間

    c) 例如一個有namespace的文件引入了一個沒有namespace的文件程序

    d) 沒有namespace的文件空間就是公共空間

    e) 在namespace文件裏邊能夠經過\斜槓直接訪問公共空間元素

    f) function getName(){}  ------公共空間的元素

    g) namespace beijing;

    h) function getName(){}  -----beijing空間的元素

    i) 第二種狀況

    j) 當前文件沒有namespace、可是引入的文件有namespace

    k) 當前文件就是公共空間,引入文件有本身空間      

            

公共空間有兩種狀況:

1. 當前有空間,引入沒有空間(公共空間)

    a) 默認使用當前空間的元素.

    b) 統一用"\"斜槓引入公共空間元素.

2. 當前沒有空間(公共空間),引入有空間

    a) 默認調用當前公共空間的元素(非限定名稱)

    b) 使用有公共空間的元素  (限定名稱、徹底限定名稱)

 

同一個頁面裏邊有許多空間,在頁面最下邊使用上邊空間的元素,名稱須要使用徹底限定名稱,還能夠把上邊空間的元素給use引入過來也可經過非限定名稱或限定名稱使用

 

命名空間使用注意:

1. 針對類名、函數名、常量const其做用

①  define()定義的常量不受命名空間限制

2.  聲明namespace的當前腳本的第一個命名空間前面不能有任何代碼(header頭代碼也要寫在下邊)

3. 命名空間是虛擬抽象的空間,不是真實存在的目錄

4. 當前文件能夠include具備命名空間的文件,默認空間是當前文件的公共空間

5. 元素調用分:非限定名稱、限定名稱、徹底限定名稱

 

簡單使用:同一個頁面定義了許多單級命名空間

子空間:經過\斜槓定義多級命名空間

公共空間:爲了程序比較嚴謹,公共空間的元素都使用\斜槓訪問

空間引入和別名:use   as

 

【tp框架對多語言的支持】

多語言設置就是經過get參數告訴當前的請求使用何種語言

第一次使用get變量傳遞語言,以後語言還會保存在cookie裏邊,供下次使用

若是get沒有傳遞語言,瀏覽器會根據當前地區選中對應的語言,咱們程序也能夠讀取瀏覽

器的對應的語言變量選擇對應的語言

 

設置步驟:

1. 多語言經過行爲Behavior支持:ThinkPHP/Library/Behavior/CheckLangBehavior.class.php

2. 語言包一共有4種,後定義的要覆蓋先定義的(相似配置文件config.php覆蓋convertion.php)

3. 在config.php裏邊開啓多語言支持

4. 確保行爲Behavior代碼執行

a) 手動啓動該CheckLangBehavior行爲

b) shop/Common/Conf/tags.php

5. 語言包4個等級

6. 得到語言變量信息

    a) L()快捷函數,能夠得到所有或指定語言變量

    b) 使用語言,得到所有語言,assign()傳遞語言變量到模板進行具體使用(assign:賦值,分配)。

    c) {$Think.language.名稱}

7. 每一個語言本身對應具體的一個文件

總結:

1. 命名空間

i. namespace  use   

ii. 非限定名稱(當前空間元素)  限定名稱(相對空間的元素)  徹底限定名稱(絕對定位元素)

iii. 簡單使用(同一個文件定義許多命名空間)

iv. 子空間(多級命名空間)

v. 引入空間:空間和元素都引入、只引入空間

vi. 別名使用:

vii. 公共空間

2. 多語言

 

【tp框架驗證碼支持使用】

ThinkPHP/Library/Think/Verify.class.php

$verify = new 命名空間Verify();

$verify -> entry();  生成一個驗證碼

 

一個單獨的方法生成驗證碼

 

    

驗證碼須要在模板中使用

    <img  src=」路由地址Manager/verifyImg」 alt=」」 />

    

驗證輸入的驗證碼是否正確

自己驗證碼信息存儲在session裏邊

session存儲的驗證碼是加密後的數據

Verify類給咱們提供了一個方法進行驗證碼的有效性驗證

$verify -> check(用戶輸入驗證碼);   返回真,表示驗證碼正確

【用戶登陸實現】

Manager

判斷用戶名、密碼是不是正確的,若是是正確的,再把信息存入session裏邊表示是登陸狀態

 

舊的解決方案:

select * from sw_manager where name=$name and pwd = $pwd;

同時查詢用戶名和密碼的信息記錄,若是存在就是正確的,不然用戶名或密碼錯誤

該方式不安全,會增長sql語句注入的風險

 

如今流行的解決方案:

select * from sw_manager where  name=$name;

首先,查詢指定名字的記錄信息

其次,若是記錄存在,再把記錄裏邊的密碼拿出來 與 用戶輸入的密碼進行比較

若是比較一致,就說明用戶名和密碼正確

用戶名和密碼在model模型裏邊的判斷:

tp框架關於session操做(cookie

    //session(name,value, 有效時間)  設置session

    //session(name)  獲取session

    //session(name,null)  刪除指定session

    //session(null)  清空所有session

用戶退出系統

【tp框架實現數據分頁】

1. tp框架使用自定義功能類

2. 具體分頁效果實現

【緩存使用】

smarty裏邊也有緩存,是頁面靜態化的緩存頁面緩存

數據緩存

數據緩存介質:file文件、memory內存、數據庫

能夠把一些不常用的mysql數據臨時放入緩存裏邊,每次用戶得到信息就從緩存裏邊得到,大大的提高的mysql的性能,較少服務器開銷

 

文件緩存:fopen  fwrite()  fread()

memory內存緩存:安裝內存緩存軟件,啓動軟件服務,set()  get()方法對內存數據進行讀入讀出操做

數據庫緩存:創建數據表,啓動mysql數據  insert()   select()  update()

 

不一樣介質的緩存操做的手段也不同

tp框架已經把各類緩存設置好了,咱們能夠經過統一的行爲操做不一樣類型的緩存

使得緩存使用很是容易入門。

S(name,value)  設置緩存

緩存操做:

S(name,value,有效期(秒));  設置緩存變量

S(name)  讀取緩存變量信息

S(name,null)  刪除指定的緩存變量

S(null)刪除所有的緩存變量

 

 

 

緩存案例原理:

    緩存裏邊有數據直接返回使用

    不然去數據庫查詢信息,再緩存,再供使用

    下次就會跑到緩存裏邊得到指定的信息,過了有效期還要重啓跑到數據庫得到數據

                

 

生成的具體緩存文件:

80%的緩存是內存緩存。

 

tp框架實現附件上傳】

<form  enctype="multipart/form-data">

$_FILES

move_uploaded_file(臨時路徑名,真實路徑名);

 

附件上傳邏輯代碼:

 

 

【爲已經上傳的圖片製做縮略圖】

原理:利用已有圖片建立一個畫板

  把畫板給縮小一點imagecopyresampled

    imagepng($im,路徑名);  保存到系統一個指定目錄

    ThinkPHP/Library/Think/Image.class.php

    open() 打開一個圖像資源

    thumb()製做縮略圖,設置圖像的寬度、高度、達到製做縮略圖效果:自動地按比例進行縮放

    save() 保存圖像, 

 

 

 

爲上傳的圖片生成縮略圖:

 

【面向切面編程之行爲Behavior分析】

1.面向切面:是一種設置模式

         把一個大塊的功能給分解爲小塊的功能

        這樣小塊的功能利於開發、維護、升級、部署

 

2.tp框架的面向切面編程設計體如今Behavior行爲裏邊,在ThinkPHP/Library/Behavior

3.行爲:

 

4.tp框架的行爲Behavior如何執行:

    1. 框架執行流程分析:index.php  ThinkPHP.php  Think.class.php   App.class.php。這是主要的文件,而行爲                 與Think.class.php聯繫最緊密

    2. Think::start();

    3. ThinkPHP/Conf/Mode/common.php  tags標籤內容是行爲的內容

    4. 自定義shop/Common/conf/tags.php文件

    5. 自定義tags.php內容會覆蓋指定的common.php的配置內容

 

App.class.php

1. function run();

2. Hook::listen('app_begin');

3. ThinkPHP/Library/Think/Hook.class.php

4. function listen()

5. tags標籤的內容解析出來: CheckLang

6. self::exec(‘CheckLang’);

7. function exec()

8. CheckLangBehavior

9. new  CheckBehavior;

10. obj -> run();  運行具體行爲

 

總結:

1. 1. 驗證碼Verify   entry()

i. 獨立路由進行驗證生成

ii. check(用戶輸入驗證)

2. 數據分頁

3. 緩存使用S();

4. 附件上傳Upload.class.php   uploadOne()

i. 注意:rootPath 根目錄路徑須要設置正確

ii. 日期路徑也會自動被建立

iii. 生成縮略圖Image.class.php

iv. open()

v. thumb()

vi. save()

5. Behavior行爲分析

 

做業:

1. 後臺用戶登陸邏輯實現(用戶登陸信息存入session表示登陸狀態)

2. 驗證碼生成、及具體應用判斷

3. 後天添加商品上傳圖片(生成縮略圖)

 

登陸系統、驗證碼、分頁、上傳、縮略圖

相關文章
相關標籤/搜索