成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

php學(xué)習(xí)之留言板

biaoxiaoduan / 1744人閱讀

摘要:用到對(duì)數(shù)據(jù)進(jìn)行刪除,具體請(qǐng)看的編寫相關(guān)姿勢有發(fā)送請(qǐng)求字符串模板頁面元素內(nèi)容賦值請(qǐng)求返回到這,整體結(jié)構(gòu)就完成了。

前言

在對(duì)php語法有一定了解之后開始,這是第一個(gè)php練手項(xiàng)目,涵蓋的知識(shí)有

公共部分的引用

表單的提交

請(qǐng)求的接收與響應(yīng)

interface+implements的使用

基于文件的所處理的增刪改查

json的格式化與字符串序列化

項(xiàng)目地址message board
ps:本文不詳細(xì)介紹知識(shí)點(diǎn),只是大概描述下心得,閱讀者如果有心閱讀可以參看相關(guān)代碼學(xué)習(xí),由于本人前端出身,對(duì)前端相關(guān)姿勢也只是一筆帶過,但是會(huì)給出相應(yīng)關(guān)鍵字或鏈接;

整體結(jié)構(gòu)的介紹
  root
    │  addMess.php
    │  delMess.php
    │  index.php
    │  show.php
    │      
    ├─commom_view
    │      head.html
    │      
    ├─common
    │      lyfile.php
    │      
    ├─css
    │      bootstrap.min.css
    │      
    └─data
            liuyan.txt
            

php相關(guān)求情直接放在根目錄下,commom_view存放視圖相同部分,引入了bs的樣式文件存放在css中,數(shù)據(jù)txt文件存放在data文件夾下,common文件夾下存放data的liuyan.txt文件夾讀取相關(guān)方法;

編寫過程 公共部分
1. 首先編寫公共頭部包含標(biāo)題,相關(guān)功能頁面鏈接,為了讓整體頁面好看一點(diǎn)引入了[bs3](http://www.bootcss.com/),然后在各個(gè)頁面通過```include (filepath)```的方式進(jìn)行引入操作;

2. 對(duì)整體了解,lyfile需要實(shí)現(xiàn)的功能有:新增、刪除、展現(xiàn),先寫接口方法addItem、delItem、getAll;

3. 編寫類LyFile實(shí)現(xiàn)接口中定義的三個(gè)方法(未真正編寫代碼)在需要引入的頁面同樣通過 include 的方式進(jìn)行引入。
首頁
1. 首頁就是一張表單,用做相關(guān)信息的提交;
新增完成頁面
1. 表單提交后跳轉(zhuǎn)到addMess頁面,做的主要是提交信息的存儲(chǔ)以及,當(dāng)前所提交信息的展示;

2. 用到addItem方法進(jìn)行數(shù)據(jù)添加,具體請(qǐng)看[lyfile的編寫](#lyfile);

3. 頁面相關(guān)姿勢有:post請(qǐng)求參數(shù)的獲取:```$_POST[varitename]```,登錄人IP獲?。篳``$_SERVER["REMOTE_ADDR"]```、日期格式化:```date( string $format [, int $timestamp ] )```、數(shù)組鍵值對(duì)初始化方式:```array(key=>value)```、字符串拼接:"....{$varita}..."回車換行符不會(huì)打斷整體字符串只以《"》為標(biāo)識(shí);
留言展示頁面
1. 查看留言要做的是從數(shù)據(jù)文件拿到相應(yīng)的數(shù)據(jù),然后通過循環(huán)進(jìn)行渲染

2. 用到getAll()對(duì)數(shù)據(jù)進(jìn)行提取,具體請(qǐng)看[lyfile的編寫](#lyfile);

3. 頁面相關(guān)姿勢有:foreach數(shù)組循環(huán)便利、break跳出數(shù)組循環(huán)
刪除留言
1. 在展示頁上,咱們對(duì)留言進(jìn)行刪除,這里沒有直接采用href跳鏈的通過get請(qǐng)求的形式進(jìn)行,因?yàn)檫@里需要做的只是刪除某條數(shù)據(jù)然后刷新列表的局部操作,不適合跳轉(zhuǎn)鏈接。

2. 用到delMess()對(duì)數(shù)據(jù)進(jìn)行刪除,具體請(qǐng)看[lyfile的編寫](#lyfile);

3. 相關(guān)姿勢有:$.ajax發(fā)送請(qǐng)求、es6字符串模板、頁面元素內(nèi)容賦值、php請(qǐng)求返回echo xxx;

..到這,整體結(jié)構(gòu)就完成了。

lyfile的編寫

lyfile是我花的時(shí)間比較多的一塊,因此多帶帶拉出來講,前三段主要說個(gè)人對(duì)自己書寫方式的必要性;

interface的必要性
* 鍛煉對(duì)項(xiàng)目所需要功能的整體把握能力;

* 實(shí)現(xiàn)者可以通過interface的描述對(duì)功能進(jìn)行逐個(gè)實(shí)現(xiàn),不受其他干擾;

* 調(diào)用者可以通過interface相關(guān)介紹,了解接口調(diào)用方式;

* interface雖然可以繼承,但他不是類。
使用類的必要性
* 提高復(fù)用性,自身調(diào)用相關(guān)參數(shù)采用$this->xxx進(jìn)行調(diào)用,調(diào)用者通過實(shí)例化相關(guān)類,調(diào)用相關(guān)方法;

* 安全性,只有提供相關(guān)接口的方法才能進(jìn)行調(diào)用,否則不能調(diào)用;

* 延展性,當(dāng)需要添加新的接口時(shí),之需要在內(nèi)部再進(jìn)行新增相應(yīng)方法即可,不受其他接口影響;
內(nèi)部變量
* file_path 因?yàn)樗械奈募即鎯?chǔ)在liuyan.txt文件上,因此file_path就保存該文件的路徑

* 常量 ERRORCODE、SUCCCODE靜態(tài)標(biāo)識(shí)錯(cuò)誤和正確狀態(tài),避免再代碼中使用-1,0標(biāo)識(shí),提高代碼可讀性
addItem
* 首先了解其要做的事:1、獲取數(shù)據(jù),2、添加相應(yīng)的id(為啥這么干將在delItem進(jìn)行說明),3、再lyfile.txt寫入;

* 新增數(shù)據(jù)獲取是通過調(diào)用處傳過來的,在此不進(jìn)行贅述;

* 添加id:這里采用獲取最后一條留言的id值(不是索引值),在其基礎(chǔ)上+1以此來保持id的唯一性,具體功過代碼來說明;

* 一條數(shù)據(jù)放在一行的形式進(jìn)行存儲(chǔ);
    public function addItem($write_data){
        //1.獲取最后一行數(shù)據(jù)的id并+1
        $lastId = $this->getLastId();
        $write_data["id"] = $lastId+1;
        //在文件末尾寫入的方式打開文件
        $handle   = fopen($this->file_path,"a");
        //數(shù)組轉(zhuǎn)字符串
        $ly = $this->itemString($write_data);
        //字符串寫入
        $str  = fwrite($handle,$ly);
        //關(guān)閉文件
        fclose($handle);
    }
    //獲取最后一行的id
    private function getLastId(){
        //獲取所有文件內(nèi)容
        $lyData = $this->getAll();
        //計(jì)算行數(shù)
        $lyLen = count($lyData);
        //當(dāng)沒有數(shù)據(jù)時(shí),返回位置-1;
        if($lyLen == 0)return -1;
        //否則返回相應(yīng)的id;
        return $lyData[$lyLen-1]["id"];
    }
    //獲取所有文件的內(nèi)容
    public function getAll(){
        //逐行讀取文件,以數(shù)組的形式返回,每一項(xiàng)為item字符串;
        $all_item = file($this->file_path);
        //聲明返回的變量數(shù)組
        $dataArr = array();
        //便利讀組的文件字符數(shù)組
        foreach($all_item as $item){
            //將字符串轉(zhuǎn)化成數(shù)組的形式(注意json_decode第二個(gè)參數(shù),不加則返回的是一個(gè)對(duì)象),并加入到返回的變量數(shù)組中。
            array_push($dataArr,json_decode($item,true));
        }
        return $dataArr;
    }
    //數(shù)組轉(zhuǎn)化成字符串并加入換行符,這里不做贅述
    private function itemString($item_data){
        $item_str = json_encode($item_data);
        $item_str .="
";
        return $item_str;
    }
getAll

機(jī)智的同學(xué)早已發(fā)現(xiàn),在上面已經(jīng)實(shí)現(xiàn)了這個(gè)函數(shù),那么咱們就可以愉快的拿起來用了,不用再重復(fù)寫了。

delItem

這要干的就是1、通過id找到相應(yīng)的項(xiàng),2、找到就刪除并返回成功碼,否則返回錯(cuò)誤碼

    public function delItem($id){
        //獲取所有的數(shù)據(jù)
        $allLy = $this->getAll();
        //初始化要?jiǎng)h除的索引
        $delIndex = -1;
        
        //找到需要?jiǎng)h除的ID所對(duì)應(yīng)的對(duì)象
        foreach($allLy as $curIndex =>$lyItem){
            //如果找到相應(yīng)的id就對(duì)$delIndex進(jìn)行賦值
            if($lyItem["id"] == $id){
                $delIndex = $curIndex;
                break;
            } 
        }
        
        //如果沒找到索引號(hào),直接退出并返回錯(cuò)誤碼(對(duì)象內(nèi)常量的引用是self ::CONSTVAR)
        if($delIndex==-1)return self ::ERRORCODE;
        //刪除數(shù)組中索引位置的元素;
        array_splice($allLy, $delIndex ,1);
        // 將新的數(shù)組元素寫入到文件中
        if($this->allWrite($allLy)==self ::SUCCCODE)return self ::SUCCCODE;
        //讀寫出現(xiàn)錯(cuò)誤
        return self ::ERRORCODE;
    }

    //新的數(shù)組元素寫入
    private function allWrite($allLy){
        //以覆蓋的方式寫入文件
        $handle   = fopen($this->file_path,"w");
        //初始化寫入字符串
        $writeStr = "";
        foreach($allLy as $lyItem){
            //將item轉(zhuǎn)成字符串,并進(jìn)行鏈接。因?yàn)橹癮ddItem定義過這個(gè)方法,因此再次得到復(fù)用
            $writeStr.=$this->itemString($lyItem);
        }
        //將字符串寫入
        fwrite($handle,$writeStr);
        fclose($handle);
        //返回操作正確碼
        return self ::SUCCCODE;
    }
結(jié)束語

這里主要對(duì)php大致的一些語法和操作進(jìn)行。編碼的思路我認(rèn)為應(yīng)該是先整體規(guī)劃,再部分實(shí)現(xiàn)的一個(gè)過程。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22834.html

相關(guān)文章

  • laravel學(xué)習(xí)之nginx配置站點(diǎn)

    摘要:前言設(shè)置項(xiàng)目的域名站點(diǎn)的時(shí)候,需要對(duì)做一些對(duì)應(yīng)的重寫配置,用來做相關(guān)路由,否則會(huì)報(bào)。 前言 設(shè)置laravel項(xiàng)目的域名站點(diǎn)的時(shí)候,需要對(duì)nginx做一些對(duì)應(yīng)的重寫rewrite配置,用來做相關(guān)路由,否則會(huì)報(bào)404。 nginx.conf配置 server { listen 80; server_name xxx.com; #域名 root /data/www...

    frank_fun 評(píng)論0 收藏0
  • laravel學(xué)習(xí)之nginx配置站點(diǎn)

    摘要:前言設(shè)置項(xiàng)目的域名站點(diǎn)的時(shí)候,需要對(duì)做一些對(duì)應(yīng)的重寫配置,用來做相關(guān)路由,否則會(huì)報(bào)。 前言 設(shè)置laravel項(xiàng)目的域名站點(diǎn)的時(shí)候,需要對(duì)nginx做一些對(duì)應(yīng)的重寫rewrite配置,用來做相關(guān)路由,否則會(huì)報(bào)404。 nginx.conf配置 server { listen 80; server_name xxx.com; #域名 root /data/www...

    Jaden 評(píng)論0 收藏0
  • Java 容器學(xué)習(xí)之 HashMap

    摘要:底層的數(shù)據(jù)結(jié)構(gòu)就是數(shù)組鏈表紅黑樹,紅黑樹是在中加進(jìn)來的。負(fù)載因子哈希表中的填滿程度。 前言 把 Java 容器的學(xué)習(xí)筆記放到 github 里了,還在更新~其他的目前不打算抽出來作為文章寫,感覺挖的還不夠深,等對(duì)某些東西理解的更深了再寫文章吧Java 容器目錄如下: Java 容器 一、概述 二、源碼學(xué)習(xí) 1. Map 1.1 HashMap 1.2 LinkedHashM...

    Alex 評(píng)論0 收藏0
  • nginx學(xué)習(xí)之——rewrite

    摘要:當(dāng)前請(qǐng)求在指令中指定的值。請(qǐng)求主機(jī)頭字段,否則為服務(wù)器名稱??蛻舳诵畔⒖蛻舳诵畔⑦@個(gè)變量可以限制連接速率。已經(jīng)經(jīng)過驗(yàn)證的用戶名。請(qǐng)求使用的協(xié)議,通常是或。請(qǐng)求到達(dá)服務(wù)器的端口號(hào)。包含請(qǐng)求參數(shù)的原始,不包含主機(jī)名,如。 rewrite配置在server{}、location{}、if{}段中 ,對(duì)Url中除去域名和參數(shù)的字符串起作用 一、語法:rewrite regex replacem...

    Lavender 評(píng)論0 收藏0
  • java 學(xué)習(xí)之 main方法

    摘要:之所以不行是應(yīng)為,變量方法何值還不確定,在沒有實(shí)例的內(nèi)存中運(yùn)行的時(shí)候會(huì)報(bào)錯(cuò)但是非靜態(tài)方法或者函數(shù)是可以調(diào)用靜態(tài)方法和靜態(tài)變量的,因?yàn)橹祷蚪Y(jié)果已經(jīng)固定。 1.main main方法 java 類的主方法,相當(dāng)于php類文件的index方法。默認(rèn)執(zhí)行。 java的main方法 必須聲明為 public static void main(String [] args) 其中static是靜態(tài)...

    banana_pi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<