PHP是開發(fā)界討論最多的編程語言之一。有人將其稱為無效的編程語言,有人將其稱為令人討厭的編程語言,沒有約定或體系結(jié)構(gòu),我同意其中的一些觀點,因為他們有公平的觀點。但是,在這里,我將分享我這些年來用PHP進行編程的經(jīng)驗。其中一些技巧僅在最新的PHP版本中可用,因此它們在舊版本中可能無法使用。

類型提示和返回類型
就數(shù)據(jù)類型而言,PHP并不是一種完美的語言,但是您可以使用類型提示和返回類型來提高代碼質(zhì)量并防止進一步的類型沖突。使用PHP的這些功能的人并不多,并不是所有的PHP程序員都知道這是可能的。
<?php
function greet_user(User $user, int $age): void {
echo "Hello" . $user->first_name . " " . $user->last_name;
echo "\\nYou are " . $age . " years old";
}可以在參數(shù)變量之前使用類型的名稱或類聲明類型提示,并在冒號后的函數(shù)簽名之后聲明返回類型。
在像Laravel這樣的框架中設(shè)計控制器時,可以更高級地使用它:
<?php
class UserController extends Controller
{
// User sign up controller
public function signUp(Request $request): JsonResponse
{
// Validate data
$request->validate([
'plateNumber' => 'required|alpha_num|min:3|max:20|unique:users,plate_number',
'email' => 'required|email|unique:users',
'firstName' => 'required|alpha',
'lastName' => 'required|alpha',
'password' => 'required|min:8',
'phone' => 'required|numeric|unique:users'
]);
// Create user
$new_user = new User;
$new_user->plate_number = trim(strtoupper($request->input('plateNumber')));
$new_user->email = trim($request->input('email'));
$new_user->first_name = trim($request->input('firstName'));
$new_user->last_name = trim($request->input('lastName'));
$new_user->password = Hash::make($request->input('password'));
$new_user->phone = trim($request->input('phone'));
$new_user->save();
return response()->json([
'success' => true,
]);
}
}三元運算符
三元運算符是幾乎70%的程序員都知道并廣泛使用的東西,但是如果您不知道三元運算符是什么,請參見以下示例:
<?php
$age = 17;
if($age >= 18) {
$type = 'adult';
} else {
$type = 'not adult';
}可以使用三元運算符將此代碼簡化為以下代碼:
<?php $age = 17; $type = $age >= 18 ? 'adult' : 'not adult';
如果滿足條件,則不將第二部分分配給該變量。
如果要使用條件的值(如果它被評估為真實值),則還有一種更短的方法。
<?php $url = 'http://example.com/api'; $base_url = $url ? $url : 'http://localhost';
如您所見$url,既用作條件又用作條件為真的結(jié)果。在這種情況下,可以轉(zhuǎn)義左側(cè)操作數(shù):
<?php $url = 'http://example.com/api'; $base_url = $url ?: 'http://localhost';
空合并運算符
就像三元運算符一樣,您可以使用空合并運算符來查看值是否存在,請注意,因為false本身就是值,所以現(xiàn)存值與錯誤值不同。
<?php $base_url = $url ?? 'http://localhost';
現(xiàn)在$base_url等于,http://localhost但是如果我們將其定義$url為false,則$base_url變量將等于false。
<?php $url = false; $base_url = $url ?? 'http://localhost';
使用此運算符,您可以檢查以前是否定義了變量,以及是否未為其分配值:
<?php $base_url = 'http://example.com'; $base_url = $base_url ?? 'http://localhost';
您可以使用空合并分配運算符來縮短此代碼
<?php $base_url = 'http://example.com'; $base_url ??= 'http://localhost';
所有這些nall合并技術(shù)都可以在數(shù)組值上實現(xiàn)。
<?php
$my_array = [
'first_name' => 'Adnan',
'last_name' => 'Babakan'
];
$my_array['first_name'] ??= 'John';
$my_array['age'] ??= 20;上面的數(shù)組將具有first_nameas,Adnan因為它已經(jīng)被定義,但是將定義一個名為的新鍵,age并為其指定編號20,因為它不存在。
飛船運算符
當(dāng)您想知道哪個操作數(shù)更大而不是僅知道一側(cè)是否更大時,太空飛船算符是一個非常有用的運算符。
飛船操作者將返回的一個1,0或-1值時,左邊的操作數(shù)較大時,當(dāng)兩個操作數(shù)是相等的,并且當(dāng)右操作數(shù)分別是較大的。
<?php echo 5 <=> 3; // result: 1 echo -7 <=> -7; // result: 0 echo 9 <=> 15; // result: -1
很簡單,但非常有用。
當(dāng)您意識到太空飛船操作員也可以比較其他事物時,這將變得更加有趣:
<?php // String echo 'c' <=> 'b'; // result: -1 // String case echo 'A' <=> 'a'; // result: 1 // Array echo [5, 6] <=> [2, 7]; // result: 1
箭頭函數(shù)
如果您曾經(jīng)編寫過JavaScript應(yīng)用程序,尤其是使用其最新版本進行編程,則應(yīng)該熟悉箭頭功能。箭頭函數(shù)是一種定義沒有范圍的函數(shù)的較短方法。
<?php
$pi = 3.14;
$sphere_volume = function($r) {
return 4 / 3 * $pi * ($r ** 3);
};
echo $sphere_volume(5);上面的代碼將引發(fā)錯誤,因為$pi未在此特定函數(shù)的范圍內(nèi)定義變量。如果我們想使用它,我們應(yīng)該稍微改變一下我們的功能:
<?php
$pi = 3.14;
$sphere_volume = function($r) use ($pi) {
return 4 / 3 * $pi * ($r ** 3);
};
echo $sphere_volume(5);因此,現(xiàn)在我們的函數(shù)可以使用$pi在全局范圍內(nèi)定義的變量。
但是做這些事情的更短的方法是使用箭頭功能。
<?php $pi = 3.14; $sphere_volume = fn($r) => 4 / 3 * $pi * ($r ** 3); echo $sphere_volume(5);
如您所見,它非常簡單整潔,默認情況下可以訪問全局范圍。
推薦教程:《PHP》
本文名稱:如何編寫不同的PHP?
鏈接地址:http://www.yijiale78.com/article22/cppscc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、軟件開發(fā)、網(wǎng)站改版、品牌網(wǎng)站制作、ChatGPT、虛擬主機
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)