PHP에서 복합 타입(Composite types)은 여러 개의 단순 타입이나 클래스 타입을 결합하여 새로운 타입을 정의하는 것을 의미합니다. 이는 유니온 타입(Union types)과 교차 타입(Intersection types)으로 구분됩니다.
교차 타입은 특정 값이 여러 개의 클래스 타입 선언을 모두 만족시켜야 하는 타입입니다. 이 교차 타입을 구성하는 개별 타입들은 '&'
기호로 연결됩니다. 따라서, T, U, V라는 타입들로 구성된 교차 타입은 T&U&V
로 표현됩니다.
유니온 타입은 여러 다른 타입의 값들을 받아들일 수 있는 타입입니다. 유니온 타입을 구성하는 개별 타입들은 '|' 기호로 연결됩니다. 따라서, T, U, V라는 타입들로 구성된 유니온 타입은 T|U|V로 표현됩니다. 만약 타입 중 하나가 교차 타입인 경우, 그것을 DNF(Disjunctive Normal Form, 논리합 정규형)으로 작성하기 위해서는 괄호로 묶어주어야 합니다: T|(X&Y)
.
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 최신 버전으로 업그레이드하는 것이 좋습니다.
<?php
$var = NULL;
?>
이 코드는 $var 변수에 NULL 값을 할당합니다. 이렇게 하면 $var는 값이 없는 상태가 됩니다.
NULL 타입은 PHP의 타입 시스템의 일부로, 특정 변수가 아무런 값도 가지고 있지 않은 상태를 나타내는 데 사용됩니다. NULL 타입의 변수는 is_null() 함수를 사용하여 확인할 수 있습니다.
아래 값은 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'가 반환된다.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)
?>