




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、yyuc開(kāi)發(fā)手冊(cè)版權(quán)申明發(fā)布本資料須遵守開(kāi)放出版許可協(xié)議 1.0 或者更新版本。未經(jīng)版權(quán)所有者明確授權(quán),禁止發(fā)行本文檔及其被實(shí)質(zhì)上修改的版本。未經(jīng)版權(quán)所有者事先授權(quán),禁止將此作品及其衍生作品以標(biāo)準(zhǔn)(紙質(zhì))書(shū)籍形式發(fā)行。有任何問(wèn)題,請(qǐng)聯(lián)系版權(quán)所有者 。yyuc-php框架官方地址 。有關(guān)yyuc-php項(xiàng)目及本文檔的最新資料,請(qǐng)及時(shí)訪問(wèn)項(xiàng)目主站。本文檔及其描述的內(nèi)容受有關(guān)法律的版權(quán)保護(hù),對(duì)本文檔內(nèi)容的任何形式的非法復(fù)制,泄露或散布,將導(dǎo)致相應(yīng)的法律責(zé)任。框架簡(jiǎn)介yyuc-php框架簡(jiǎn)介yyuc-php框架(本站簡(jiǎn)稱yy框架)是一個(gè)面
2、向自由開(kāi)發(fā)者的框架,只需一個(gè)人就可以輕松搞定一個(gè)動(dòng)態(tài)網(wǎng)站,或者是小型的信息系統(tǒng)建設(shè)。當(dāng)然這 并不是說(shuō)yy框架只適用于小型系統(tǒng),應(yīng)用于多人開(kāi)發(fā)的大型項(xiàng)目它同樣極具優(yōu)勢(shì)。yy框架的設(shè)計(jì)初衷就是敏捷開(kāi)發(fā)快速建站,由于是完全開(kāi)源和免費(fèi)的,很顯然 它將是小型企業(yè)和個(gè)人網(wǎng)絡(luò)開(kāi)發(fā)者的首選。yy框架是一個(gè)免費(fèi)開(kāi)源的,快速、簡(jiǎn)單的php開(kāi)發(fā)框架,我們采取大道至簡(jiǎn)的原則,并不嚴(yán)格遵循面向?qū)ο蟮拈_(kāi)發(fā)模式,追求極致的開(kāi)發(fā)效率和運(yùn)行效率 才是我們的初衷。yy框架遵循apache2開(kāi)源協(xié)議發(fā)布,社區(qū)的個(gè)人和團(tuán)隊(duì)為其貢獻(xiàn)力量,代碼的貢獻(xiàn),審閱,測(cè)試每一個(gè)步驟都力求完美。使用yy框架,你可以更方便和快捷的開(kāi)發(fā)和部署應(yīng)用。不僅
3、僅是網(wǎng)絡(luò)應(yīng)用,企業(yè)級(jí)應(yīng)用開(kāi)發(fā)更是可以從yy框架的簡(jiǎn)單、快速、穩(wěn)定、高效的特性中受益。你可以免費(fèi)使用yy框架,遵從apache2開(kāi)源協(xié)議我們?cè)试S把你基于yy框架開(kāi)發(fā)開(kāi)源或商業(yè)產(chǎn)品并將之發(fā)布或銷售。優(yōu)勢(shì)所在asp,j2ee,.net,php,ruby on rails.,到底要選擇什么?在從事網(wǎng)絡(luò)開(kāi)發(fā)的幾年里,以上的幾種語(yǔ)言的項(xiàng)目都參與設(shè)計(jì)或開(kāi)發(fā)過(guò)。我想通過(guò)以下幾點(diǎn)簡(jiǎn)單的篩選幫您找到答案:1、先進(jìn)性:很顯然asp已經(jīng)不再適應(yīng)這一要求了。微軟也不再主推它,沒(méi)有先進(jìn)的程序設(shè)計(jì)思想的支撐,沒(méi)有面向?qū)ο蟮膬?yōu)勢(shì)我想除了上世紀(jì)90年代開(kāi)始開(kāi)發(fā)的程序員,已經(jīng)沒(méi)有人再會(huì)選擇他。2、學(xué)習(xí)成本:j2ee的開(kāi)發(fā)首先要掌
4、握java的基本程序設(shè)計(jì)基礎(chǔ),面向?qū)ο蟮乃枷?,mvc框架結(jié)構(gòu),開(kāi)源或者官方的框架平臺(tái),ssh(j2ee開(kāi)發(fā)必修),ejb,rest等等等等,百家齊放的框架,累的程序員不亦樂(lè)乎。3、開(kāi)放性(跨平臺(tái)):.net是需要運(yùn)行在其平臺(tái)之上的,復(fù)雜的配置選項(xiàng),常常弄得你不知道到底是業(yè)務(wù)優(yōu)先還是配置優(yōu)先了,當(dāng)然.net的最大瓶頸還不在此,他所運(yùn)行的windows環(huán)境的服務(wù)效能是無(wú)法和linux平臺(tái)相比的。4、敏捷性:敏捷開(kāi)發(fā)無(wú)非強(qiáng)調(diào)開(kāi)發(fā)的效率,以最低的人力投入完成設(shè)計(jì)開(kāi)發(fā)、實(shí)現(xiàn)業(yè)務(wù)需求。曾經(jīng)看到過(guò)處理一個(gè)數(shù)據(jù)表的crud操作的代碼量的統(tǒng)計(jì)調(diào) 查,java 和 c#大約在600行左右(包括配置文件),php(
5、無(wú)框架) 90行左右,ruby on rails 60行左右。5、流行性:ruby on rails在國(guó)外已經(jīng)非常流行了,但是我想開(kāi)發(fā)過(guò)rails的程序員都有這么一個(gè)感受,一個(gè)功能coding的時(shí)間是一個(gè)月,那其中的5天你要花在環(huán)境的 搭建和相關(guān)插件的安裝上。3天的時(shí)間要花在服務(wù)器環(huán)境的配置上。同樣rails和j2ee一樣很難獨(dú)立運(yùn)行在虛擬主機(jī)上,對(duì)于自由開(kāi)發(fā)者服務(wù)器成本也是一 筆不小的開(kāi)支。6、執(zhí)行效率:j2ee更適合大型的企業(yè)級(jí)開(kāi)發(fā),因?yàn)榛旧鲜蔷钟蚓W(wǎng),服務(wù)器內(nèi)存是10g級(jí)別的,所以我們的代碼可以一堆再堆,反正不用考慮性能和 帶寬。放在互聯(lián)網(wǎng)上j2ee就顯的那么臃腫和笨重。坦率的講,這一點(diǎn)
6、上.net的優(yōu)勢(shì)倒也是很明顯的,但是誰(shuí)又會(huì)那么笨的首選windows服務(wù)器呢。 ror 和php都是解釋執(zhí)行的,沒(méi)有編譯這一步驟,可能效率上會(huì)有一定影響,但是您不要忘了,他們的底層都是c,大量的系統(tǒng)函數(shù)和擴(kuò)展插件都是c解釋編寫(xiě)的,在 這種高度封裝和擴(kuò)展下,真正您自己的代碼才有多少呢?php的最大優(yōu)勢(shì)是程序不常駐內(nèi)存,雖然不能像java那樣輕松的使用像application這樣 的全局對(duì)象了,但是php的服務(wù)內(nèi)存是不會(huì)增長(zhǎng)的,請(qǐng)求執(zhí)行之后就會(huì)釋放掉,像j2ee如果程序設(shè)計(jì)的不周全,web server內(nèi)存就會(huì)越來(lái)越大,直至當(dāng)機(jī)!yy框架是一個(gè)高效穩(wěn)定的php框架,輕量級(jí)是她最大的優(yōu)勢(shì)。熟悉rub
7、y on rails的開(kāi)發(fā)人員都知道約定優(yōu)于配置的原則,這一原則簡(jiǎn)化了程序開(kāi)發(fā)者的大量配置工作和框架思考。yy框架很大程度上借鑒并優(yōu)化了rails的這一設(shè) 計(jì)思想。毫不夸張的講有了yy框架其他的php框架就顯得有些失色。要么全面而笨重,要么簡(jiǎn)單而不穩(wěn)定,要么配置復(fù)雜難于學(xué)習(xí)和理解。很高興的告訴你,恭喜你找到了yy框架,高效的開(kāi)發(fā)會(huì)讓你將網(wǎng)絡(luò)程序設(shè)計(jì)視為生活的一種享受。特點(diǎn)及性能yy框架借鑒了國(guó)內(nèi)外很多優(yōu)秀的框架和模式,并在這些設(shè)計(jì)思想的基礎(chǔ)上進(jìn)行了優(yōu)化和改進(jìn),遵循開(kāi)發(fā)運(yùn)行一切從簡(jiǎn)的原則,用強(qiáng)大的框架核心支撐基于yy框架的業(yè)務(wù)代碼,一部分重要的特性和優(yōu)點(diǎn)列舉如下:智能路由mvc架構(gòu):yy框架采用
8、智能路由架構(gòu)模式。利用這一的匹配模式,開(kāi)發(fā)人員可以方便的設(shè)計(jì)系統(tǒng)url規(guī)則,不再需要定義單一的控制器類,而是采用傳統(tǒng)的目錄結(jié)構(gòu)處理用戶請(qǐng)求,與傳統(tǒng)的php開(kāi)發(fā)做到了很好的技術(shù)過(guò)度。 項(xiàng)目層次直觀明了。預(yù)編譯機(jī)制:獨(dú)有的模式轉(zhuǎn)換功能,一鍵切換開(kāi)發(fā)模式和生產(chǎn)模式。根據(jù)不同的模式采取不同的編譯方案。特有的js,css等文本文件的壓縮機(jī)制和gzip壓縮輸出機(jī)制,最大效率的利用網(wǎng)絡(luò)帶寬。自動(dòng)類庫(kù)導(dǎo)入:yy框架的所有插件庫(kù)均采用動(dòng)態(tài)自動(dòng)加載的方案進(jìn)行按需加載,開(kāi)發(fā)者無(wú)需手動(dòng)引入,提高開(kāi)發(fā)效率。orm和驗(yàn)證統(tǒng)一:簡(jiǎn)潔輕巧的orm實(shí)現(xiàn),配合簡(jiǎn)單的curd操作接口讓開(kāi)發(fā)效率得到極大的提高,更有前后臺(tái)統(tǒng)一驗(yàn)證規(guī)則
9、,讓開(kāi)發(fā)人員無(wú)需重復(fù)勞動(dòng),js驗(yàn)證和php入庫(kù)驗(yàn)證無(wú)縫銜接。優(yōu)化查詢語(yǔ)言:內(nèi)建豐富的查詢機(jī)制,包括組合查詢、快捷查詢、復(fù)合查詢、區(qū)間查詢、統(tǒng)計(jì)查詢、定位查詢、多表查詢、子查詢、動(dòng)態(tài)查詢和原生查詢,讓你的數(shù)據(jù)查詢簡(jiǎn)潔高效。動(dòng)態(tài)和靜態(tài)模型互補(bǔ):無(wú)需創(chuàng)建任何對(duì)應(yīng)的模型類,輕松完成curd操作。對(duì)于負(fù)載的db模型處理,開(kāi)發(fā)這可以采用自動(dòng)生成的靜態(tài)模型,進(jìn)行虛擬字段的填充與回寫(xiě),數(shù)據(jù)有效性的驗(yàn)證,模型功能的擴(kuò)展等等。高效模板引擎:yy框架自建的模板編譯執(zhí)行引擎,最大限度的貼合原生php寫(xiě)法,讓初學(xué)者更容易上手,高級(jí)開(kāi)發(fā)人員更靈活應(yīng)用。前后臺(tái)統(tǒng)一ajax規(guī)則:前后臺(tái)ajax互動(dòng)高度統(tǒng)一,三行js代碼和一行
10、php代碼就可以完成ajax異步請(qǐng)求操作,極大的提高了開(kāi)發(fā)效率和用戶體驗(yàn)。國(guó)際化支持:先進(jìn)易讀的yaml標(biāo)記語(yǔ)言,用戶語(yǔ)言自動(dòng)檢測(cè)和默認(rèn)指定。全站國(guó)際化和部分國(guó)際化并存,緩存國(guó)際化識(shí)別引擎為開(kāi)發(fā)者提供極速的多語(yǔ)言網(wǎng)站開(kāi)發(fā)效率。緩存機(jī)制:系統(tǒng)支持跨服務(wù)器緩存,數(shù)據(jù)檢測(cè)機(jī)制緩存,時(shí)間過(guò)期機(jī)制緩存,基本文件緩存等多種緩存規(guī)則,最大限度的利用緩存功能減少服務(wù)器開(kāi)銷。多網(wǎng)站并存機(jī)制:即使你用的是一個(gè)虛擬主機(jī),在服務(wù)商不允許架設(shè)多個(gè)網(wǎng)站,yy框架可以通過(guò)內(nèi)置的路由規(guī)則為你解決這一問(wèn)題。多庫(kù)并存機(jī)制:yy框架集成多庫(kù)集成調(diào)用方式,內(nèi)置了分布式數(shù)據(jù)庫(kù)的支持可以通過(guò)程序切換數(shù)據(jù)庫(kù)連接,不人為指定的情況下自動(dòng)實(shí)現(xiàn)
11、主從式數(shù)據(jù)庫(kù)的讀寫(xiě)分離等(注意:主從數(shù)據(jù)庫(kù)的數(shù)據(jù)同步工作不在框架實(shí)現(xiàn),需要數(shù)據(jù)庫(kù)考慮自身的同步或者復(fù)制機(jī)制。)。簡(jiǎn)明教程基礎(chǔ)準(zhǔn)備不懂php開(kāi)發(fā)環(huán)境搭建的可以去網(wǎng)上搜索下。相信學(xué)習(xí)這個(gè)框架的童鞋們也都不是菜鳥(niǎo)級(jí)的了。 我習(xí)慣開(kāi)發(fā)中直接用實(shí)際要發(fā)布的域名來(lái)做測(cè)試,這樣將來(lái)發(fā)布后會(huì)省去一些不必要的麻煩。 假如你的程序?qū)?lái)要發(fā)布到域名上,這里簡(jiǎn)單介紹一下方法:1、修改本機(jī)host ,把你要測(cè)試開(kāi)發(fā)的網(wǎng)絡(luò)地址指向本地:用文本編輯器打開(kāi):c:windowssystem32driversetchost 文件最后一行添加:1 這樣從你本機(jī)的瀏
12、覽器請(qǐng)求網(wǎng)址 都會(huì)被解析到你的本機(jī)ip : 上。2、打開(kāi)apache的 virtual hosts配置文件 建立添加虛擬網(wǎng)站文件映射。2 3 serveradmin 4 documentroot d:/php/test/pub5 servername 6 errorlog logs/-error.log7 customlog logs/-access.log common8 9 options followsyml
13、inks10 allowoverride all11 order allow,deny12 allow from all 13 14 3、根據(jù)上面的配置可以看出,需要把工程test的開(kāi)發(fā)目錄拷貝到d:/php下4、默認(rèn)情況下把框架的參考系統(tǒng)源碼目錄也拷貝到d:/php下開(kāi)發(fā)工具這里推薦eclipse的php開(kāi)發(fā)工具(pdt),筆者是從java開(kāi)始接觸程序開(kāi)發(fā)的所以推薦eclipse 下載地址:/pdt/downloads/ 一般下載all in one就好。本人本地配的域名是框架網(wǎng)站的主域名:15 特別說(shuō)明:1、因?yàn)?/p>
14、示例中配置的域名是,所以下文所提到 的地方你都需要自換成自己的域名。2、為了讓你更了解yy框架的原理和構(gòu)成,我們先介紹幾個(gè)簡(jiǎn)單的示例再介紹開(kāi)發(fā)管理中心的使用,雖然開(kāi)發(fā)管理中心會(huì)幫助我們省去一些敲代碼的工作量,但是作為初學(xué)者,還是建議你一步一步的往下看。nginx的配置:linux下我們更常用nginx來(lái)代替apache完成頁(yè)面請(qǐng)求轉(zhuǎn)發(fā)的工作,下面是在一個(gè)簡(jiǎn)單的nginx配置示例:16 user www www;17 18 worker_processes 1;19 20 error_log /home/wwwlogs/nginx_error.lo
15、g crit;21 22 pid /usr/local/nginx/logs/nginx.pid;23 24 #specifies the value for maximum file descriptors that can be opened by this process.25 worker_rlimit_nofile 51200;26 27 events28 29 use epoll;30 worker_connections 51200;31 32 33 http34 35 include mime.types;36 default_type application/octet-st
16、ream;37 38 server_names_hash_bucket_size 128;39 client_header_buffer_size 32k;40 large_client_header_buffers 4 32k;41 client_max_body_size 50m;42 43 sendfile on;44 tcp_nopush on;45 46 keepalive_timeout 60;47 48 tcp_nodelay on;49 50 fastcgi_connect_timeout 300;51 fastcgi_send_timeout 300;52 fastcgi_r
17、ead_timeout 300;53 fastcgi_buffer_size 64k;54 fastcgi_buffers 4 64k;55 fastcgi_busy_buffers_size 128k;56 fastcgi_temp_file_write_size 256k;57 58 gzip on;59 gzip_min_length 1k;60 gzip_buffers 4 16k;61 gzip_http_version 1.0;62 gzip_comp_level 2;63 gzip_types text/plain application/x-javascript text/cs
18、s application/xml;64 gzip_vary on;65 66 #limit_zone crawler $binary_remote_addr 10m;67 68 #log format69 log_format access $remote_addr - $remote_user $time_local $request 70 $status $body_bytes_sent $http_referer 71 $http_user_agent $http_x_forwarded_for;72 server73 74 listen 80;75 server_name www.y
19、;76 index index.html index.htm index.php;77 root /home/test/pub;78 79 location / 80 if (!-e $request_filename) 81 rewrite /(.*)$ /index.php last;82 83 84 85 location .*.(php|php5)?$86 87 try_files $uri =404;88 fastcgi_pass unix:/tmp/php-cgi.sock;89 fastcgi_index index.php;90 include fcgi.conf
20、;91 92 93 location /status 94 stub_status on;95 access_log off;96 97 98 location .*.(gif|jpg|jpeg|png|bmp|swf)$99 100 expires 30d;101 102 103 location .*.(js|css)?$104 105 expires 12h;106 107 108 access_log /home/wwwlogs/access.log access;109 110 hello world功能需求:輸入地址/demo/hello.htm
21、l,頁(yè)面顯示hello wolrd字符。通過(guò)閱讀和學(xué)習(xí),你會(huì)知道這個(gè)請(qǐng)求頁(yè)面的控制器文件是:111 controller/demo/hello.php。在controller文件夾下建立demo目錄和hello.php文件。方式1:編輯hello.php 代碼如下:112 其中page類是對(duì)頁(yè)面的一個(gè)封裝類,里面有一系列的靜態(tài)參數(shù)和方法供控制器直接修改和調(diào)用。page:$need_view 默認(rèn)為 true,執(zhí)行完這個(gè)php文件之后框架會(huì)繼續(xù)加載它對(duì)應(yīng)的視圖文件來(lái)執(zhí)行,page:ignore_view()將其設(shè)為 false則執(zhí)行完php文件后就不再尋找視圖文件了。response:write
22、 方法是向客戶端進(jìn)行文本輸出,執(zhí)行后立即退出腳本。方式2:hello.php 文件不寫(xiě)任何代碼,可以建立空文件:controller/demo/hello.php。建立文件:view/default/demo/hello.htmlhello.html內(nèi)容為:116 hello world由此可見(jiàn),如果沒(méi)有執(zhí)行page:ignore_view(),框架執(zhí)行了hello.php文件之后,控制器會(huì)自動(dòng)尋找視圖文件hello.html文件加載執(zhí)行。方式3:修改配置文件conf.php將$auto_find_view改為true。117 /*是否開(kāi)啟無(wú)控制器時(shí)自動(dòng)尋找對(duì)應(yīng)視圖默認(rèn):false*/118
23、public static $auto_find_view = true;無(wú)需創(chuàng)建控制器文件直接建立文件:view/default/demo/hello.html內(nèi)容為:119 hello world配置數(shù)據(jù)庫(kù)配置數(shù)據(jù)庫(kù)連接這只是一個(gè)標(biāo)準(zhǔn)示例,實(shí)際開(kāi)發(fā)中并不一定一定按照示例的方式進(jìn)行。 框架的主配置文件是/yyuc/conf.php,它是一個(gè)被封裝好的靜類文件,有關(guān)數(shù)據(jù)庫(kù)的配置如下:120 /*數(shù)據(jù)庫(kù)地址*/121 public static $db_host = localhost;122 /*數(shù)據(jù)庫(kù)端口*/123 public static $db_port = 3306;124 /*數(shù)據(jù)
24、庫(kù)名*/125 public static $db_dbname = test;126 /*數(shù)據(jù)庫(kù)用戶名*/127 public static $db_username = root;128 /*數(shù)據(jù)庫(kù)密碼*/129 public static $db_password = ;130 /*數(shù)據(jù)庫(kù)表前綴*/131 public static $db_tableprefix = qq_;建立數(shù)據(jù)庫(kù)和表可以通過(guò)自己常用的mysql管理工具完成這一工作。這里我們建立的表名稱是:qq_notesddl語(yǔ)句如下:132 create table qq_notes (133 id int(11) not n
25、ull auto_increment comment 主鍵,134 author varchar(255) default null comment 作者,135 theme enum(arts,emotion,humanities,technology) default null comment 主題:藝術(shù),情感,人文,科技,136 title varchar(255) default 新建題目 comment 標(biāo)題,137 content text comment 內(nèi)容,138 bepublished tinyint(1) default null comment 是否發(fā)布,139 pos
26、tdate int(11) default null comment 提交時(shí)間,140 primary key (id)141 ) engine=innodb default charset=utf8;關(guān)于數(shù)據(jù)表的創(chuàng)建有以下幾點(diǎn)說(shuō)明:1、像rails一樣,如果要通過(guò)面向?qū)ο蟮姆绞讲僮?,yy框架要求如果表要依據(jù)model類操作必須有一個(gè)名為id”的int類型的自增主鍵。2、建議所有字段都要有注記,一是易于表的維護(hù)和管理,二是在自動(dòng)代碼生成過(guò)程中減少生成后的代碼的后期修改量,實(shí)現(xiàn)根據(jù)注記內(nèi)容動(dòng)態(tài)修改字段描述的功能。3、對(duì)于布爾類型,用tinyint(1)表示,0代表:否,1代表:是。下面兩條可以根
27、據(jù)開(kāi)發(fā)者的喜好采用:1、對(duì)于日期類型和日期時(shí)間類型,用int(9)表示,php開(kāi)發(fā)中因?yàn)閠ime()和date()方法的存在大多數(shù)開(kāi)發(fā)者喜歡用數(shù)據(jù)庫(kù)的int類型表示時(shí)間而放棄了date和datetime。2、根據(jù)喜好可以對(duì)于枚舉類型,通常頁(yè)面上會(huì)用下拉框或單選按鈕的形式與其關(guān)聯(lián),所以在枚舉字段的注記中采用,”號(hào)隔開(kāi)的方式對(duì)每一個(gè)枚舉項(xiàng) 進(jìn)行描述,:”號(hào)之前的文本代表該字段的描述。這樣在代碼生成后這些注釋會(huì)自動(dòng)關(guān)聯(lián)到下拉框的text上。如果只是有注解而沒(méi)有針對(duì)每一項(xiàng)的描述,則每 項(xiàng)的值和text是一樣的。以上的數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)則是yy框架約定的,當(dāng)你按照這些規(guī)則設(shè)計(jì)數(shù)據(jù)表時(shí),你的開(kāi)發(fā)工作量將大大降低
28、訪問(wèn)路徑設(shè)計(jì)訪問(wèn)設(shè)計(jì)要完成基本的增刪改查工作,通常要有以下幾個(gè)頁(yè)面:142 1) 單個(gè)項(xiàng)目的新增頁(yè)面143 2) 多個(gè)項(xiàng)目的列表頁(yè)面144 3) 單個(gè)項(xiàng)目的詳細(xì)信息頁(yè)面145 4) 單個(gè)項(xiàng)目的修改頁(yè)面這里按照管理我們的url設(shè)計(jì)如下單個(gè)項(xiàng)目的新增頁(yè)面 - /notes/creat.html多個(gè)項(xiàng)目的列表頁(yè)面- /notes/index.html (也可已訪問(wèn):/notes/)單個(gè)項(xiàng)目的詳細(xì)信息頁(yè)面- /notes/show-?.html( 其中的問(wèn)號(hào)代表項(xiàng)目id)單個(gè)項(xiàng)目的修改頁(yè)面-www.yyuc
29、.net/notes/edit-?.html( 其中的問(wèn)號(hào)代表項(xiàng)目id)開(kāi)發(fā)順序我們按照:新增,列表,詳細(xì),修改的順序進(jìn)行逐個(gè)頁(yè)面的程序開(kāi)發(fā)。新增頁(yè)面展示創(chuàng)建控制器文件:controller/notes/creat.php 對(duì)應(yīng)新增的控制器。creat.php 內(nèi)容如下:146 這句話的意思是依照表:qq_notes創(chuàng)建模型文件。為什么傳入的參數(shù)中qq_沒(méi)有寫(xiě)呢,因?yàn)闉榱艘粠?kù)多用,我們?cè)跀?shù)據(jù)庫(kù)配置中將數(shù)據(jù)庫(kù)表前綴設(shè)置為了:qq_。那么對(duì)于程序開(kāi)發(fā)來(lái)說(shuō),所有的對(duì)表qq_notes的描述都要用到他除去前綴之后的名字:notes。創(chuàng)建視圖文件:view/default/notes/creat.htm
30、l 對(duì)應(yīng)新增的視圖。creat.html 內(nèi)容如下:149 150 151 152 153 crud測(cè)試154 155 156 157 標(biāo)題:$note-text(title)158 作者:$note-text(author)159 主題:$note-select(theme)160 發(fā)表時(shí)間:$note-date(postdate)161 是否發(fā)布:$note-checkbox(bepublished)162 內(nèi)容:163 $note-textarea(content)164 提交165 166 167 好了,新增頁(yè)面的展示工作就完成了,可能你會(huì)對(duì)頁(yè)面上的這些標(biāo)簽感到奇怪,甚至?xí)耄喊パ?,?/p>
31、是該死的視圖標(biāo)簽,要學(xué)這個(gè)框架就要掌握這些煩人的標(biāo)簽了。不急讓我們先訪問(wèn)以下這個(gè)頁(yè)面,之后你就會(huì)發(fā)現(xiàn),yy框架的標(biāo)簽是這么的易學(xué)和神奇。輸入網(wǎng)址:/notes/creat.html,我們可以看到頁(yè)面展示出來(lái)。因?yàn)闃?biāo)題(title)字段的默認(rèn)值是:新建標(biāo)題,所以該項(xiàng)內(nèi)容會(huì)自動(dòng)填充,讓我們來(lái)測(cè)試以下,我們把數(shù)據(jù)庫(kù)中主題(theme)字段的默認(rèn)值修改為:humanities:刷新下頁(yè)面你會(huì)發(fā)現(xiàn)主題字段的默認(rèn)值隨之改變了。關(guān)于模板標(biāo)簽的說(shuō)明:對(duì)于在控制器中定義的模型變量(如上例中的$note),可以在對(duì)應(yīng)的視圖中展示針對(duì)不同字段的相應(yīng)的標(biāo)簽:表單項(xiàng)對(duì)應(yīng)html備注a
32、ll.模型所有非空屬性的表單集合(隱藏的)text文本輸入password密碼框email郵件輸入框(html5)range程度選擇框(html5)hidden隱藏標(biāo)簽textarea文本框checkbox多選按鈕select.下拉框radio單選按鈕date時(shí)間選擇datetime時(shí)間日期選擇texteditor富文本編輯器color顏色選擇框vercode驗(yàn)證碼輸入框upload文件上傳因?yàn)橹皇腔镜脑鰟h改查功能的實(shí)現(xiàn),并不涉及到自定義的數(shù)據(jù)和頁(yè)面樣式的問(wèn)題,所以詳細(xì)的使用方法參考模型類api。鼠標(biāo)點(diǎn)擊發(fā)表時(shí)間文本框時(shí),會(huì)有日期選擇框彈出,這是因?yàn)榭蚣軙?huì)對(duì)每個(gè)頁(yè)面自動(dòng)引入jquery庫(kù)和基
33、于jquery的框架適配器。視圖頁(yè)面中你不需要添加一行js代碼就能實(shí)現(xiàn)這一功能。你可能還會(huì)有疑問(wèn),前面提到的數(shù)據(jù)庫(kù)設(shè)計(jì)中的注記在這個(gè)頁(yè)面中并沒(méi)有體現(xiàn)出來(lái),好吧,我們把creat.html 的內(nèi)容改成這個(gè)樣子:168 169 170 171 172 crud測(cè)試173 174 175 176 $note-lable(title):$note-text(title)177 $note-lable(author):$note-text(author)178 $note-lable(theme):$note-select(theme)179 $note-lable(postdate):$note-da
34、te(postdate)180 $note-lable(bepublished):$note-checkbox(bepublished)181 $note-lable(content):182 $note-texteditor(content)183 提交184 185 186 刷新頁(yè)面顯示效果和之前的是一樣的。新增信息保存修改控制器文件:controller/notes/creat.php 。187 load_from_post();193 $note-save();194 195 ?訪問(wèn):/notes/creat.html,頁(yè)面上填入一些測(cè)試數(shù)據(jù)點(diǎn)擊提交
35、”。這樣各個(gè)字段的信息就會(huì)自動(dòng)的保存到數(shù)據(jù)庫(kù)中了。信息列表展示用戶訪問(wèn)時(shí)默認(rèn)展示列表頁(yè),所以我們建立的列表頁(yè)面的控制器名稱為index.php。創(chuàng)建控制器文件:controller/notes/index.php 對(duì)應(yīng)列表展示的控制器。index.php 內(nèi)容如下:196 list_all();199 ?創(chuàng)建視圖文件:view/default/notes/index.html 對(duì)應(yīng)列表展示的視圖。index.html 內(nèi)容如下:200 201 202 203 204 crud測(cè)試-列表205 206 207 208 209 210 211 $note-lable(title)212 $note
36、-lable(author)213 $note-lable(theme)214 $note-lable(postdate)215 216 loop $notes as $n217 218 $n-title219 $n-author220 $n-field_text(theme)221 date(y-m-d,$n-postdate)222 223 /loop224 225 226 227 對(duì)于theme字段,因?yàn)榇鎯?chǔ)為枚舉類型,而枚舉的值不是最終要顯示的值,所以調(diào)用field_text方法展示要調(diào)用的文本。瀏覽器輸入:/notes/,一個(gè)信息列表頁(yè)面就展現(xiàn)在你
37、面前了。此時(shí),我們?cè)傩薷南滦略鲰?yè)面,使新增完成后自動(dòng)跳轉(zhuǎn)到列表頁(yè)creat.php 內(nèi)容改為:228 load_from_post();234 $note-save();235 redirect:to(index);236 237 ?通過(guò)調(diào)用框架的redirect:to方法而不是直接的視圖引用,可以有效的屏蔽了f5刷新引起的重復(fù)提交問(wèn)題。信息詳細(xì)頁(yè)面創(chuàng)建控制器文件:controller/notes/show.php 對(duì)應(yīng)詳細(xì)信息展示的控制器。show.php內(nèi)容如下:238 find(get(1);241 ?創(chuàng)建視圖文件:view/default/notes/show.html 對(duì)應(yīng)詳細(xì)信息展
38、示的視圖。show.html 內(nèi)容如下:242 243 244 245 246 crud測(cè)試-詳細(xì)信息247 248 249 250 251 252 $note-lable(title):$note-title253 $note-lable(author):$note-author254 $note-lable(theme):$note-field_text(theme)255 $note-lable(postdate):date(y-m-d,$note-postdate)256 $note-lable(bepublished):$note-field_text(bepublished)257
39、 $note-lable(content):258 $note-content259 260 261 瀏覽器輸入:/notes/show-1.html信息刪除修改列表展示頁(yè)面,讓每條信息點(diǎn)擊后進(jìn)入相應(yīng)的詳細(xì)頁(yè)面,并添加刪除按鈕和編輯按鈕。index.html 內(nèi)容改為:262 263 264 265 266 crud測(cè)試-列表267 268 269 270 271 272 273 $note-lable(title)274 $note-lable(author)275 $note-lable(theme)276 $note-lable(postdate)27
40、7 刪除278 編輯279 280 loop $notes as $n281 282 id.html$n-title283 $n-author284 $n-field_text(theme)285 date(y-m-d,$n-postdate)286 id.html);刪除287 id.html編輯288 289 /loop290 291 292 293 關(guān)于模板標(biāo)簽的說(shuō)明:1、 對(duì)于視圖模板中的js方法,因?yàn)橥瑯邮且罄ㄌ?hào)”的,所以在模板解釋中會(huì)被解析器誤認(rèn)為是php模板標(biāo)簽,解決的方法是對(duì)于js方法”之后要緊跟空格或者回車,這樣解釋器就不會(huì)將其解釋成php語(yǔ)言。2、 因?yàn)閕e的某些問(wèn)題
41、,當(dāng)要用到j(luò)s跳轉(zhuǎn)時(shí)要調(diào)用框架中的goto方法,請(qǐng)不要采用傳統(tǒng)的location.href=?的方式。這樣控制器中的redirect:back()方法才會(huì)生效。創(chuàng)建控制器文件:controller/notes/delete.php 對(duì)應(yīng)信息刪除的控制器。delete.php 內(nèi)容為:294 id($_get1);299 $note-remove();300 301 /返回請(qǐng)求前的頁(yè)面302 redirect:back();303 ?信息修改頁(yè)面創(chuàng)建控制器文件:controller/notes/edit.php 對(duì)應(yīng)每條數(shù)據(jù)的修改頁(yè)面。edit.php代碼如下:304 find(get(1);3
42、09 310 ?創(chuàng)建視圖文件:view/default/notes/edit.html 對(duì)應(yīng)修改展示的視圖。edit.html 內(nèi)容如下:311 312 313 314 315 crud測(cè)試316 317 318 319 320 321 $note-lable(title):$note-text(title)322 $note-lable(author):$note-text(author)323 $note-lable(theme):$note-select(theme)324 $note-lable(postdate):$note-date(postdate)325 $note-lable
43、(bepublished):$note-checkbox(bepublished)326 $note-lable(content):327 $note-texteditor(content)328 提交329 $note-hidden(id)330 331 332 瀏覽器輸入:/notes/edit-1.html , 進(jìn)行相應(yīng)的數(shù)據(jù)修改,點(diǎn)擊提交”,此條信息就會(huì)被更新。你會(huì)發(fā)現(xiàn)edit.html和creat.html基本一致,有以下兩處不同:1、creat.html的 form的action為空這樣默認(rèn)是當(dāng)前頁(yè)面,也就是creat.html。而同樣的edit.html的form的action也為 creat.html。也就是說(shuō)兩個(gè)頁(yè)面提交的信息都是通過(guò)creat.php處理的。$note-save();既可以新增,也可以更新,框架 是通過(guò)判斷模型中是否定義了主鍵id來(lái)區(qū)分的。2、edit.html比creat.html多了一行代碼$note-hidden(id)這是隱藏的數(shù)據(jù)的主鍵id的提交 信息。其實(shí)在creat.html中也是可以加上$note-
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 神經(jīng)外科護(hù)理新進(jìn)展
- 消化內(nèi)科主治醫(yī)師工作體系
- 老年友善管理培訓(xùn)
- 我愛(ài)吃飯:大班健康飲食教育
- 護(hù)理學(xué)查房模板
- 中醫(yī)健康養(yǎng)生之道
- 食品安全安全教育
- 健康的小學(xué)生
- 初二心理健康教育指導(dǎo)綱要
- 弟子規(guī)家長(zhǎng)培訓(xùn)會(huì)
- 北京昌平霍營(yíng)街道社區(qū)“兩委”干部?jī)?chǔ)備人才招募筆試真題2024
- 2024年 黃岡市法院系統(tǒng)招聘審判輔助人員考試真題試題含答案
- ktv營(yíng)銷經(jīng)理管理制度
- 公司消防網(wǎng)格化管理制度
- 5.3.1探究酵母菌的呼吸方式課件高一上學(xué)期生物人教版必修1
- 護(hù)士職業(yè)溝通技巧課件
- 農(nóng)村村務(wù)管理課件
- 2025至2030中國(guó)氧化鋁纖維行業(yè)供需趨勢(shì)及投資風(fēng)險(xiǎn)報(bào)告
- 2024年佛山市南海區(qū)圖書(shū)館招聘考試真題
- NAMPT調(diào)控NAD代謝影響椎間盤(pán)退變的分子機(jī)制與干預(yù)策略研究
- 地方病防治測(cè)試題及答案
評(píng)論
0/150
提交評(píng)論