분류 php

PHP에서 void typehint의 값

컨텐츠 정보

  • 조회 334 (작성일 )

본문

void typehint가 PHP 7.1에서 소개되었을 때 그것에 대해 약간의 논쟁이 있었습니다.

어떤 사람들은 아무것도 입력하지 않는 것이 궁금한가요? 나는 그들 중 하나였습니다.

한편 나는 그것에 대한 의견을 바꿨습니다. 이 짧은 글에서 void 라고 생각하는 작은 예를 드리고자 합니다.


https://freek.dev/1481-the-value-of-the-void-typehint-in-php 


로컬 모델 범위에 대한 Laravel 설명서에 제공된 예입니다.


public function scopePopular($query)
{
    return $query->where('votes', '>', 100);
}

그 반환문은 거짓말입니다. 결과로 아무것도 수행되지 않습니다.


$query의 지정된 빌더 인스턴스는 변경 가능합니다. PHP에서 객체는 참조로 전달됩니다.

즉, scopePopular의 $query 객체는 scopePopular를 호출하는 코드와 공유됩니다.

$query는 어디에서 호출하면 scopePopular에 대한 코드를 호출하는 코드로 변경합니다.


내 프로젝트에서 위와 같이 범위를 작성합니다.


public function scopePopular(Builder $query): void
{
   $query->where('votes', '>', 100);
}

나에게 이것은 더 정직합니다. void typehint는 무언가를 반환 할 필요가 없으며 주어진 매개 변수는 변경 가능하다는 것을 나에게 알립니다 (그리고 팀원에게도 희망합니다).