In diesem Artikel erfahren Sie, wie Sie fehlerhaften Code im PHP-Beispielcode finden und wie Sie das Problem beheben können.
Ich beschäftige mich seit fast einem Jahr mit der PHP-Entwicklung und habe in dieser Zeit viele Techniken in der Produktionsumgebung gelernt Informationen zum Codebuch, ich habe einige Gedanken zum Schreiben von Code, und ich habe viele gute und schlechte Codes gesehen, die von anderen geschrieben wurden. Lassen Sie mich hier über meine eigenen Erkenntnisse und Verbesserungen sprechen.
Dieser Blog drückt meine eigenen Gefühle aus. Beim Schreiben von Code lege ich Regeln fest, die den Code klar und lesbar machen und Fallstricke vermeiden können. Obwohl diese einfachen Regeln möglicherweise nicht so aufregend aussehen wie Entwurfsmuster, können sie bei regelmäßiger Beachtung dazu führen, dass Ihr Code sauberer aussieht.
1. Verwenden Sie keine nicht deklarierten Variablen außerhalb des Objekts
Dieses Problem ist möglicherweise nicht leicht zu verstehen, wenn es ausgedrückt wird. Dieses Problem wird durch die Eigenschaften der PHP-Sprache selbst bestimmt. Da PHP eine schwach typisierte dynamische Skriptsprache ist, werden dieser Sprache in vielen Fällen sehr lockere Bedingungen für Entwickler zum Schreiben von Code gegeben. Doch oft können diese Annehmlichkeiten auch zu Fallstricken werden, daher sollten Sie bei der Verwendung einiger praktischer Schreibmethoden in dynamischen Sprachen besondere Aufmerksamkeit auf sich ziehen.
Lassen Sie uns zunächst eine Klasse deklarieren. Der Hintergrund dieser Benutzerklasse ist so festgelegt, dass sie mit dem Framework geliefert wird und nicht geändert werden darf nicht leicht zu finden. Tatsächlich kann sich der Fall auf die Request-Klasse des Laravel-Frameworks beziehen ganz zufriedenstellend sein, aber als nächstes müssen wir diese Klasse betreiben:
class User { public $username; public $password; public $otherInfo = []; public function readUserInfo() { return [ 'username' => $this->username, 'password' => $this->password, ]; } public function addAtri($info) { array_push($this->otherInfo, $info); } }
Solcher Code kann vollständig in PHP ausgeführt werden und meldet keinen Fehler, sondern einen solchen Code wird einige nachfolgende Dinge beeinträchtigen. Wir gehen nun davon aus, dass der obige Code ein Interceptor im PHP-Webprojekt ist oder als Middleware bezeichnet werden kann. Dann verwenden wir die Instanz dieser Klasse im Controller und verwenden die in der Middleware hinzugefügte Variable wie folgt: >
$user = new User(); $user->userRealName = "hello world";
class WebOperate { public function doOprate(User $user) { $user->userRealName = "hello world"; next($user); } }
class IndexController { public function index(User $user) { return $user->userRealName; } }
class Teacher extends User { public function sayHello() { return "hello world"; } }
class IndexController { public function index(Teacher $user) { return $user->userRealName; } }
class WebOperate { public function doOprate(User $user) { $user->addAtri([ 'userRealName' => 'hello world', ]); next($user); } }
public function addNewUser() { $res = $this->addData(); if ($res) { return true; } else { return [ 'error' => 1, 'errormsg' => "没有添加成功" ]; } }
public function index() { $res = $this->addNewUser(); if (is_array($res) && isset($res['error'])) { return isset($res['errormsg']) ? $res['errormsg'] : "未知错误"; } return "成功"; }
但是,显然,很多时候,我们要的不是简单的真价值,所以,我们会选择返回更多信息,这个时候,我们可以有三种处理方式。
1)返回int类型的数,然后通过这个int类型的数去判断处理结果,我们可以添加上映射关系:
class Operate{ public $operateRes = [ 0 => '成功', 1 => '添加失败', 2 => '未知错误', ]; public function addNewUser() { $res = $this->addData(); if ($res) { return 0; } else if ($res > 1) { return 1; } return 2; } }
这样方法的调用者就可以很简单的使用方法并给出提示了:
$opera = new Operate(); $res = $opera->addNewUser(); return $opera->operateRes[$res];
给出统一的返回值类型的时候就完全不需要判断返回值类型而且可以设置一个规范返回提示。
2)我们也可以使用数组
3)数组给人不缺定性,因为很多时候,数组里可以认为的少写一些元素,如果少写了,程序直接报错,很不好。
所以第三种方式就是建议将固定格式的返回,写成一个类,做返回的时候,使用这个类:
class Operate{ public function addNewUser() { $res = $this->addData(); $result = new Result(); if ($res) { $result->errno = 0; $result->errmsg = "成功"; } else if ($res > 1) { $result->errno = 1; $result->errmsg = "失败"; } $result->errno = 2; $result->errmsg = "未知错误"; return $result; } } class Result { public $errno; public $errmsg; }
这样的返回,保证了所有变量的存在,同样可以减少一次判断。
所以,综合以上,在我们返回结果的时候,尽量使用同种类型的变量,尽量减少使用数组返回。
Das obige ist der detaillierte Inhalt vonPHP-Kenntnisse: So vermeiden Sie geschickt einige fehlerhafte Codes in PHP-Programmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!