渐进式迭代教学法--PHP
漸進(jìn)式迭代教學(xué)法--PHP
目前常見(jiàn)的課程體系大致情況如下:
階段1:前端基礎(chǔ)(html+css+js)
階段2:PHP&MySQL基礎(chǔ) + 框架 (PHP基本語(yǔ)法,面向?qū)ο?#xff0c;mvc,sql基礎(chǔ),TP項(xiàng)目)
階段3:前端高級(jí)(JS語(yǔ)法,JS語(yǔ)言特性,ajax,JQ,Node,Vue )
階段4:微信
階段5:服務(wù)器部分 (linux基礎(chǔ),Git,Nginx,NoSQL,優(yōu)化及高可用集群,Laravel項(xiàng)目)
階段6:擴(kuò)展 (React,Docker,Swoole,爬蟲(chóng))
這樣的課程體系,最大的弊端就是課程關(guān)聯(lián)性太弱,同時(shí)課程的切入點(diǎn)不合適,讓人有一種盲人摸象的感覺(jué);
首先明確,我們的課程是專(zhuān)業(yè)的 web 應(yīng)用編程課,以 PHP 這門(mén)編程語(yǔ)言為核心。
PHP 開(kāi)發(fā)的最大特點(diǎn)就是 入門(mén)容易開(kāi)發(fā)快,這也是PHP流行和得到廣泛應(yīng)用最重要的原因之一;
但是,入門(mén)容易和開(kāi)發(fā)快是有前提的:
網(wǎng)絡(luò)通信是做web應(yīng)用開(kāi)發(fā)的基石,所以,TCP/IP 必須知道,HTTP必須精通,一切都是基于請(qǐng)求和響應(yīng)的;
PHP在整個(gè)web應(yīng)用中最重要的就是邏輯處理,因此前臺(tái)頁(yè)面展示交由HTML,后臺(tái)的數(shù)據(jù)持久化交由mysql;網(wǎng)路服務(wù)器交由Nginx或者Apache;
所以,想要使用PHP完成一個(gè)完整且健壯的 web 應(yīng)用,關(guān)鍵在于客戶(hù)端發(fā)來(lái)了什么請(qǐng)求,服務(wù)器端如何處理并響應(yīng),這一點(diǎn)不明白,PHP語(yǔ)法學(xué)的在精通也是無(wú)濟(jì)于事;
而上面的課程就存在這樣的問(wèn)題,前端基礎(chǔ)學(xué)完就會(huì)直接進(jìn)入到語(yǔ)言學(xué)習(xí)部分,根本沒(méi)有說(shuō)明我學(xué)的PHP到底用在web應(yīng)用的那個(gè)環(huán)節(jié),起到怎樣的作用,為什么要學(xué)PHP 等問(wèn)題;
而漸進(jìn)式迭代教學(xué)法就是為了解決這個(gè)問(wèn)題的,他是一個(gè)課程體系的設(shè)計(jì)邏輯;
下面使用 漸進(jìn)式迭代教學(xué)法 對(duì)上面的課程做修改,并進(jìn)行說(shuō)明:
階段1:前端基礎(chǔ) (html+css+js)
說(shuō)明:進(jìn)入編程世界,使用HTML和CSS制作簡(jiǎn)單的靜態(tài)頁(yè)面,配合JS做出一定的動(dòng)態(tài)效果,提升成就感;
階段2:編程語(yǔ)言入門(mén)及網(wǎng)絡(luò)通信原理 (JS語(yǔ)言特性 + ajax + jq + Node + SQL基礎(chǔ) )
說(shuō)明:使學(xué)生入門(mén)編程的第一語(yǔ)言由原來(lái)的 PHP 改為 JS ,因?yàn)樵贜ode中,我們可以進(jìn)行相對(duì)原始的網(wǎng)絡(luò)編程
自己實(shí)現(xiàn) HTTP 服務(wù)器的編寫(xiě),實(shí)現(xiàn)HTTP客戶(hù)端的編寫(xiě),在這個(gè)過(guò)程中 深刻感受請(qǐng)求及響應(yīng)的整個(gè)HTTP過(guò)程;
利用這個(gè)節(jié)點(diǎn),就能將網(wǎng)絡(luò)通信的原理講解清楚;
同時(shí),在編程中出現(xiàn)的名詞也會(huì)更多的涉及,如:事件綁定及事件輪詢(xún)的原理,異步與同步的原理,阻塞與非阻塞,回調(diào)等;
還會(huì)涉及到基本的語(yǔ)言語(yǔ)法,解析引擎及編譯原理等;
這個(gè)階段結(jié)束,學(xué)生就會(huì)有能力完成一個(gè)具備基本增刪改查的web應(yīng)用,且對(duì)整個(gè)web應(yīng)用的環(huán)節(jié)無(wú)疑問(wèn);
而更重要的就是在這個(gè)過(guò)程中會(huì)形成web應(yīng)用編程的基本邏輯和編程思維的建立;
后面課程中的幾乎所有內(nèi)容,都已客戶(hù)端請(qǐng)求與響應(yīng)為基本邏輯,也同時(shí)都有了講解理由和依據(jù);
如:客戶(hù)端提交到服務(wù)器的數(shù)據(jù)需要永久保存 --> MySQL基礎(chǔ)講解;
掌握網(wǎng)絡(luò)通信基本原理,建立基本的web編程世界觀!!!
至此,第2輪迭代結(jié)束;
階段3:WAMP 環(huán)境下的Web應(yīng)用編程 (apache + PHP基本語(yǔ)法 + 面向?qū)ο?+ mvc + TP5項(xiàng)目)
說(shuō)明:在上一階段涉及到的網(wǎng)絡(luò)通信中,需要自己寫(xiě)HTTP服務(wù)器端代碼,需要自己接受并判斷請(qǐng)求,需要自己寫(xiě)網(wǎng)絡(luò)響應(yīng)數(shù)據(jù),而這些都可以交給現(xiàn)成的服務(wù)器來(lái)做,而且做得更好;
因此我就不在需要考慮服務(wù)器的問(wèn)題,重心就可以轉(zhuǎn)移到具體的業(yè)務(wù)邏輯中,而PHP就是擅長(zhǎng)業(yè)務(wù)邏輯處理的編程語(yǔ)言,學(xué)起來(lái)容易,開(kāi)發(fā)起來(lái)也快,這就是它最大的優(yōu)勢(shì);
而如果面對(duì)普通中大型項(xiàng)目,我們則需要使用MVC進(jìn)行分工協(xié)作,而成熟的MVC框架,就國(guó)內(nèi)來(lái)說(shuō)非TP莫屬;
最后使用TP加之前的html,CSS ,ajax與jq 完成一個(gè)完整的項(xiàng)目;
這一段的重要性就是對(duì)第二階段的迭代替換,使用 Apache 替換Node-http-server,使用PHP替換 JS 進(jìn)行網(wǎng)絡(luò)請(qǐng)求后的邏輯處理,使整個(gè)wamp環(huán)境的出現(xiàn)變得順理成章;
這個(gè)階段開(kāi)始,才真正進(jìn)入到以PHP為核心的 web 應(yīng)用編程,也在這一階段凸顯出PHP的優(yōu)勢(shì)和學(xué)習(xí)PHP的理由;
至此,進(jìn)入PHP世界,明白PHP在整個(gè)Web應(yīng)用中的重要性和優(yōu)勢(shì)所在,帶著目標(biāo)和期許進(jìn)入學(xué)習(xí)周期;
同時(shí),也能感受到編程語(yǔ)言?xún)H僅是解決問(wèn)題的工具,而PHP是哪個(gè)用起來(lái)最得心應(yīng)手的……
本階段結(jié)束,能夠通過(guò)對(duì) js和PHP 兩種編程語(yǔ)言的學(xué)習(xí),更深的體會(huì)編譯原理和解析引擎的工作原理,對(duì)編程工程化有初步了解,對(duì)面向?qū)ο蟆⒖蚣艿氖褂谩?shù)據(jù)類(lèi)型等都有立體感受;
最后通過(guò) TP 框架的項(xiàng)目串聯(lián)整個(gè)第2和第3階段的重要知識(shí)點(diǎn);
階段4:LAMP 環(huán)境下的WEB應(yīng)用編程 (linux基礎(chǔ),lamp環(huán)境的搭建,緩存及NoSQL工具,sql優(yōu)化及高可用集群,Docker虛擬化,WEB安全攻防基礎(chǔ))
說(shuō)明:第三階段中,僅學(xué)會(huì)PHP語(yǔ)法結(jié)構(gòu)和框架,是不足以構(gòu)建一個(gè)完整的web應(yīng)用程序的,想要使PHP能夠承受成千上萬(wàn)的大并發(fā)請(qǐng)求壓力,并且能夠抵御一般的黑客攻擊,使用WAMP環(huán)境是很難以支撐和實(shí)現(xiàn)的;
在此階段則引入Linux及各種工具,以配合PHP完成整個(gè)web應(yīng)用的架構(gòu);由 階段2和階段3 的單服務(wù)器架構(gòu)引入linux下的多服務(wù)器集群架構(gòu);
依然以整個(gè)HTTP請(qǐng)求與響應(yīng)為基本邏輯,提出在請(qǐng)求及響應(yīng)過(guò)程中的各種問(wèn)題引出集群緩存等技術(shù)的必要性;
此階段結(jié)束,可以具備搭建大型WEB應(yīng)用的能力,掌握web開(kāi)發(fā)的各個(gè)環(huán)節(jié),具備web開(kāi)發(fā)的宏觀意識(shí);
階段5:項(xiàng)目工程化(Git , Vue ,Laravel, 前后端分離項(xiàng)目)
說(shuō)明:之前的階段全部為單人開(kāi)發(fā),對(duì)于大型項(xiàng)目是不現(xiàn)實(shí)的,由此引入Git+Vue+Laravel技術(shù),使用代碼管理工具,前后端分離,前端及后端使用各自的工程化體系設(shè)計(jì),由單人開(kāi)發(fā)進(jìn)入多人分工合作開(kāi)發(fā);
將班級(jí)分為每3-5人組成的小組,合作開(kāi)發(fā)項(xiàng)目并上線(xiàn)運(yùn)行;
配合前四個(gè)階段的內(nèi)容,做一個(gè)上線(xiàn)并運(yùn)行的項(xiàng)目并不難;
階段6:應(yīng)用技術(shù) (微信 爬蟲(chóng) swoole等)
說(shuō)明:以PHP為中心,進(jìn)行相關(guān)技術(shù)擴(kuò)展;不再過(guò)多解釋;
總結(jié):
我創(chuàng)造的這套 漸進(jìn)式迭代教學(xué)法,其根本就是 由淺入深、由原理入實(shí)戰(zhàn)的教學(xué)方法,使整個(gè)課程前后連貫且有因果,不再產(chǎn)生類(lèi)似盲人摸象的無(wú)助感,每一個(gè)階段的目的和目標(biāo)都是明確的,上一階段輔助下一階段,下一階段承接上一階段;每個(gè)階段都會(huì)用到上一階段的關(guān)鍵知識(shí)點(diǎn),而每個(gè)階段都會(huì)將上一階段的知識(shí)迭代升級(jí),在這個(gè)迭代的過(guò)程中,不斷復(fù)習(xí)同時(shí)又會(huì)不斷深入;
這也是起名為 漸進(jìn)式迭代教學(xué)法 的原因;
同時(shí),這樣的課程設(shè)計(jì)也在一定程度上緩解了大部分人 學(xué)完就忘 的現(xiàn)象,這是一個(gè)不斷迭代的過(guò)程,會(huì)及時(shí)復(fù)習(xí);
而在這樣的課程體系中,即使某些細(xì)節(jié)的知識(shí)點(diǎn)忘記了,也沒(méi)關(guān)系,比如在第4階段很可能就會(huì)忘記第2階段中具體NodeJS中的語(yǔ)法,而此時(shí)具體語(yǔ)法已經(jīng)不重要了,只要能在你腦海中留下關(guān)于使用NodeJS搭建HTTP服務(wù)器的原理知識(shí)就可以了;第二階段出現(xiàn)的目的就是打通整個(gè)網(wǎng)絡(luò)通信原理,不管以后是否還能使用NodeJS寫(xiě)一個(gè)HTTP服務(wù)器,這都已經(jīng)不重要了,因?yàn)橐呀?jīng)有了Nginx等技術(shù)做支撐;
當(dāng)然,這個(gè)教學(xué)法有個(gè)最大的 Bug , 就是對(duì)老師要求比較高,每個(gè)階段的老師都必須明確自己所授課階段的目的性,同時(shí)還必須要具備承前啟后的技術(shù)能力,這一點(diǎn)尤為重要,所以備課壓力會(huì)相當(dāng)大,每個(gè)老師的備課底線(xiàn)就是兩個(gè)階段;
轉(zhuǎn)載于:https://www.cnblogs.com/yyuyu/p/10097193.html
總結(jié)
以上是生活随笔為你收集整理的渐进式迭代教学法--PHP的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 焊接钛合金为什么不能用氮气
- 下一篇: 潜入java内存结构