PHP Type

Hyeseong·2023년 5월 31일
0
post-custom-banner

🎈 복합타입

PHP에서 복합 타입(Composite types)은 여러 개의 단순 타입이나 클래스 타입을 결합하여 새로운 타입을 정의하는 것을 의미합니다. 이는 유니온 타입(Union types)과 교차 타입(Intersection types)으로 구분됩니다.

🎆 교차 타입 (Intersection types):

교차 타입은 특정 값이 여러 개의 클래스 타입 선언을 모두 만족시켜야 하는 타입입니다. 이 교차 타입을 구성하는 개별 타입들은 '&' 기호로 연결됩니다. 따라서, T, U, V라는 타입들로 구성된 교차 타입은 T&U&V로 표현됩니다.

🎇 유니온 타입 (Union types):

유니온 타입은 여러 다른 타입의 값들을 받아들일 수 있는 타입입니다. 유니온 타입을 구성하는 개별 타입들은 '|' 기호로 연결됩니다. 따라서, T, U, V라는 타입들로 구성된 유니온 타입은 T|U|V로 표현됩니다. 만약 타입 중 하나가 교차 타입인 경우, 그것을 DNF(Disjunctive Normal Form, 논리합 정규형)으로 작성하기 위해서는 괄호로 묶어주어야 합니다: T|(X&Y).

🧨 타입 별칭 (Type aliases):

PHP는 두 가지 타입 별칭을 지원합니다: mixed와 iterable입니다.

mixed는 object|resource|array|string|float|int|bool|null 이라는 유니온 타입에 해당합니다. 즉, mixed 타입은 객체, 리소스, 배열, 문자열, 부동 소수점 숫자, 정수, 불린, null 등 여러 가지 다른 타입의 값들을 받아들일 수 있습니다.

iterable은 Traversable|array라는 유니온 타입에 해당합니다. iterable 타입은 순회 가능한 객체나 배열을 받아들일 수 있습니다.

이러한 타입 별칭을 사용하면 코드를 더 명확하게 표현할 수 있으며, 특정 조건을 충족하는 다양한 타입의 값을 처리할 수 있습니다.


결론

PHP 7.3에서는 유니온 타입, 교차 타입, 그리고 mixed 타입 별칭이 공식적으로 지원되지 않습니다. 이러한 타입 기능은 다음 버전에서 소개되었습니다.

유니온 타입과 mixed 타입 별칭: PHP 8.0 버전부터 도입되었습니다.
교차 타입: 2021년 9월까지 PHP는 공식적으로 교차 타입을 지원하지 않았습니다. PHP 8.1에서 도입될 예정이었습니다.
따라서 PHP 7.3에서는 이러한 타입 기능을 사용할 수 없습니다. 그러나 PHP의 타입 시스템은 이후 버전에서 확장되었으며, 이러한 기능은 PHP 개발자들에게 더 강력한 타입 체크와 코드의 가독성 향상을 제공합니다. 이러한 이유로 PHP 최신 버전으로 업그레이드하는 것이 좋습니다.


Null

<?php
$var = NULL;       
?>

이 코드는 $var 변수에 NULL 값을 할당합니다. 이렇게 하면 $var는 값이 없는 상태가 됩니다.

NULL 타입은 PHP의 타입 시스템의 일부로, 특정 변수가 아무런 값도 가지고 있지 않은 상태를 나타내는 데 사용됩니다. NULL 타입의 변수는 is_null() 함수를 사용하여 확인할 수 있습니다.

Converting to boolean

아래 값은 false로 평가 됩니다.

  1. false
  2. 0
  3. 0.0 and -0.0
  4. "", "0"
  5. array with zero elements
  6. PHP의 내장 클래스인 SimpleXML은 빈 XML 요소로부터 생성된 객체를 boolean으로 캐스팅할 때 예외적인 동작을 보이는데, 일반적으로 객체는 true를 반환하지만 SimpleXML 객체는 요소가 실제로 비어 있을 경우 false를 반환합니다.

Code-1

<?php
$x=TRUE;
$y=FALSE;
$z= $y OR $x;
var_dump((bool) $z)
?>

// result
//php main.php
//bool(false)
  • $z= $y OR $x; 이 부분을 $z = ($y OR $x);과 같이 처리 해주거나 혹은 $z = $y || $x;과 같이 연산자를 사용해주면 의도한대로 'true'가 반환된다.

톺아보기-1

XML이란?
XML(Extensible Markup Language)은 데이터를 저장하고 전송하는 데 사용되는 마크업 언어입니다. HTML과 유사한 구조를 가지고 있지만, XML은 데이터를 설명하고 표현하는 데 중점을 두며, 사용자가 태그를 정의하여 고유한 데이터 구조를 만들 수 있습니다.

XML은 다음과 같은 특성을 가집니다:

플랫폼에 독립적: XML은 플랫폼과 프로그래밍 언어에 독립적이므로, 서로 다른 시스템 간에 데이터를 쉽게 교환할 수 있습니다.

자기 설명적: XML 태그는 데이터를 설명하는 역할을 하므로, XML 문서는 자체적으로 데이터 구조를 표현하고 설명합니다.

확장 가능: XML은 사용자가 필요에 따라 새로운 태그를 정의할 수 있으므로, 다양한 요구사항과 상황에 맞게 확장할 수 있습니다.

계층적 구조: XML 데이터는 트리 구조로 표현되므로, 복잡한 데이터 관계를 표현하는 데 적합합니다.

<?php
var_dump((bool) "");        // bool(false)
var_dump((bool) "0");       // bool(false)
var_dump((bool) 1);         // bool(true)
var_dump((bool) -2);        // bool(true)
var_dump((bool) "foo");     // bool(true)
var_dump((bool) 2.3e5);     // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   // bool(false)
var_dump((bool) "false");   // bool(true)
?>
profile
어제보다 오늘 그리고 오늘 보다 내일...
post-custom-banner

0개의 댓글