亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

優(yōu)化你的PHP代碼,從現(xiàn)在做起

impig33 / 2666人閱讀

摘要:前言我一生的文章都會(huì)放在這里,我的博客,我希望每一行代碼,每一段文字都能幫助你。大家好,我是,今天我們不聊工具規(guī)范等等等等的輔助,就聊一下該如何寫一段好的代碼,本文以我的職業(yè)生涯碰到的代碼為例,如有出入請(qǐng)?jiān)谠u(píng)論區(qū)提出異議,謝謝。

前言
我一生的文章都會(huì)放在這里,我的博客,我希望每一行代碼,每一段文字都能幫助你。https://github.com/CrazyCodes...

大家好,我是CrazyCodes ,今天我們不聊工具、規(guī)范等等等等的輔助,就聊一下該如何寫一段“好”的代碼,本文以我的職業(yè)生涯碰到的代碼為例,如有出入請(qǐng)?jiān)谠u(píng)論區(qū)提出異議,謝謝。

搜索功能

搜索很常見,復(fù)雜的搜索大多出行在后臺(tái),舉個(gè)栗子,大概需求是這樣的

這是一個(gè)后臺(tái)用戶列表的搜索功能

搜索條件 可否并行 是否必填
用戶名 可以
手機(jī)號(hào)碼 可以
是否已認(rèn)證 可以
用戶性別 可以
最近登錄時(shí)間 可以
賬戶余額 可以
初學(xué)者代碼

看到這些例子你是否不由的一顫,又要開始造輪子的是不是?
以原生的例子為例,開始你可能會(huì)這樣寫(以下為偽代碼)

if (IS_POST) {
    $like = "";
    if (isset($_POST["username"])) {
        $username = $_POST["username"];
        $like .= "username like "%" . $username . "%" and ";
    }

    if (isset($_POST["phone"])) {
        $phone = $_POST["phone"];
        $like .= "phone like "%" . $phone . "%" and";

    }

    if ($_POST["is_auth"]) {
        $isAuth = $_POST["is_auth"];
        $like .= "is_auth like "%" . $isAuth . "%" and";

    }

    if ($_POST["sex"]) {
        $sex = $_POST["sex"];
        $like .= "sex like "%" . $sex . "%" and";
    }


    if ($_POST["time"]) {
        $time = $_POST["time"];
        $like .= "time like "%" . $time . "%" and";
    }


    if ($_POST["wallet"]) {
        $wallet = $_POST["wallet"];
        $like .= "wallet like "%" . $wallet . "%" and";

    }

    $like = rtrim($like, "and");

    $sql = "SELECT * FROM `user` WHERE {$like}";


} else {
    return view("user");
}
封裝

恩...,還不錯(cuò),結(jié)構(gòu)清晰,傳統(tǒng)的初學(xué)者條型代碼,接下來我們先封裝一下幾塊代碼。

function post($param)
{
    return isset($_POST[$param]) ? $_POST[$param] : null;
}

if (IS_POST) {
    $like = "";
    if (post("username")) {
        $username = post("username");
        $like .= "username like "%" . $username . "%" and ";
    }

    if (post("phone")) {
        $phone = post("phone");
        $like .= "phone like "%" . $phone . "%" and";

    }

    if (post("is_auth")) {
        $isAuth = post("is_auth");
        $like .= "is_auth like "%" . $isAuth . "%" and";

    }

    if (post("sex")) {
        $sex = post("sex");
        $like .= "sex like "%" . $sex . "%" and";
    }


    if (post("time")) {
        $time = post("time");
        $like .= "time like "%" . $time . "%" and";
    }


    if (post("wallet")) {
        $wallet = post("wallet");
        $like .= "wallet like "%" . $wallet . "%" and";

    }

    $like = rtrim($like, "and");

    $sql = "SELECT * FROM `user` WHERE {$like}";


} else {
    return view("user");
}
適當(dāng)使用迭代

恩,至少我們可以自由控制post方法了,但是這類過程化代碼維護(hù)性太低,我們?cè)俑倪M(jìn)下

function post($param)
{
    return isset($_POST[$param]) ? $_POST[$param] : false;
}

function postAll()
{
    return $_POST;
}

if (IS_POST) {
    $like = "";


    foreach (postAll() as $key => $value) {
        if (post($key)) {
            $like .= "{$key} like "%{$value}%" and";
        }
    }

    $like = rtrim($like, "and");

    $sql = "SELECT * FROM `user` WHERE {$like}";


} else {
    return view("user");
}
面向?qū)ο?/b>

加個(gè)迭代代碼看起來還算是整潔了點(diǎn),作為PHP程序員,寫代碼不面向?qū)ο蟛豢孔V,把class加上

function request($param = null)
{
    return new Request($param);
}

class Request
{
    public function __construct(string $param = null)
    {
        return isset($_POST[$param]) ? $_POST[$param] : false;
    }

    public function all()
    {
        return $_POST;
    }
}


class User
{
    public function index()
    {
        if (IS_POST) {
            $like = "";

            foreach (request()->all() as $key => $value) {
                if (request($key)) {
                    $like .= "{$key} like "%{$value}%" and";
                }
            }

            $like = rtrim($like, "and");

            $sql = "SELECT * FROM `user` WHERE {$like}";

        } else {
            return view("user");
        }
    }
}
對(duì)User的改造

我們?cè)趯?duì)User的類進(jìn)行改造,做一些判斷及篩選

function request($param = null)
{
    return new Request($param);
}

class Request
{
    public function __construct(string $param = null)
    {
        return isset($_POST[$param]) ? $_POST[$param] : false;
    }

    public function all()
    {
        return $_POST;
    }
}


class User
{
    public $request = [
        "username",
        "phone",
        "is_auth",
        "sex",
        "time",
        "wallet"
    ];

    public function index()
    {
        if (IS_POST) {
            $like = "";

            foreach (request()->all() as $key => $value) {
                if (in_array($key, $this->request) && request($key)) {
                    $like .= sprintf("%s like %s and", $key, $value);
                }
            }

            $like = rtrim($like, "and");

            $sql = "SELECT * FROM `user` WHERE {$like}";

        } else {
            return view("user");
        }
    }
}

這就差不多了,對(duì)比真是的代碼可能還相差甚遠(yuǎn),我寫這篇文章的目的不是教會(huì)你如何寫代碼,是想說明編碼不是一次性的,應(yīng)經(jīng)過多次修改,使代碼具有可維護(hù)性,擴(kuò)展性等等的,各種“性”

致謝

感謝你看到這里,希望本篇文章可以幫到你,謝謝

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

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

相關(guān)文章

  • 如何成為專業(yè)的PHP開發(fā)者

    摘要:如何才能成為一名專業(yè)的開發(fā)者資深開發(fā)者在其博客上分享了一些心得。要想成為一個(gè)專業(yè)的程序員,首先要成為一個(gè)中級(jí)程序員。永遠(yuǎn)不要低估陪伴的力量結(jié)論當(dāng)你專注于實(shí)踐上面所提到各種方法的時(shí)候,你就在成為專業(yè)開發(fā)者的路上。 如何才能成為一名專業(yè)的PHP開發(fā)者?資深Web開發(fā)者Bruno Skvorc在其博客上分享了一些心得。 showImg(http://segmentfault.com/img...

    617035918 評(píng)論0 收藏0
  • Functional CSS: 試著改進(jìn)可重用CSS做起

    摘要:從試著改進(jìn)可重用做起泊學(xué)視頻回想起每次更新泊學(xué)網(wǎng)站,最讓我頭疼的,就是改寫。于是我?guī)缀醪患偎妓鞯膶懗隽诉@樣的模板它同樣包含了一個(gè)封面圖,一個(gè)標(biāo)題和一個(gè)簡介。 從試著改進(jìn)可重用CSS做起 泊學(xué)4K視頻 回想起每次更新泊學(xué)網(wǎng)站,最讓我頭疼的,就是改寫CSS。在不同的階段,對(duì)CSS不斷深入的理解,對(duì)網(wǎng)站內(nèi)容的調(diào)整,對(duì)UI的重用需求,都影響著CSS的編寫方式,因此,稍不留神,你的代碼理解就會(huì)充...

    microelec 評(píng)論0 收藏0
  • 轉(zhuǎn):框架看PHP的五種境界及各自的薪資待遇

    摘要:語言行為及特征狀態(tài)看不懂任何英語技術(shù),英語文檔,凡事沒有培訓(xùn)部在搞的,只有英文文檔的東西國內(nèi)一律沒大公司在用,都非主流,排斥英文文檔和新技術(shù),以及各種超出他學(xué)習(xí)能力范圍的技術(shù)。 在撰寫此文前首先必須申明的是本人不鄙視任何一種框架,也無意于挑起PHP框架間的戰(zhàn)爭,更沒有貶低某個(gè)框架使用者的用意,本文純粹個(gè)人的看法。你可以認(rèn)為我無知也好,或者裝逼也好,請(qǐng)不要試著在任何情況下,隨便發(fā)起言語的...

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

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

0條評(píng)論

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