>  기사  >  다른 PHP를 작성하는 방법은 무엇입니까?

다른 PHP를 작성하는 방법은 무엇입니까?

Guanhui
Guanhui앞으로
2020-07-23 13:05:313253검색

다른 PHP를 작성하는 방법은 무엇입니까?

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([
            &#39;plateNumber&#39; => &#39;required|alpha_num|min:3|max:20|unique:users,plate_number&#39;,
            &#39;email&#39; => &#39;required|email|unique:users&#39;,
            &#39;firstName&#39; => &#39;required|alpha&#39;,
            &#39;lastName&#39; => &#39;required|alpha&#39;,
            &#39;password&#39; => &#39;required|min:8&#39;,
            &#39;phone&#39; => &#39;required|numeric|unique:users&#39;
        ]);
        // Create user
        $new_user = new User;
        $new_user->plate_number = trim(strtoupper($request->input(&#39;plateNumber&#39;)));
        $new_user->email = trim($request->input(&#39;email&#39;));
        $new_user->first_name = trim($request->input(&#39;firstName&#39;));
        $new_user->last_name = trim($request->input(&#39;lastName&#39;));
        $new_user->password = Hash::make($request->input(&#39;password&#39;));
        $new_user->phone = trim($request->input(&#39;phone&#39;));
        $new_user->save();
        return response()->json([
            &#39;success&#39; => true,
        ]);
    }
}

삼항 연산자

삼항 연산자 거의 70%의 프로그래머가 알고 광범위하게 사용하는 것이지만 삼항 연산자가 무엇인지 모르는 경우 다음 예를 참조하세요.

<?php
$age = 17;
if($age >= 18) {
    $type = &#39;adult&#39;;
} else {
    $type = &#39;not adult&#39;;
}

삼항 연산자를 사용할 수 있습니다. 표기법을 사용하면 이를 단순화할 수 있습니다.

<?php
$age = 17;
$type = $age >= 18 ? &#39;adult&#39; : &#39;not adult&#39;;

조건이 충족되면 두 번째 부분은 변수에 할당되지 않습니다.

조건이 참값으로 평가되면 해당 값을 사용하려는 경우 더 짧은 방법도 있습니다.

<?php
$url = &#39;http://example.com/api&#39;;
$base_url = $url ? $url : &#39;http://localhost&#39;;

$url은 보시다시피 조건과 조건이 참인 경우 결과로 모두 사용됩니다. 이 경우 왼쪽 피연산자를 이스케이프할 수 있습니다.

<?php
$url = &#39;http://example.com/api&#39;;
$base_url = $url ?: &#39;http://localhost&#39;;

Null 병합 연산자

삼항 연산자와 마찬가지로 Null 병합 연산자를 사용하여 다음을 수행할 수 있습니다. 값이 존재하는지 확인하세요. false 자체가 값이므로 기존 값은 오류 값과 다릅니다.

<?php
$base_url = $url ?? &#39;http://localhost&#39;;

이제 $base_url은 http://localhost와 동일하지만 $url을 false로 정의하면 $base_url 변수는 false와 같습니다.

<?php
$url = false;
$base_url = $url ?? &#39;http://localhost&#39;;

이 연산자를 사용하면 변수가 이전에 정의되었는지, 값이 할당되지 않았는지 확인할 수 있습니다.

<?php
$base_url = &#39;http://example.com&#39;;
$base_url = $base_url ?? &#39;http://localhost&#39;;

Null 병합 할당을 사용하여 변수를 단축할 수 있습니다. 연산자 이 코드

<?php
$base_url = &#39;http://example.com&#39;;
$base_url ??= &#39;http://localhost&#39;;

이 모든 기본 병합 기술은 배열 값에 구현될 수 있습니다.

<?php
$my_array = [
    &#39;first_name&#39; => &#39;Adnan&#39;,
    &#39;last_name&#39; => &#39;Babakan&#39;
];
$my_array[&#39;first_name&#39;] ??= &#39;John&#39;;
$my_array[&#39;age&#39;] ??= 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 &#39;c&#39; <=> &#39;b&#39;; // result: -1
// String case
echo &#39;A&#39; <=> &#39;a&#39;; // 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"

성명:
이 기사는 dev.to에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제