PHP は、開発の世界で最も議論されているプログラミング言語の 1 つです。これを非効率なプログラミング言語と呼ぶ人もいれば、規約やアーキテクチャのない迷惑なプログラミング言語と呼ぶ人もいますが、私もその意見には正当な点があるので同意します。ただし、ここでは、長年にわたる PHP を使用したプログラミングの経験を共有します。これらのトリックの一部は最新の PHP バージョンでのみ利用できるため、古いバージョンでは機能しない可能性があります。
型ヒントと戻り値の型
PHP はデータ型に関する限り完璧な言語ではありませんが、型ヒントと戻り値の型を使用してコードを改善できます。品質を維持し、さらなる型の競合を防ぎます。 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"; }
型ヒントは、パラメーター変数の前に型の名前またはクラスを使用し、コロンの後の関数シグネチャの後に戻り型を使用して宣言できます。
Laravel などのフレームワークでコントローラーを設計する場合、これをより高度な方法で使用できます。
<?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';
条件が満たされる場合、2 番目の部分は変数に代入されません。
条件が true 値に評価された場合にその値を使用する場合は、より短い方法もあります。
<?php $url = 'http://example.com/api'; $base_url = $url ? $url : 'http://localhost';
ご覧のとおり、$url は条件として、および条件が true の場合の結果として使用されます。この場合、左側のオペランドは次のようにエスケープできます。
<?php $url = 'http://example.com/api'; $base_url = $url ?: 'http://localhost';
Null 合体演算子
三項演算子と同様に、Null 合体演算子を使用して次のことを行うことができます。 false 自体が値であるため、既存の値はエラー値とは異なることに注意してください。
<?php $base_url = $url ?? 'http://localhost';
現在、$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';
null マージ代入を使用して短縮できます。演算子 このコード
<?php $base_url = 'http://example.com'; $base_url ??= 'http://localhost';
これらのすべてのマージ手法はすべて、配列値に実装できます。
<?php $my_array = [ 'first_name' => 'Adnan', 'last_name' => 'Babakan' ]; $my_array['first_name'] ??= 'John'; $my_array['age'] ??= 20;
上記の配列には、すでに定義されているため、first_nameas、Adnan が含まれますが、age という名前の新しいキーが定義され、存在しないため、それに番号 20 が与えられます。
Spaceship Operator
Spaceship Operator は、一方の演算子が大きいかどうかだけを知るのではなく、どちらのオペランドが大きいかを知りたい場合に便利です。
spaceship 演算子は、左側のオペランドが大きい場合、2 つのオペランドが等しい場合、および右側のオペランドが大きい場合、それぞれ 1、0、または -1 の値を返します。
<?php echo 5 <=> 3; // result: 1 echo -7 <=> -7; // result: 0 echo 9 <=> 15; // result: -1
シンプルですがとても便利です。
宇宙船のオペレーターが他のものを比較できることを理解すると、これはさらに興味深いものになります:
<?php // String echo 'c' <=> 'b'; // result: -1 // String case echo 'A' <=> 'a'; // result: 1 // Array echo [5, 6] <=> [2, 7]; // result: 1
アロー関数
JavaScript アプリケーションを作成する場合、特に最新バージョンを使用する場合は、アロー関数についてよく知っている必要があります。アロー関数は、スコープなしで関数を定義する短い方法です。
<?php $pi = 3.14; $sphere_volume = function($r) { return 4 / 3 * $pi * ($r ** 3); }; echo $sphere_volume(5);
$pi はこの特定の関数のスコープ内で定義された変数ではないため、上記のコードはエラーをスローします。これを使用したい場合は、関数を少し変更する必要があります:
<?php $pi = 3.14; $sphere_volume = function($r) use ($pi) { return 4 / 3 * $pi * ($r ** 3); }; echo $sphere_volume(5);
これで、関数はグローバル スコープで定義された $pi 変数を使用できるようになります。
しかし、これらのことを行うより簡単な方法は、アロー関数を使用することです。
<?php $pi = 3.14; $sphere_volume = fn($r) => 4 / 3 * $pi * ($r ** 3); echo $sphere_volume(5);
ご覧のとおり、これは非常にシンプルできちんとしていて、デフォルトでグローバル スコープにアクセスできます。
推奨チュートリアル: 「PHP」