PHP는 개발 세계에서 가장 많이 논의되는 프로그래밍 언어 중 하나입니다. 어떤 사람들은 그것을 비효율적인 프로그래밍 언어라고 부르고, 어떤 사람들은 관습이나 아키텍처가 없는 성가신 프로그래밍 언어라고 부르며, 나는 그 중 일부에 정당한 요점이 있기 때문에 동의합니다. 그러나 여기서는 수년에 걸쳐 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';
조건이 충족되면 두 번째 부분은 변수에 할당되지 않습니다.
조건이 참값으로 평가되면 해당 값을 사용하려는 경우 더 짧은 방법도 있습니다.
<?php $url = 'http://example.com/api'; $base_url = $url ? $url : 'http://localhost';
$url은 보시다시피 조건과 조건이 참인 경우 결과로 모두 사용됩니다. 이 경우 왼쪽 피연산자를 이스케이프할 수 있습니다.
<?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을 부여합니다.
우주선 연산자
우주선 연산자는 한쪽이 더 큰지 여부만 아는 것보다 어떤 피연산자가 더 큰지 알고 싶을 때 유용합니다.
우주선 연산자는 왼쪽 피연산자가 더 큰 경우, 두 피연산자가 같을 경우, 오른쪽 피연산자가 각각 더 큰 경우 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"