免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
php – 模型參數(shù)設(shè)置最佳實踐?

我有一個模型在SQL中運行一系列條件的查詢.因此,該模型需要接受許多參數(shù),即:

this->model_name->method($param1, $param2, ... )

在模型方面,我通常將其設(shè)置為

function method($param1 = NULL, $param2 = NULL, ... )

每個參數(shù)都是可選的,用例會因應(yīng)用程序而異.所以我的問題是:在什么時候(如果有的話)開始通過數(shù)組將這些參數(shù)傳遞給方法是有意義的,la:

$params = ['param1' => 'whatever','param2' => 'whatever',...]this->model_name->method($params)

我認為最終目標是更清晰的代碼,以及更少的方法實例(null,null,null,$,$param),除非這是一件好事.

解決方法:

大多數(shù)答案都支持數(shù)組方法(一般來說,我也同意),但我會扮演魔鬼的擁護者并列出一些負面信息:

文檔不太清楚

記錄函數(shù)/方法的大多數(shù)方法將單獨列出該函數(shù)的參數(shù).例如,具有基本DocBlock的函數(shù)將如下所示:

/** * A function that accepts an array of params * @param array $param_array An array of key=>value arguments */function accept_array($param_array = array('key1' => 'first_val', 'key2' => 'second_val')) {    var_dump($param_array);}

注意DocBlock如何不直接支持$param_array的各個部分,只是整個數(shù)組.相反,單獨列出所有參數(shù)如下所示:

/** * A function that 'normal' params * @param string $key1 First argument * @param string $key2 Second argument */function accept_normal($key1 = 'first_val', $key2 = 'second_val') {    echo $key1;    echo $key2;}

如果您希望您的函數(shù)是相當自我記錄的,這也是一個問題,因為在第一個示例中,您不需要在函數(shù)本身中實際列出您期望的參數(shù).

默認值可能無法按預(yù)期工作

‘正如預(yù)期’可能是一個加載的短語(這可能是一個更明顯的問題),但請采取以下措施:

function accept_array($param_array = array('key1' => 'first_val', 'key2' => 'second_val')) {    var_dump($param_array);}accept_array(array('key2' => 'a_different_val'));

有些人可能希望var_dump包含key1的默認值和key2的新值,但是整個數(shù)組都會被替換,這意味著您需要記住在每個函數(shù)中手動為每個鍵設(shè)置默認值,如下所示:

function accept_array($param_array = array()) {    if (!isset($param_array['key1'])) { $param_array['key1'] = 'first_val'; }    if (!isset($param_array['key2'])) { $param_array['key2'] = 'second_val'; }    var_dump($param_array);}accept_array(array('key2' => 'a_different_val'));

沒有自動過濾

列出“普通”方式的參數(shù)也為您提供了一組內(nèi)置的過濾器.以此快速而臟的用戶搜索為例:

/** * We want to allow searching for users by user_id or email only! * @param array $param_array */function find_user($param_array = array('user_id' => 0, 'email' => '')) {    foreach ($param_array as $field => $value) {        $this->db->or_where($field, $value);    }    $this->db->get('users');}find_user(array('first_name' => 'Joe', 'last_name' => 'Bloggs'));

如果不在$param_array上手動添加一些“接受的密鑰”類型驗證,對find_user()函數(shù)的調(diào)用基本上可以使用它喜歡的任何字段.更簡單的版本顯然看起來像這樣:

/** * We want to allow searching for users by user_id or email only! * @param int $user_id * @param string $email */function find_user($user_id = 0, $email = '') {    $this->db->or_where('user_id', $user_id);    $this->db->or_where('email', $email);    $this->db->get('users');}// No way for me to submit any other fields, they'll just fail when they get to the queryfind_user('Joe', 'Bloggs')); 

我接受其中一些是入門級的,可能還有更多我錯過了(隨意評論更多,我會將它們復(fù)制到回復(fù)中),但希望有足夠的讓人們?nèi)级笮凶詣邮褂谩瘮?shù)組方法’而不考慮手動驗證和文檔等.

來源:https://www.icode9.com/content-1-281151.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
php 遞歸無限分類
isset-PHP手冊
PHP函數(shù)call_user_func和call_user_func_array的使用 | 一聚教程...
javascript 中把一個數(shù)組的內(nèi)容全部賦值給另外一個數(shù)組
MD5數(shù)字簽名算法:生成簽名和驗簽(附代碼)
js取數(shù)組兩個數(shù)組的交集|差集|并集|補集|去重
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服