你只是想返回一個結(jié)果,但使用 throw 一般是拋出異常。
很多時候返回 status 為0,其實并不是異常。
我覺得這些時候使用 throw 是不合適的。
所謂的異常,應(yīng)該是“它本來應(yīng)該是這樣的,但結(jié)果卻不是”,才需要拋出異常。
比如你要處理一張圖片,傳的參數(shù)指向的文件存在,文件后綴也存在,但讀取數(shù)據(jù)后卻不能正確處理,這時拋個異常是可以理解的,但我個人覺得這還不夠好。
因為我就遇到過,使用 thinkPHP 3.2 的圖片處理類,遇到不能處理的圖片,直接拋出了異常,但其實對我來說,如果處理圖片有問題 ,是可以直接跳過去的。
也就是說:只有“這一步如果出錯,后面的代碼執(zhí)行就完全沒有意義或者完全不能執(zhí)行”的時候才去拋出異常,否則只需要返回結(jié)果,給使用者(可能是控制器)去處理就好了。
對于樓主的需求,ThinkPHP 是有內(nèi)置的方法的,比如控制器中有 success() 和 error() 兩種方法來滿足樓主的需要,當然,我個人比較喜歡 ThinkPHP 3.2的處理方式,比如簡潔,ThinkPHP 5中的這兩個方法添加了不必要的參數(shù),寫起來倒挺麻煩的。
但這兩個方法只在控制器中有,模型中默認是沒有的,當然,如果你喜歡的話,也可以加到模型中去。
但我個人同樣不太推薦。處理返回結(jié)果或頁面跳轉(zhuǎn)的任務(wù)還是交給控制器會比較好。
模型中,其實可以自己定義個類似的方法,比如:
function succ($data="",$status=1){
return array(
'status'=>$status,
'info'=>$data,
);
}
function error($msg=""){
return succ($msg,0);
}
你在模型中直接 return succ($data);或 return error($msg);即可。
控制器中根據(jù)返回的數(shù)組,再使用$this->success()或$this->error();當然,如果你在使用ThinkPHP 5,也像我一樣比較喜歡 ThinkPHP 3.2 的風格,這兩個方法你是可以改成3.2的風格的。
說回樓主和你看到的大神的代碼,基本思想都差不多,只不過你直接返回一個數(shù)組,而“大神”卻直接拋出異常,我不喜歡這位大神的風格。
但你和“大神”都喜歡寫重復(fù)的 "status'=>1,"msg"=>......,我則比較喜歡把它裝進函數(shù)或方法中,畢竟這兩個操作是使用非常頻繁的。
關(guān)于代碼中較多 if/else 的情況,我一般使用兩種方法解決:
但如果把樓主看到的“大神”的代碼從模型中移到控制器的話,應(yīng)該是合理的(除了重復(fù)的代碼有點多外)。
我個人是不太喜歡使用 throw,但我查看了一下 ThinkPHP 5 和 ThinkPHP 3.2 的源碼,其中的 success和 error 方法除了使用參數(shù)復(fù)雜性不同外,還有一點區(qū)別就是 3.2直接使用 exit()結(jié)束程序,而 5.0 版本中使用的是 throw 一個異常類。
應(yīng)該有理由相信,使用 throw 可能會比如說 exit 更好。
于是,我找到一種說法:
PHP調(diào)用exit退出腳本執(zhí)行不會導致PHP服務(wù)退出。
https://segmentfault.com/q/10...
我不了解底層的機制,但我覺得這種說法是比較可信的。
是不是取消關(guān)注過啊
你已經(jīng)在 app.js
里示例化過 Vue 了,為什么還要在 balde 模板里再次進行示例化呢?
直接在 blade 模板中引入編譯后的 app.js
,就可以使用 Vux
提供的組件了
PS: Vue 是個好框架 :)
return 0;
改為
return -1;
Vue基于Object.defineProperty()實現(xiàn)的雙向綁定,只能在IE8以上跑
啟用CURLOPT_FOLLOWLOCATION
的選項需要設(shè)置PHP.ini中的open_basedir
選項,主要是安全問題。
這樣的 json 結(jié)果,需要你用 Python 的數(shù)據(jù)庫類里設(shè)置好相應(yīng)的輸出 json 函數(shù)。
不敢再發(fā)我的項目鏈接,老是被那些不認真,不仔細,或者說一知半解的人舉報。
如果你想學習 sql to sqlalchemy,你可以查看我的資料,然后找到相關(guān) github 項目的鏈接。
謝邀!
<?php
$sum = 10000;
$diff = 100;
$count = 5;
$return = array();
$min = 0;
$i = 1;
while($i < $count) {
// 隨機數(shù)不符合要求時的結(jié)果初始化
if(isset($return[$i]) || isset($return[$i+1])) {
unset($return[$i]);
unset($return[$i+1]);
}
// 剩余數(shù)
$remain_sum = $sum - array_sum($return);
// 剩余需要隨機的個數(shù)
$remain_count = intval($count - count($return));
// 高斯求最小差值和,分兩部分:S = n(n+1)(2n+4)/12 + $diff * ((n-1)(n-2)/2)
$min_diff = $remain_count * ($remain_count - 1) * (2 * ($remain_count - 1) + 4) / 12 + ($remain_count * ($remain_count - 1) / 2) * $diff;
// 隨機范圍的最小值
$min = $i == 1 ? 1 : $return[$i-1] + $diff + 1;
// 在范圍內(nèi)獲取隨機數(shù)
mt_srand((double)microtime() * 1000000);
// 隨機范圍的最大值
$rand_max = intval(($remain_sum - $min_diff) / $remain_count);
// 產(chǎn)生隨機數(shù)
$min = mt_rand($min, $rand_max);
// 放入返回的數(shù)組
$return[$i] = $min;
if($i == $count - 1) {
// 最后一個隨機數(shù)直接取總數(shù)減去前面的隨機數(shù)
$return[$i+1] = $remain_sum - $min;
}
if(check_diff($return) === false) {
$i--;
continue;
}
$i++;
}
var_dump($return);die;
// 判斷數(shù)組內(nèi)是否有差值相等
function check_diff($arr) {
if(empty($arr)) {
return false;
}
$arr = array_map('intval', $arr);
sort($arr);
$count = count($arr);
$diff_arr = array();
for($i = $count - 1; $i >= 0; $i --) {
for ($j = 0; $j < $count; $j ++) {
if($arr[$i] <= $arr[$j]) {
continue 2;
}
$diff_arr[] = $arr[$i] - $arr[$j];
}
}
if(count($diff_arr) === count(array_unique($diff_arr))) {
return true;
}
return false;
}
php獲取不到,這個是錨點,只有js可以拿到
原有數(shù)據(jù)表是否需要保留?
如果不需要,按照樓上的答案,通過手機號查找userid,更新對應(yīng)的openid即可;
如果需要,通過手機號查找數(shù)據(jù),復(fù)制該條到新表中,使用全新的openid也可以。
就是做一個判斷,是否已經(jīng)卸載啦
因為php自身的局限性,所用協(xié)程下載并沒有什么意義,因為你即使開多個協(xié)程也只是在同一個進程(線程)內(nèi)執(zhí)行,cpu時間片還是一樣的量,并沒有質(zhì)的變化,如果非得使用php,你可以考慮多進程,這樣起碼可以使用多cpu,比如把一個下載文件,分段下載,最后再拼接到一起。
$appends 刪除后不能在讀取到username屬性,刪除后可以清理下緩存:php artisan cache:clear(執(zhí)行命令清除緩存)
js可能如下處理:
const array = [1, 2, 4, 5, 6, 7, 8, 9, 3, 10];
const arrayMoveTo = (arr, start, end) => {
if(start > arr.length || end > arr.length || start < 1 || end < 1) {
throw new Error('');
}
const temp = arr.splice(start - 1, 1)[0];
arr.splice(end - 1, 0, temp);
return arr;
};
console.log(arrayMoveTo(array, 9, 3));
//[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
ios的虛擬支付被官方禁用了,電商和游戲不受影響
imagecopyresized
React
里面除了原生 HTML 元素之外,你自己的組件是不會自動觸發(fā)什么 onClick
之類的事件的,需要你自己手動調(diào)用父組件通過 props
傳入的方法。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務(wù)外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務(wù)負責iOS教學及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。