PHP 8.2 ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ ๋ถ๊ธฐ์ ์ฒซ ๋ฒ์งธ ์ํ ๋ฆด๋ฆฌ์ค๊ฐ ๋ฐํ๋์์ต๋๋ค. ๋ฐ๋งค๋ 24์ 8.2์ผ๋ก ์์ ๋์ด ์์ต๋๋ค. PHP XNUMX์์ ์ด๋ฏธ ํ ์คํธํ ์ ์๊ฑฐ๋ ๊ตฌํํ ๊ณํ์ธ ์ฃผ์ ํ์ ์ฌํญ:
- ๋ณ๋์ ์ ํ "false" ๋ฐ "null"์ด ์ถ๊ฐ๋์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด ์ค๋ฅ๊ฐ ์๋ ์๋ฃ ํ์๋ฅผ ๋ฐํํ๊ฑฐ๋ ํจ์์์ ๋น ๊ฐ์ ๋ฐํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ ์๋ "false" ๋ฐ "null"์ ๋ค๋ฅธ ์ ํ(์: "string|false")๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํ์ง๋ง ์ด์ ๋ ๋ณ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. function alwaysFalse(): false { return false; }
- ํด๋์ค๋ฅผ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ํ์ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค. ์ด๋ฌํ ํด๋์ค์ ์์ฑ์ ํ ๋ฒ๋ง ์ค์ ํ ์ ์์ผ๋ฉฐ ๊ทธ ํ์๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด์ ์๋ ๊ฐ๋ณ ํด๋์ค ์์ฑ์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ํ์ํ ์ ์์์ง๋ง ์ด์ ๋ชจ๋ ํด๋์ค ์์ฑ์ ๋ํด ์ด ๋ชจ๋๋ฅผ ํ ๋ฒ์ ์ผค ์ ์์ต๋๋ค. ํด๋์ค ์์ค์์ "readonly" ํ๋๊ทธ๋ฅผ ์ง์ ํ๋ฉด ํด๋์ค์ ์์ฑ์ ๋์ ์ผ๋ก ์ถ๊ฐํ๋ ๊ฒ๋ ์ฐจ๋จ๋ฉ๋๋ค. ์ฝ๊ธฐ ์ ์ฉ ํด๋์ค Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* โฆ */); $post->unknown = '์๋ชป๋จ'; // ์ค๋ฅ: ๋์ ์์ฑ์ ๋ง๋ค ์ ์์ต๋๋ค. Post::$unknown
- ํด๋์ค์์ ์์ฑ์ ๋์ ์ผ๋ก ์์ฑํ๋ ๊ธฐ๋ฅ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค(์: ์์ ์์์ "post->unknown"). PHP 9.0์์ ์๋ ํด๋์ค์ ์ ์๋์ง ์์ ์์ฑ์ ์ก์ธ์คํ๋ฉด ์ค๋ฅ(ErrorException)๊ฐ ๋ฐ์ํฉ๋๋ค. ์์ฑ์ ์์ฑํ๊ธฐ ์ํด __get ๋ฐ __set ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ํด๋์ค ๋๋ stdClass์ ๋์ ์์ฑ์ ๋ณ๊ฒฝ๋์ง ์๊ณ ๊ณ์ ์๋ํ๋ฉฐ, ์จ๊ฒจ์ง ์ค๋ฅ๋ก๋ถํฐ ๊ฐ๋ฐ์๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ์กด์ฌํ์ง ์๋ ์์ฑ์ ๋ํ ์์์ ์์ ๋ง ์ค์ง๋ฉ๋๋ค. ์ด์ ์ฝ๋๋ฅผ ๊ณ์ ์๋์ํค๊ธฐ ์ํด "#[AllowDynamicProperties]" ํน์ฑ์ด ์ ์๋์ด ๋์ ์์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ค๋ฅ ๋ฐ์ ์ ์คํ ์ถ์ ์ถ๋ ฅ์์ โโ๋ฏผ๊ฐํ ์ค์ ์ ํํฐ๋งํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ต๋๋ค. ๋ฐ์ํ๋ ์ค๋ฅ์ ๋ํ ์ ๋ณด๊ฐ ๋ฌธ์ ๋ฅผ ์ถ์ ํ๊ณ ๊ฐ๋ฐ์์๊ฒ ์๋ฆฌ๋ ํ์ฌ ์๋น์ค์ ์๋์ผ๋ก ์ ์ก๋๋ ๊ฒฝ์ฐ ํน์ ์ ๋ณด๋ฅผ ์๋ผ๋ด์ผ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์ ์ด๋ฆ, ๋น๋ฐ๋ฒํธ ๋ฐ ํ๊ฒฝ ๋ณ์๋ฅผ ํฌํจํ๋ ์ถ์ ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('์ค๋ฅ'); } test('foo', '๋น๋ฐ๋ฒํธ', 'baz'); Fatal error: Uncaught Exception: Error in test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main}์ด test.php์์ ๋ฐ์ํ์ต๋๋ค. ์จ๋ผ์ธ 8
- "${var}" ๋ฐ ${(var)}" ์์ ์ฌ์ฉํ์ฌ ๋ณ์ ๊ฐ์ ๋ฌธ์์ด๋ก ๋์ฒดํ๋ ๊ธฐ๋ฅ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ "{$var}" ๋ฐ "$var" ๋์ฒด์ ๋ํ ์ง์์ด ์ ์ง๋์์ต๋๋ค. ์: "Hello {$world}"; ํ์ธ "Hello $world"; OK "์๋ ํ์ธ์ ${world}"; ๋ ์ด์ ์ฌ์ฉ๋์ง ์์: ๋ฌธ์์ด์์ ${} ์ฌ์ฉ์ด ๋ ์ด์ ์ฌ์ฉ๋์ง ์์
- "call_user_func($callable)"์ ํตํด ํธ์ถํ ์ ์๋ ๋ถ๋ถ์ ์ผ๋ก ์ง์๋๋ ์ฝ๋ฌ๋ธ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ง๋ง "$callable()": "self::method" "parent::method" "static :: ํ์์ ํธ์ถ์ ์ง์ํ์ง ์์ต๋๋ค. ๋ฐฉ๋ฒ" ["์์ ", "๋ฐฉ๋ฒ"] ["๋ถ๋ชจ", "๋ฐฉ๋ฒ"] ["์ ์ ", "๋ฐฉ๋ฒ"] ["Foo", "Bar::๋ฐฉ๋ฒ"] [์๋ก์ด Foo, "๋ฐ: :๋ฐฉ๋ฒ "]
- ๋ก์ผ์ผ ๋ ๋ฆฝ์ ์ธ ๋์๋ฌธ์ ๋ณํ์ ๊ตฌํํ์ต๋๋ค. strtolower() ๋ฐ strtoupper()์ ๊ฐ์ ํจ์๋ ์ด์ ๋ก์ผ์ผ์ "C"๋ก ์ค์ ํ ๋์ ๊ฐ์ด ํญ์ ASCII ๋ฒ์์ ๋ฌธ์ ๋์๋ฌธ์๋ฅผ ๋ณํํฉ๋๋ค.
์ถ์ฒ : opennet.ru