php核心知識要點
Php:指令碼語言,網站建設,伺服器端運行
PHP定義:一種伺服器端的 HTML 指令碼/程式設計語言,是一種簡單的、物件導向的、解釋型的、健壯的、安全的、效能非常之高的、獨立於架構的、可移植的、動態指令碼語言。是一種廣泛用於 Open Source(開放原始碼)的尤其適合 Web 開發並可以嵌入 HTML 的多用途指令碼語言。它的文法接近 C,Java 和 Perl,而且容易學習。該語言讓 Web 開發人員快速的書寫動態產生的網頁。
PHP簡介:Rasmus Lerdorf發展曆程(1994:1.0個人perl,1996:2.0C底層,1998:3.0zendEngine,2000:4.0session+輸出緩衝等,2004:5.0zend引擎2代),平台支援(window,Linux,UNIX),資料庫支援(Sqlserver,mysql,Oracle,Access),開發環境(Apache2,mysql,php)
伺服器:軟體,常見服務(HTTP,FTP,MySQL,telnet等)
軟體結構:c\s,b\s,PHP地位
Web訪問:IP,網域名稱,hosts,網域名稱伺服器,網站,web訪問
原資料儲存:php檔案,資料庫檔案
搭建web伺服器:
Wamp,lamp,Apache安裝(www.apache.org)
MySQL安裝
PHP安裝(無中文路徑,CMD執行php.exe -f,VC6和VC9),配置(Apache載入PHP模組:LoadModule php5_module “PHP5apachedll路徑”;增加php處理:AddType application/x-httpd-php .php;載入php設定檔:windows,Apache設定檔載入PHPIniDir “PHP設定檔路徑”;配置PHP時區:date.timezone)
Php操作資料庫:PHP開啟MySQL擴充,指定擴充目錄(extension_dir)
Web運行原理:靜態,動態
虛擬機器主機配置:基於網域名稱虛擬機器主機,包含vhost配置,編輯虛擬vhost檔案(VirtualHost,ServerName,DocumentRoot),重啟,修改hosts檔案,localhost重配
PHP指令碼執行:讀入來源程式,zendEngine(詞法分析,文法分析),產生opcode,執行opcode,解釋,與編譯的區別
PHP工作:指令碼(服務端指令碼,需要web伺服器和瀏覽器),命令列指令碼
基本文法:指令碼語言(嵌入html),PHP處理(標記識別),標記(, 預設,,<%asp標籤%>非預設,需開啟;不建議使用),最末尾標記可以忽略(建議忽略:Ajax返回,節省流量),PHP語句(分號結束,最後一條可以不加)
變數:$符號,有效變數名(字母或者底線開始,大小寫敏感),變數增刪改查(unset中斷連線),命名規則(駝峰法,底線)
常量:定義(define),直接使用,特點(不能修改,區分大小寫,不能刪除,常量值只能是標量,命名與變數同,無$),常量判斷(defined),輸出(constant(‘常量名’))
PHP注釋:行注釋,塊注釋
預定義變數:$_POST,$_GET,$_REQUEST,$_FILES,$_SESSION,$_COOKIE,$GLOBALS,$_SERVER,$_ENV
預定義常量:__FILE__,__LINE__,__DIR__,__FUNCTION__,__METHOD__,PHP_OS,PHP_VERSION,PHP_INT_SIZE,PHP_INT_MAX
可變變數
傳值:值傳遞,引用傳遞
資料類型:PHP若類型,八大資料類型(整型,浮點型,布爾型,字元型,數組型,對象型,資源型,空型),三大類(標量,複合,特殊)
整型:十進位,八進位(0),十六進位(0x),指定進位輸出(printf,%d,%o,%x),整型取值範圍(PHP_INT_SIZE,PHP_INT_MAX),位元組,位,進位轉換(十轉其他,除取餘反取;其他轉十,求冪),整型溢出(浮點型),時間戳記(格林威治時間,time,date)
浮點型:保留小數輸出(printf(‘%.2f’),float,double
布爾型:真假,TRUE,FALSE(非0),布爾值輸出使用var_dump,FALSE(FALSE,0,0.0,’’,’0’,空數組,null值)
字串:單引號,雙引號,區別(解析變數,轉義,{},字串數組),定界符(初始標記和結束獨佔一行,結束標記頂格,解析變數,轉義,實際應用xml)
運算子:算術運算子(+,-,*,/,%),賦值運算子(=,+=,-=,*=,/=,%=,.=),比較子(>,<,>=,<=,==,===,!=,!==),錯誤抑制符(@),自操作運算子(++,--),字串運算子(.),三目運算子(? :),邏輯運算子(&&and,||or,!),位元運算符(&,|,^,~,<<,>>)
原碼反碼補碼:正數原碼反碼補碼一樣,負數符號位除外求反,+1得補碼
流程式控制制:順序結構,分支結構(if,ifelse,ifelse[else],switch[case,break,default]),迴圈結構(for,while,dowhile,foreach,continue,break)
模板文法:標籤文法,分支結構和迴圈結構
函數:主要功能(代碼重用,模組化編程),定義(function 函數名(參數列表)),調用(函數名(參數列表)),定義與調用無循序關聯性,形參,實參,參數傳遞(值傳遞,引用傳值,預設值),傳回值(return中斷執行,單一傳回值,多傳回值[引用傳遞參數]),範圍(全域範圍,局部範圍,範圍針對變數,深入分析[js和PHP],超全域範圍,$GLOBALS和global)
匿名函數
偽類型:mixed,number,callback,void,
資料類型轉換:int,integer,bool,Boolean,float,string,array,object,自動轉換(值轉換)
資料類型判斷:is_bool,is_float,is_integer,is_object,is_array,is_string,is_resource,is_scalar,is_null,is_numeric,gettype,settype
引用檔案:require,include,require_once,include_once,作用(布局,包含公用檔案),檔案載入原理(載入非執行,將編譯後的檔案載入),require和include的區別,檔案返回(設定檔)
終止指令碼:return,exit,die
載入檔案路徑:絕對路徑,相對路徑(./,../,/),檔案載入的相對路徑問題
字串相關函數:strlen,substr,strtolower,strtoupper,strrev,strpos,strrpos,strchr,strrchr(擷取檔案尾碼名),trim
時間相關函數:time,date,strtotime,microtime
數學相關函數:abs,floor,ceil,round,rand,mt_rand
數組:概念,使用數組原因(變數關聯),PHP數組特點(沒有資料類型,數組下標可為字串[不能使用for迴圈遍曆],數組長度可變不會溢出),數組定義(array,[]),數組不能直接echo,數組長度(count,遍曆),foreach(原理:賦值+指標下移)
二維數組:定義,文法,二維數組遍曆,關聯二維數組,遍曆
Each+list:each(文法),list(文法,只能獲得索引數組元素,按照索引順序賦值),each和list組合遍曆數組,each與foreach區別(foreach原理,each原理)
數組相關函數:key,current,next,prev,end ,reset,array_keys,array_values,資料結構類比(array_shift,array_unshift,array_push,array_pop),字串分割(explode,implode),array_walk_recursive(回呼函數,按址傳遞)
數組運算:+,array_merge
數組比較:==,===
其他函數: range,array_rand,shuffle
SQL注入:原理,解決方案(addslashes,stripslashes,magic_quotes_gpc5.3前,get_magic_quotes_gpc),公用函數(array_walk_recursive對$_POST轉義)
數組演算法:排序(冒泡,插入,選擇,快排),尋找(自訂尋找,二分法)
表單傳值:網站目的(資料管理:收集,整理,儲存,發布),收集(表單實現),資料傳遞(url,form),傳值方式(get,post)
資料接收:$_GET,$_POST,$_REQUEST,資料處理,$_REQUEST不值得信任(覆蓋,request_order,variables_order)
點擊行為判斷:isset($_POST[‘submit’])/empty()
自動設定全域變數:register_gloabals5.3
複選框使用:[],入庫(字元拼接),顯示複選框資訊(checked),大量刪除
檔案上傳:概念,痛點(瀏覽器端,服務端),流程(表單post,enctype=’multipart/form-data’,PHP配置file_uploads,配置項說明(file_uploades,upload_max_filesize,post_max_size,upload_tmp_dir)),檔案上傳流程(本地選擇檔案,提交,檔案發送到伺服器臨時目錄,轉義臨時檔案)
PHP處理:$_FILES,$_FILES說明,檔案移動(copy,move_uploaded_file),驗證檔案類型(MIME),檔案重新命名(唯一性,可識別區分)
上傳函數封裝
檔案操作:原因(儲存不經常變化資料量小的資料;設定檔,流量統計,靜態網頁產生,檔案下載。。。)
目錄操作:opendir,readdir,rewinddir,closedir,scandir
自訂實現scandir函數功能
檔案判斷:file_exists,is_dir,is_file,mkdir,rmdir,getcwd,chdir,檔案上傳按月分類管理
迴圈輸出檔案夾下所有檔案及子檔案夾:靜態變數,函數遞迴(原理,遞迴點,遞迴出口)
檔案操作:讀和寫,PHP5(file_get_contents,file_put_contents[FILE_APPEND,FILE_USE_INCLUDE_PATH],array file),PHP4(fopen,Mode[r,r+,w,w+,a,a+],fgetc,fgets,fread,fputs,fwrite,fclose,fseek)
檔案相關函數:copy,unlink,rename,filemtime,filesize,fileperms
檔案下載:html下載(a href=‘use.zip’,缺點:檔案格式簡單,暴露檔案完整路徑),PHP(header("Content-type: application/octet-stream"),header("Content-Disposition: attachment; filename=filename" ),輸出檔案內容)
第二部分
0你Mysql擴充庫,PHP操作mysql
PHP操作mysql資料庫的主要擴充庫:mysql(面向過程),mysqli(面向過程和對象),pdo(物件導向)
配置mysql擴充庫:php.ini載入extension,配置擴充路徑extension_dir
PHP操作mysql:原理,
串連資料庫(mysql_connect[host,user,pass,new_link]),
關閉串連(mysql_close),
選擇資料庫(mysql_select_db),
發送sql(mysql_query,不同類型sql的傳回值不同),
解析結果集資源(mysql_num_rows結果集行數,mysql_fetch系列獲得結果集中資料,結果集指標,遍曆結果集)
其他相關函數:受影響行數(mysql_affected_rows),新增資料的ID(mysql_insert_id),設定結果集指標(mysql_data_seek)
註冊成功跳轉功能,分頁功能(一次性擷取,按頁擷取)
HTTP協議:超文字傳輸通訊協定 (HTTP),b/s架構項目遵循的基本協議,瀏覽器伺服器通訊的基本原理(請求串連(TCP/IP協議),串連成功,瀏覽器發送請求,伺服器處理請求,瀏覽器處理結果,關閉串連),HTTP協議兩部分(請求,響應),url,特點(支援客戶/伺服器模式,簡單快速[只需要求方法和路徑],靈活[任意資料],無串連[每次串連只處理一個請求],無狀態[交易處理沒有記憶能力])
HTTP請求:
四部分(請求行,要求標頭,空行,請求主體)
請求行(請求方式,請求檔案,協議/版本)
要求標頭(host,accept-encoding,referer,connection,accept-language,cookie,user-agent,accept,content-length(post),if-modified-since(get),content-type(post))
空白行
請求主體(post請求資料)
telnet類比請求
HTTP響應:
四部分(狀態行,回應標頭,空行,響應主體),
狀態行(協議/版本,狀態代碼,狀態說明),
回應標頭(server,date,last-modified,content-length,content-type,location,refresh,content-encodeing,cache-control),
空行,
響應主體(內容),header之前不能輸出,header設定cookie
函數調用前不能輸出的函數:session_start,setcookie,header,output_buffering
常用回應狀態資訊:
1XX(伺服器接收請求,繼續處理),
2XX(成功,200),
3XX(重新導向,302重新導向,304沒有修改),
4XX(請求錯誤,404找不到,403禁止),
5XX(伺服器錯誤,502無效響應)
PHP類比響應和請求:
響應(跳轉,重新整理,發送圖片,下載(application/octet-stream,content-disposition:attachment;filename),
請求(fsockopen,fwrite,feof,fgets,get請求,post請求)
物件導向:面向過程(操作流程)和物件導向(操作主體),oop(一種軟體設計架構思想)
基本概念:類(對象的抽象),對象(類的執行個體化/類類型(自訂資料類型)),執行個體化,成員(類中的變數,函數,常量)
文法操作:
定義類(class),
執行個體化(new,帶括弧,不帶括弧),
強制轉換(object),stdClass(空類),
訪問修飾限定符(var,public,protected,private,區別),
對象訪問成員(->),
類中成員只有三個(屬性,方法和常量,不能echo),
屬性定義的值必須是固定值,如何訪問私人屬性(方法,$this)
記憶體說明:類,對象,方法,屬性(從空間使用上劃分,非記憶體劃分)
魔術方法:構造方法(初始化),析構方法(釋放資源,unset對象),構造方法私人化
構造方法相容:類名方法
大小寫區分:屬性,數組下標和變數
對象傳遞:引用傳遞
對象比較:==(同類對象且屬性值相同),===(同一對象)
DB類:類檔案命名(類名.class.php)
自動載入:執行個體化對象前必須有類定義,自動載入(__autoload),自動載入原理,自動載入衝突(spl_autoload_register)
類常量:定義(const),記憶體劃分,訪問(類訪問,範圍解析操作符,對象訪問(方法)),self關鍵字,self和this區別
靜態成員:定義(static),屬性,方法,訪問(範圍解析操作符),靜態屬性與常量的訪問區別
靜態方法與非靜態方法區別($this)
魔術方法:__toString()(echo對象),__clone()(複製成不同對象,複製不走構造方法,阻止複製(private))
單例模式:概念(一個類只有一個對象),原因(省資源),原理(三私一公)
原廠模式:概念(產生對象),原因(方便管理),工廠單例模式
物件導向不一定有類(js)
Oop三大特性:封裝,繼承,多態
封裝:資料和資料操作,製作類的過程,隱藏對象的屬性和實現細節(私人化),對外提供使用介面(限制讀和寫)
繼承:一個對象直接使用另一個對象的屬性和方法,減少代碼的重複性
多態:介面的多種不同的實現方式,PHP中沒有
繼承:文法(extends),繼承原理,繼承成員控制(protected),繼承訪問(子類訪問父類,父類訪問子類)
繼承衝突:重寫,控制層級(子類弱於父類),訪問父類同名方法(parent)
PHP單繼承,鏈式繼承(多繼承),繼承的使用(表類繼承DB類)
特殊類:不能被繼承的類和只能被繼承的類,final類,final方法(可以被繼承但不能別重寫),abstract類(不能執行個體化),abstract方法
項目設計:項目大,團隊多(介面規範,抽象類別規範),項目小(不使用)
介面:專門規定類的結構,文法(interface),介面體(常量和方法,不能實現方法,只能public),實現介面(implements),子類必須實現介面所有方法,實現多個介面
面試題:PHP是否支援多繼承?如何類比?介面是不是類?介面是不是抽象類別?
PHP重載:使用者操作不存在或者停用成員屬性或者方法時的處理
屬性重載:__get(),__set(),__isset()(isset和empty時調用),__unset()(unset調用)
方法重載:__call(),__callStatic()
重載意義:限定使用者操作的條件,錯誤修正
對象儲存與還原:file_put_contents儲存,file_get_contents擷取,對象不能直接儲存
序列化:serialize
還原序列化:unserialize,PHP_Incomplete_Class,得不到原對象原因(資源釋放),引入類檔案即可得到原對象,自動載入類,資料庫連接失效
對象儲存與還原:__wakeup(),__sleep()
對象判斷:instanceof,繼承對象同屬於子類和父類
對象涉及方法:class_exists,interface_exists,method_exists,get_class(得到對象類名),get_parent_class(得到父類名)
對象遍曆:屬性遍曆,常規foreach遍曆,類內foreach遍曆($this),類內具體屬性遍曆(iterator預定義介面)
【PDO】:PDO,功能(方便移植),原理,配置(擴充)
PDO主要類:PDO(資料庫連接,sql傳輸),PDOStatement(結果集,預先處理),PDOException(PDO異常處理)
PDO類:建構函式(dsn資料來源,使用者名稱,密碼),對象銷毀(沒有提供,unset,null),執行SQL(無結果集exec(增刪改),lastInsertId;有結果集PDOStatement query),錯誤處理(errorCode,errorInfo)
PDOStatement類:相關函數(rowCount,columnCount),遍曆結果集(fetch[FETCH_ASSOC,FETCH_NUM,FETCH_BOTH,FETCH_OBJ,FETCH_BOUND],bindColumn,fetchAll,fetchColumn,fetchObject,setFetchMode),預先處理(prepare,execute[array參數],bindParam[推薦,先綁定後賦值],bindValue[不推薦,先賦值後綁定,每次都要綁定]),交易處理(beginTransaction,commit,rollBack)
PDO屬性設定:setAttribute,getAttribute,屬性名稱與值(PDO::ATTR_AUTOCOMMIT(1,0),PDO::ATTR_CASE(PDO::CASE_LOWER,PDO::CASE_UPPER,PDO::CASE_NATURAL),PDO::ATTR_ERRMODE(PDO::ERRMODE_SILENT,PDO::ERRMODE_WARNING,PDO::ERRMODE_EXCEPTION),PDO::ATTR_PERSISTENT(TRUE,FALSE))
PDOException類:try-catch-throw
反射:reflection反射機制,反射(ReflectionClass::export(類)),反射類內部(new ReflectionClass(類),getConstants,getProperties,isStatic,getMethods)
Ecshop安裝:虛擬機器主機,gd庫擴充,設定資料庫,配置後台管理員,安裝測試資料,訪問後台
購物系統:仿造ecshop製作一個小型的商品管理與購物系統
功能:後台使用者登入(表單,session,cookie,驗證碼),商品分類管理(無限極分類),商品管理(檔案處理,縮圖,浮水印處理,分頁,商品批量管理,所見即所得 (WYSIWYG)編輯器使用),時間允許(前台商品瀏覽,購物車動作,使用者管理等)
設計項目:從專案管理者角度設計項目(項目架構(架構,源碼,開發模式),代碼結構(項目目錄劃分,功能劃分)
當前流行開發模式:二次開發,架構開發
資料架構:資料大小,更新頻率;兩大資料庫陣營(SQL,NOSQL),初級架構(表,表功能,表結構,表內資料關係)
前台和後台:前台(使用者看,顯示資料),後台(管理員看,管理資料),前後台按功能劃分,美工和程式員按工作內容劃分
項目目錄結構,代碼分部:項目分前台後台,admin為後台目錄;前後台公用部分前台includes下,後台公用檔案admin/includes,前後台都有預設訪問入口index.php
項目代碼設計:資料是核心,代碼是訪問和管理資料;資料存放在mysql裡,PHP通過db.class.php訪問資料庫(includes下);邏輯與顯示分開;公用功能用類封裝(檔案上傳,圖片處理,分頁)
後台使用者登入功能設計:登入表單(登入,驗證碼,退出,找回密碼,記住密碼),admin/templates/login.php,代碼由簡單到複雜;一類事務請求一個PHP檔案(登入:admin/privilege.php)
後台項目初始化:運行環境(錯誤層級,錯誤顯示),基本目錄常量,設定檔系統,公用代碼(自動載入函數,跳轉等),admin/includes/init.php
Admin/includes/init.php:編碼設定(header),目錄常量(__DIR__,反斜線處理,ROOT_DIR,ADMIN_DIR,INCLUDE_DIR,ADMIN_INCLUDE_DIR,ADMIN_TEMPLATE_DIR),5.3低版本目錄常量(__FILE__)
設定檔系統:/config/config.php,資料庫連接資訊,二維數組(便於區分)
載入設定檔:admin/includes/init.php,設定檔目錄常量,設定檔全域化($GLOBALS[‘config’])
運行環境設定:ini_set()(error_reporting,display_errors),錯誤層級關係
登入介面:從ecshop拿,js檔案,image檔案,css檔案
登入功能:privilege.php實現,引入初始設定檔案,引入login.php檔案,action(區分動作),if分支判斷動作
使用者登入表單設計:請求privilege.php,設計隱藏欄位act,$_REQUEST(GPC,request_order,variables_order)
驗證使用者資訊:設計管理員表(庫,表,欄位(id,使用者名稱,密碼,註冊時間,上次登入時間和IP)),插入一條資料,接收使用者提交資料進行驗證,資料庫操作(使用DB類,每張表一個類(/includes/adminTable.class.php))
表類設計:繼承db類,屬性(table_name,fields)
驗證調用表類:自動載入(/includes/function.php),初始設定檔案引入公用函數庫,執行個體化表對象(傳入資料庫連接資訊,串連資料庫),修改執行個體化方式(db類中自動調用設定檔),使用使用者名稱和密碼驗證使用者(正確得到使用者資訊,錯誤返回FALSE),修改使用者密碼(md5加密)
工作原理分析:使用者請求到得到驗證結果
驗證結果處理:介面跳轉(PHP中header,js中document.location.href,HTML中refresh),建立跳轉模板/admin/templates/redirect.php,跳轉函數admin_redirect在/includes/function.php,privilege中調用跳轉函數
驗證使用者是否登入:定義變數判斷,get傳參,會話資料
開啟會話機制:預設關閉(php.ini的session.auto_start),session_start開啟,$_SESSION(訪問會話資料),session實現使用者登入判斷
Session原理:session_start()開啟session並讀取session檔案內容到$_SESSION,指令碼結束將$_SESSION內容寫到session檔案,然後釋放$_SESSION變數
會話周期:瀏覽器關閉session失效,瀏覽器與伺服器會話流程
Cookie會話技術:伺服器在瀏覽器儲存資料,cookie原理,session與cookie的區別
Cookie使用:設定cookie,獲得cookie($_COOKIE和$_REQUEST),修改$_COOKIE(再次訪問無效),cookie變數有效期間,session失效原理,清除cookie(setcookie),cookie目錄區分,cookie跨域,cookie變相儲存數組
Session檔案:儲存(php.ini中session.save_path)
Cookie檔案:瀏覽器指定的儲存目錄,IE和FF區別,FF查看cookie檔案
Session登入判定:使用者登入時session記錄使用者資訊,index.php中判定session資訊,初始設定檔案開啟session
類比session實現跨指令碼
架構布局後台:使用ecshop後檯布局,index.php
Index.php實現:與privilege.php處理方式一致,使用ecshop的模板
退出登入:清楚session,跳轉到privilege.php登陸頁,top.php(target屬性)
使用者資訊顯示:$_SESSION,使用者上次登入時間(登入後修改上次登入時間)
Session深入:$_SESSION只能是關聯陣列,session可以儲存對象,session到期受cookie影響,session檔案銷毀(session_destroy,$_SESSION,setcookie),session分層(session.save_path,手動建立檔案夾)
禁用cookie後session使用(其他方式讓瀏覽器帶sessionID),a標籤自動攜帶sessionID(session.use_trans_id,session.use_only_cookie),PHP指令碼傳遞(手動添加,session_id(),session_name())
驗證碼:驗證碼意義(防惡意請求),原理(Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自動區分電腦和人類的圖靈測試),將驗證碼內容放到圖片上),驗證碼流程(產生,儲存到session中,添加到圖片上,使用者輸入,驗證),對比ecshop驗證碼
GD庫:影像處理擴充,GD處理圖片流程(建立圖片資源(已有或者建立),操作圖片(裁剪圖片,修改圖片,填充圖片,縮圖,寫驗證碼),儲存或者輸出,釋放資源)
製作驗證碼:獲得驗證碼內容,驗證碼寫到session,驗證碼寫到圖片,驗證碼圖片顯示到表單
封裝驗證碼類:複雜化驗證碼方法(背景顏色隨機,文字顏色隨機,添加像素點,添加幹擾線)
項目應用驗證碼:請求動作獲得驗證碼圖片,驗證使用者登入時使用驗證碼,新增驗證驗證碼方法(驗證碼類內),點擊驗證碼圖片更換驗證碼(js)
儲存使用者登入資訊:cookie儲存記錄標識(使用者ID),判斷使用者是否登入(判斷session,判斷cookie),增加通過使用者ID擷取使用者資訊方法,危險
製作商品分類:資料表設計(主鍵,分類名,排序,父ID),插入資料,category.php,商品分類列表介面,修改串連(menu),商品分類類,調用商品分類的方法,模板顯示分類資料
無限極分類:原理(找頂級分類,找子分類),非遞迴實現(指定父分類),遞迴(遞迴點,遞迴出口),遞迴原理,縮排(層級標識),根據排序欄位排序
構造表全名:表名,db類表首碼,db類中增加表名構造,表類中使用
給欄位屬性賦值:添加獲得表結構方法(獲得所有鍵,主鍵)
分類檔案訪問驗證:將登入驗證放到init.php,引入init.php檔案驗證,分離需要驗證的請求(登入相關不需要驗證,$_SERVER[‘SCRIPT_NAME’],basename(),dir_name())
分類操作:增加分類(新增表單,提交表單,處理表單資料,分類入庫),分類指定上級分類,數組接收資料提交資料,刪除分類(提示使用者(js),判斷分類是否可被刪除(是否末級),刪除分類)
編輯分類功能:流程(使用者點擊菜單進入編輯,顯示分類資料,使用者編輯操作,提交表單,處理編輯資料)
重封裝通過id擷取資料方法(重複,放到db類),表單添加隱藏分類ID
商品分類完成:沒有商品數量,分類列表緩衝(判斷緩衝,更新緩衝),無限極分類縮放
商品管理:資料表設計(仿照ecshop),資料插入,goods.php,完善商品列表(菜單串連,動作處理,資料對象操作,列表模板,表徵圖)
分頁:流程(確定資料顯示數量,確定頁數,limit),分頁跳轉(首頁,上一頁,下一頁,末頁,數字頁,下拉頁)
項目分頁:修改設定檔(每頁顯示資料條數),修改列表功能(頁碼,每頁顯示數目參數),修改列表功能(獲得總記錄數,資料,二維數組),修改調用列表功能
分頁類:單獨分頁不含資料處理(參數),HTML(標籤,ID)
刪除商品:處理方法(資源回收筒),增加刪除標誌(修改資料表),刪除流程(確認(js),修改刪除標誌,修改列表功能,更新列表)
資源回收筒操作:分頁顯示(設定檔,分頁類使用),恢複
新增商品:流程(串連,動作,表方法,模板,選項卡功能)
插入功能重複:新增插入方法(db類,驗證數組資訊,數組拼湊SQL,返回插入結果),調用插入功能
檔案上傳:post,enctype(mutipart/form-data),$_FILES(專門接收檔案資料,欄位說明,錯誤說明(0沒有問題,1超出大小,2超出大小,3部分上傳,4沒有上傳,6沒有臨時檔案夾,7檔案寫入臨時檔案夾出錯)),檔案上傳原理(PHP服務端),移動臨時檔案(move_uploaded_file),檔案驗證(大小,類型,重新命名,strrchar)
圖片上傳類:設定檔(上傳大小,上傳類型(字串),上傳路徑),上傳命名規則(不重複,保持原來尾碼,易於識別(首碼)),檔案上傳流程(錯誤判斷,檔案大小判斷,檔案類型判斷,重新命名,是否上傳成功,返回新檔案名稱),檔案處理失敗商品仍上傳(錯誤提示)
商品插入流程回顧:收集表單資料,設定初始值(點擊量),上傳檔案判斷,製作縮圖判斷,調用模型,插入資料
製作縮圖:流程(獲得圖片資源(原始圖,靶心圖表),處理(採用,複製),儲存或者輸出,釋放資源),採樣(矩形地區確定)
封裝縮圖製作:資料擷取(原圖大小,靶心圖表大小,函數類型使用),縮圖比例(寬高比),縮圖製作流程細化(計算原圖寬高和縮圖最大尺寸,確定縮圖大小,建立圖片資源(原圖,縮圖),採樣複製,儲存輸出,銷毀資源)
縮圖補白:縮圖大小固定(不夠的地方補白,製作縮圖背景)優劣(方便設計顯示,與原圖不一致)
浮水印製作:圖片上的標識,兩種(文字,圖片),基本流程(原圖,浮水印圖,合并)
項目浮水印:設定檔,流程詳細(獲得原圖資源,判斷浮水印圖資源,獲得浮水印圖資源,獲得圖片寬高,判斷浮水印位置,計算浮水印位置,判斷合并結果,儲存,返回浮水印圖名稱),修改上傳圖片的名字為浮水印圖
MVC:軟體設計典範(模型Model,視圖View,控制器Controller),輸入處理和輸出的分離,MVC架構(功能劃分M,V,C),PHP代碼發展(混編,顯示和邏輯分離,資料邏輯與商務邏輯分離),action(C處理一類事務,C包含多個Action),區分(模組module,模型model,模板template)
自動安全更新方法:拼湊sql語句,更新,流程(清理無效欄位,拼湊sql語句(更新部分,條件),強制設定條件(判斷條件,自動分析條件),返回執行結果)
自動刪除:根據ID進行刪除(單個=,數組in),流程(參數添加引號,拼湊刪除條件,返回刪除結果)
Session入庫:session入記憶體,session入庫(修改session儲存機制),session入庫原理,修改session系統(session讀寫功能),修改流程(準備讀寫方法,告知session系統(session_set_save_handler())
Session表設計:欄位(sessionID,資料,到期時間)
Session方法完善:讀(根據sessionID資料庫查詢),寫(根據sessionID,session資料寫入或者更新資料),開啟(提取公用串連資料庫代碼),資料庫連接資源範圍,銷毀(根據sessionID刪除資料),回收(根據配置清理到期session,expire欄位),session配置(gc_maxlifetime,gc_probobility,gc_divisor)
封裝session類:建構函式(設定session處理器,數組傳遞參數,開啟session,開啟父類建構函式),完善各個方法
Session方法執行順序(讀在回收前),修改讀方法(不讀取到期資料,讀判斷expire),session銷毀(停止執行寫方法)