在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/ PHP問(wèn)答
旖襯 回答

你只是想返回一個(gè)結(jié)果,但使用 throw 一般是拋出異常。
很多時(shí)候返回 status 為0,其實(shí)并不是異常。
我覺(jué)得這些時(shí)候使用 throw 是不合適的。
所謂的異常,應(yīng)該是“它本來(lái)應(yīng)該是這樣的,但結(jié)果卻不是”,才需要拋出異常。
比如你要處理一張圖片,傳的參數(shù)指向的文件存在,文件后綴也存在,但讀取數(shù)據(jù)后卻不能正確處理,這時(shí)拋個(gè)異常是可以理解的,但我個(gè)人覺(jué)得這還不夠好。

因?yàn)槲揖陀龅竭^(guò),使用 thinkPHP 3.2 的圖片處理類,遇到不能處理的圖片,直接拋出了異常,但其實(shí)對(duì)我來(lái)說(shuō),如果處理圖片有問(wèn)題 ,是可以直接跳過(guò)去的。

也就是說(shuō):只有“這一步如果出錯(cuò),后面的代碼執(zhí)行就完全沒(méi)有意義或者完全不能執(zhí)行”的時(shí)候才去拋出異常,否則只需要返回結(jié)果,給使用者(可能是控制器)去處理就好了。

對(duì)于樓主的需求,ThinkPHP 是有內(nèi)置的方法的,比如控制器中有 success() 和 error() 兩種方法來(lái)滿足樓主的需要,當(dāng)然,我個(gè)人比較喜歡 ThinkPHP 3.2的處理方式,比如簡(jiǎn)潔,ThinkPHP 5中的這兩個(gè)方法添加了不必要的參數(shù),寫起來(lái)倒挺麻煩的。
但這兩個(gè)方法只在控制器中有,模型中默認(rèn)是沒(méi)有的,當(dāng)然,如果你喜歡的話,也可以加到模型中去。
但我個(gè)人同樣不太推薦。處理返回結(jié)果或頁(yè)面跳轉(zhuǎn)的任務(wù)還是交給控制器會(huì)比較好。

模型中,其實(shí)可以自己定義個(gè)類似的方法,比如:

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();當(dāng)然,如果你在使用ThinkPHP 5,也像我一樣比較喜歡 ThinkPHP 3.2 的風(fēng)格,這兩個(gè)方法你是可以改成3.2的風(fēng)格的。

說(shuō)回樓主和你看到的大神的代碼,基本思想都差不多,只不過(guò)你直接返回一個(gè)數(shù)組,而“大神”卻直接拋出異常,我不喜歡這位大神的風(fēng)格。
但你和“大神”都喜歡寫重復(fù)的 "status'=>1,"msg"=>......,我則比較喜歡把它裝進(jìn)函數(shù)或方法中,畢竟這兩個(gè)操作是使用非常頻繁的。

關(guān)于代碼中較多 if/else 的情況,我一般使用兩種方法解決:

  1. 短的判斷可以用三目運(yùn)算符代替;
  2. 很多時(shí)候 if 時(shí)使用了return ,后面就可以不寫 else 了 。

補(bǔ)充:

概括一下:

  1. 模型中建議使用 return ,而不是拋出異常,return 的數(shù)據(jù)可以自己封裝個(gè)函數(shù)或方法;(當(dāng)然,要結(jié)合業(yè)務(wù)的具體需求!)
  2. 拋出異常意味著程序的終止,在非必須的情況下不要這樣做;
  3. 控制器中直接使用 success 和 error 或 ajaxReturn 方法即可。

但如果把樓主看到的“大神”的代碼從模型中移到控制器的話,應(yīng)該是合理的(除了重復(fù)的代碼有點(diǎn)多外)。
我個(gè)人是不太喜歡使用 throw,但我查看了一下 ThinkPHP 5 和 ThinkPHP 3.2 的源碼,其中的 success和 error 方法除了使用參數(shù)復(fù)雜性不同外,還有一點(diǎn)區(qū)別就是 3.2直接使用 exit()結(jié)束程序,而 5.0 版本中使用的是 throw 一個(gè)異常類。

應(yīng)該有理由相信,使用 throw 可能會(huì)比如說(shuō) exit 更好。
于是,我找到一種說(shuō)法:

PHP調(diào)用exit退出腳本執(zhí)行不會(huì)導(dǎo)致PHP服務(wù)退出。
https://segmentfault.com/q/10...

我不了解底層的機(jī)制,但我覺(jué)得這種說(shuō)法是比較可信的。

問(wèn)題已經(jīng)解決,寫出答案方便后來(lái)的新手查看。
1.dd打印出來(lái)的代碼,仔細(xì)查看是可以看到有數(shù)據(jù)傳過(guò)來(lái)的。在控制器里echo可以直接顯示出來(lái)數(shù)據(jù)。
2.拿到數(shù)據(jù)后,直接使用構(gòu)造查詢器update更新,$res = DB:table('xxx')->where('id',$id)->update(['oid'=>$oid]);

六扇門 回答

找到問(wèn)題了 在 location ~ .php$ {下的root也要改成/usr/local/nginx/html/ci/

安于心 回答

你的一維數(shù)組是否已經(jīng)排好序?
如果已經(jīng)排好,處理比較簡(jiǎn)單,否則會(huì)比較麻煩。

改成這樣試試:

<a download="getUavManagerLink.exe" href="/File/getUavManagerLink" target="_blank">軟件下載</a>

參考html5的dwanload屬性:http://www.w3school.com.cn/ta...

冷溫柔 回答

代碼架構(gòu)與設(shè)計(jì)上的優(yōu)雅。類似于JAVA的SPRING MVC??梢宰屇愫茌p松的實(shí)現(xiàn)面向?qū)ο笏枷氲目蓴U(kuò)展性,模塊化,分層。你用其他輕量級(jí)框架去實(shí)踐這些設(shè)計(jì)思想就需要自己造很多輪子了。

空痕 回答

Vue基于Object.defineProperty()實(shí)現(xiàn)的雙向綁定,只能在IE8以上跑

乞許 回答

http://www.wangeditor.com/m/
這款是為手機(jī)開(kāi)發(fā)的富文本
https://ckeditor.com/ckeditor-5/
這個(gè)可以用于手機(jī)
話說(shuō),你這是哪里的考試題?

溫衫 回答

就是類似于sf這種投票、反對(duì)的功能吧?如果是我來(lái)做的話,我會(huì)這樣搞:

id     article_id user_id   is_like
自增ID   文章ID     用戶ID    是否喜歡(1喜歡0不喜歡)

如上是表的數(shù)據(jù)結(jié)構(gòu),應(yīng)該符合你的功能需求;
而且取值、查詢也方便;

laravel中如何操作不清楚,但是如果你的欄位非要存1,2,3,4,5這種數(shù)據(jù)結(jié)構(gòu)的話,那么原生的mysql可以采用find_in_set函數(shù)來(lái)操作;

做不到 回答

lnmp 環(huán)境的nginx 默認(rèn)開(kāi)啟了30天的緩存,你把nginx虛擬主機(jī)配置發(fā)出來(lái)(/usr/local/nginx/conf/vhosts/目錄下)

款爺 回答

React 里面除了原生 HTML 元素之外,你自己的組件是不會(huì)自動(dòng)觸發(fā)什么 onClick 之類的事件的,需要你自己手動(dòng)調(diào)用父組件通過(guò) props 傳入的方法。

過(guò)客 回答

ConvertEmptyStringsToNull 中間件是 Laravel 5.4 才開(kāi)始加入的。

By default, Laravel includes the TrimStrings and ConvertEmptyStringsToNull middleware in your application's global middleware stack. These middleware are listed in the stack by the AppHttpKernel class. These middleware will automatically trim all incoming string fields on the request, as well as convert any empty string fields to null. This allows you to not have to worry about these normalization concerns in your routes and controllers.
If you would like to disable this behavior, you may remove the two middleware from your application's middleware stack by removing them from the $middleware property of your AppHttpKernel class.

看官方描述的意思就是為了規(guī)范化數(shù)據(jù)。

如果你確實(shí)不想這樣處理,可以在 app/Http/Kernel.php 文件中注釋掉此 middleware

    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, //注釋掉此行
    ];

或者:

從數(shù)據(jù)庫(kù)層面,把 remark 字段的默認(rèn)值設(shè)置為 空字符串

擱淺 回答

語(yǔ)法錯(cuò)了啊。。。。比較多了或者少了一個(gè);都會(huì)報(bào)這個(gè)

殘淚 回答

你最好問(wèn)下產(chǎn)品。
如果沒(méi)產(chǎn)品或產(chǎn)品比較正常,清空就可以了。
另:類似業(yè)務(wù)模型已經(jīng)很成熟了。 原則上沒(méi)什么爭(zhēng)議了。

雨萌萌 回答

$sql = "INSERT INTO table_student VALUES($stuId,$stuName,'$stuChinese','$stuMath','$stuEnglish')"; 中的$stuId,$stuName都是加上單引號(hào)試一試

苦妄 回答

因?yàn)槟惬@取數(shù)據(jù)是用的是getAll(),獲取了多條數(shù)據(jù),所以obj是個(gè)2維數(shù)組,所以要用循環(huán)

obj = JSON.parse(str);
for(var o in obj)
{
    console.log(obj[o].id);
}

如果你只想要第一條數(shù)據(jù):
方法1:
不要使用getAll()方法
方法2:

echo encode($res[0]);

方法3:

obj = JSON.parse(str);
obj = obj[0];
console.log(obj.id);

方法1最好

菊外人 回答

i18n, 看你使用什么框架或者類庫(kù), 基本都有現(xiàn)成的i18n方案, 如:jQuery.i18n.properties, vue-i18n ===

擱淺 回答

原因:浮點(diǎn)數(shù)的精度問(wèn)題。

轉(zhuǎn)為整型

clipboard.png

注意:

  1. 向下取整,即:12910.9 會(huì)被轉(zhuǎn)換為 12910

    <?php
    var_dump(intval(12910.9));
    
    // 輸出
    // int(12910)
  2. 浮點(diǎn)數(shù)精度
    clipboard.png

    看如下執(zhí)行結(jié)果:
    clipboard.png
    我們知道:$receive_money 值小于 12911

總結(jié):所以,最后 $receive_money 轉(zhuǎn)換為整型時(shí),向下取整,結(jié)果為:12910

參考:


問(wèn)題補(bǔ)充:

為什么 float(12911) 沒(méi)有顯示成 12910.9999... 呢?

這是由于浮點(diǎn)數(shù)的二進(jìn)制表示形式?jīng)Q定的。
看如下示例:

clipboard.png

我們看到第 9 行代碼 float(12911) 擴(kuò)展整數(shù)位之后,轉(zhuǎn)換成整型表示:int(129109999)
然后,我們對(duì)比了 float(12911)int(12911) 在二進(jìn)制上的差別。
是不是發(fā)現(xiàn)了什么?(二進(jìn)制的最后一位)這是 PHP-bug 么?當(dāng)然不是。
而且我們同樣也注意到了第 8 行代碼輸出結(jié)果為:float(129110000),這又是為什么呢?
為什么不是 float(129109999)呢?

我們看一下 PHP 源碼中浮點(diǎn)數(shù)是什么:
clipboard.png
如圖:php-float 等于 c-double
我想如下幾個(gè)問(wèn)題可以解決上述的疑問(wèn):
雙精度浮點(diǎn)數(shù) 的二進(jìn)制形式是如何表示的呢? 請(qǐng)參考:wikipedia-雙精度浮點(diǎn)數(shù)
浮點(diǎn)數(shù)是如何處理乘法運(yùn)算的呢? 請(qǐng)參考:wikipedia-浮點(diǎn)數(shù)的乘法和除法

如果上邊兩個(gè)問(wèn)題不愿深究,可以直接參考鳥(niǎo)哥的一篇博客:PHP浮點(diǎn)數(shù)的一個(gè)常見(jiàn)問(wèn)題的解答

以上為個(gè)人理解,如果錯(cuò)誤之處,請(qǐng)指出。