Ask a question about PHP code specifications

WBOY
Release: 2016-10-11 14:23:38
Original
1122 people have browsed it

First of all, there is a function written like this.

<code>function  exam(){
    //从数据库获取数据。
    $records = $aModel->where(['type' => 1])->get();
    
    if(empty($records))  return false;
    
    $newRecord = $bModel->map();
    foreach($records as $item){
        $newRecord->name = $item->name;
        $newRecord->age = $item->age;
        try{
            $bModel->insert($newRecord);
        }
        catch(\Exception $e){
            \Log::catch($e);
        }
    }
    return true;
}
</code>
Copy after login
Copy after login

Then, this function is called like this.

<code>if(true !== exam()){
    echo "表更新失败";
    return false;
}</code>
Copy after login
Copy after login

Experienced PHPers please take a look, there are a few places that look quite awkward:

  1. In the function exam(), is the position of return appropriate?

  2. If the return type of a function is uncertain, the result will be returned if the execution is completed, and false will be returned if the execution fails. In this case, is it appropriate to judge the result similar to if(false === exam()) when calling.

  3. I feel that executing functions in if judgments will reduce the readability of the code. I wonder if such a problem exists.

Reply content:

First of all, there is a function written like this.

<code>function  exam(){
    //从数据库获取数据。
    $records = $aModel->where(['type' => 1])->get();
    
    if(empty($records))  return false;
    
    $newRecord = $bModel->map();
    foreach($records as $item){
        $newRecord->name = $item->name;
        $newRecord->age = $item->age;
        try{
            $bModel->insert($newRecord);
        }
        catch(\Exception $e){
            \Log::catch($e);
        }
    }
    return true;
}
</code>
Copy after login
Copy after login

Then, this function is called like this.

<code>if(true !== exam()){
    echo "表更新失败";
    return false;
}</code>
Copy after login
Copy after login

Experienced phpers please take a look, there are a few places that look quite awkward:

  1. In the function exam(), is the position of return appropriate?

  2. If the return type in the function is uncertain, the result will be returned if the execution is completed, and false will be returned if the execution fails. In this case, is it appropriate to judge the result similar to if(false === exam()) when calling.

  3. I feel that executing functions in if judgments will reduce the readability of the code. I wonder if such a problem exists.

  1. Why not just return false when an exception is thrown?

  2. If the general return type is bool type, it is not recommended to add a third type. The method you mentioned can be used to judge but it is not recommended

  3. The problem with readability is not because it is in the if, but because there is a problem with your function name. If you want to return a bool type, it is recommended to add an is to express it, such as:

<code class="php">if(false === isExam()){
    echo "表更新失败";
    return false;
}</code>
Copy after login

Recommend a book you can read:
https://book.douban.com/subje...

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template