PHP 8.1: The End

PHP8.1κ³Ό ν•¨κ»˜ μ œκ³΅λ˜λŠ” λͺ‡ 가지 μž‘μ€ κΈ°λŠ₯κ³Ό λ³€κ²½ 사항을 νŠΉλ³„ν•œ μˆœμ„œμ—†μ΄ μ–ΈκΈ‰ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 배열에 μˆœμ„œκ°€ μ§€μ •λœ 숫자 ν‚€λ§Œ ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” μƒˆλ‘œμš΄ array_is_list ν•¨μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. 클래슀 μƒμˆ˜ final둜 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 파일 λ³€κ²½ 사항을 λ””μŠ€ν¬μ— κ°•μ œλ‘œ λ™κΈ°ν™”ν•˜λŠ” μƒˆλ‘œμš΄ fsyncκΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€. μƒˆλ‘œμš΄ λͺ…μ‹œμ  8μ§„μˆ˜ ν‘œκΈ°λ²•μ΄ μžˆμŠ΅λ‹ˆλ‹€. 0o및 0Oλ₯Ό μ‚¬μš©ν•˜μ—¬ 8μ§„μˆ˜λ₯Ό μ ‘λ‘μ‚¬λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‚΄λΆ€ ν•¨μˆ˜μ—μ„œ … Continued

PHP 8.1: The Never Type

ν•¨μˆ˜κ°€ μ ˆλŒ€ λ°˜ν™˜ λ˜μ§€ μ•Šμ„ κ²ƒμž„μ„ λ‚˜νƒ€λ‚΄λŠ” λ°©λ²•μž…λ‹ˆλ‹€. Never Type은 μ˜ˆμ™Έλ₯Ό λ˜μ§€κ±°λ‚˜ 슀크립트λ₯Ό μ’…λ£Œν•œλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€. void와 차이점은 μ „ν˜€ λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” 것과 λΉ„κ΅ν•˜μ—¬ ν•¨μˆ˜κ°€ 아무 것도 λ°˜ν™˜ν•˜μ§€ μ•ŠμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œλ‹€λŠ” 것은 κ·Έ 뒀에 μ˜€λŠ” μ½”λ“œκ°€ 무엇이든 μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ voidλŠ” ν•¨μˆ˜κ°€ 아무 것도 λ°˜ν™˜ν•˜μ§€ μ•ŠμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. neverλ₯Ό μΆ”κ°€ν•˜μ—¬ 정적 λΆ„μ„κΈ°λŠ” κ·Έ 기반으둜 … Continued

PHP8.1: Fibers

FibersλŠ” PHP의 ν›Œλ₯­ν•œ μΆ”κ°€ κΈ°λŠ₯μž…λ‹ˆλ‹€. green threads둜 κ°€λŠ” low-level λ°©λ²•μž…λ‹ˆλ‹€. λ°˜λ©΄μ— ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•  κ°€λŠ₯성은 λ‹€μ†Œ ν¬λ°•ν•©λ‹ˆλ‹€. low-level ꡬ성 μš”μ†Œμ΄λ©° 비동기성을 μ²˜λ¦¬ν•˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œλ§Œ μ‚¬μš©λ©λ‹ˆλ‹€. κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  Fibers에 λŒ€ν•΄ 이야기 ν•  κ°€μΉ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. FibersλŠ” λ™μΌν•œ 물리적 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ 병렬 μ²˜λ¦¬ν•˜λŠ” ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. Fibersλ₯Ό μ‚¬μš©ν•  λ•Œ μ‹€μ œ 닀쀑 μŠ€λ ˆλ“œ λ˜λŠ” 병렬 ν”„λ‘œμ„ΈμŠ€κ°€ μ—†μŠ΅λ‹ˆλ‹€. 즉, μ½”λ“œμ—μ„œ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” 뢀뢄이 … Continued

PHP 8.1: Performance

μ„±λŠ₯을 이전 버전과 비ꡐ할 수 μžˆλŠ” μ μ ˆν•œ λ²€μΉ˜λ§ˆν¬κ°€ μ—†μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ DmitryλŠ” Inheritance Cacheλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€. PHP ν΄λž˜μŠ€λŠ” (opcache에 μ˜ν•΄) λ³„λ„λ‘œ 컴파일 및 μΊμ‹œλ˜μ§€λ§Œ 각 μš”μ²­μ— λŒ€ν•΄ λŸ°νƒ€μž„μ— “linking“이 μˆ˜ν–‰λ©λ‹ˆλ‹€. “linking” ν”„λ‘œμ„ΈμŠ€μ—λŠ” μ—¬λŸ¬ ν˜Έν™˜μ„± 검사 및 차용 λ©”μ„œλ“œ/속성/μƒμˆ˜κ°€ λΆ€λͺ¨ 및 νŠΉμ„±μ„ κ΅¬μ„±ν•˜λŠ” 과정이 포함될 수 μžˆμŠ΅λ‹ˆλ‹€. 이것은 μƒλ‹Ήν•œ μ‹œκ°„μ΄ κ±Έλ¦¬μ§€λ§Œ κ²°κ³ΌλŠ” 각 μš”μ²­μ—μ„œ λ™μΌν•©λ‹ˆλ‹€. Inheritance CacheλŠ” λͺ¨λ“  … Continued

PHP 8.1: New in initializers

initializerμ—μ„œ new ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•  수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. πŸ‘πŸ‘πŸ‘ 그게 무엇이냐? ν•¨μˆ˜μ˜ μΈμˆ˜μ— 기본값을 ν• λ‹Ήν•˜λŠ” 방법을 μ•Œκ³  μžˆμŠ΅λ‹ˆκΉŒ? 예λ₯Ό λ“€μ–΄ $title에 λŒ€ν•œ 빈 λ¬Έμžμ—΄μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. κΈ°λ³Έ κ°μ²΄μ—μ„œ 이제 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. 이 속성은 publicΒ readonly 뢀뢄을 μ•Œμ•„μ•Ό 이해가 κ°€λŠ₯ν•©λ‹ˆλ‹€.

PHP 8.1: Readonly Properties

PHP 8.0μ—μ„œλŠ” promoted properties속성이 λ„μž… λ˜μ—ˆμŠ΅λ‹ˆλ‹€ 그리고 이제 readonly propertiesλ₯Ό μ–»μ—ˆμŠ΅λ‹ˆλ‹€! Awesome! 읽기 μ „μš© 속성이 무엇인가? 값을 ν•œ 번만 μ„€μ •ν•˜λ„λ‘ ν—ˆμš©ν•˜κ³  κ·Έ μ‹œμ λΆ€ν„° 속성 값에 λŒ€ν•œ 변경을 κΈˆμ§€ν•˜λŠ” μ†μ„±μž…λ‹ˆλ‹€. 읽기 μ „μš© 속성을 μ‚¬μš©ν•˜λŠ” 것은 κ°’ 객체와 데이터 전솑 개체λ₯Ό λͺ¨λΈλ§ν•˜λŠ” 쒋은 λ°©λ²•μž…λ‹ˆλ‹€ 차이점 PHP 7.4 μ΄μ „μ˜ DTOλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. PHP 7.4에 μœ ν˜• 속성이 μΆ”κ°€λ˜μ–΄ λ¬Έμ„œ … Continued

PHP 8.1: Pure Intersection Types

Pure Intersection Types ν•œκΈ€λ§λ‘œ 순수 ꡐ차 μœ ν˜•? μˆœμˆ˜κ΅μ°¨νƒ€μž…μ€ μ„€λͺ…ν•˜κΈ°μ—λŠ” μ‰½μ§€λ§Œ 정적 뢄석기와 ν•¨κ»˜ μ‚¬μš©ν•˜μ§€ μ•Šμ€ 경우 μ•½κ°„ λͺ¨ν˜Έν•˜κ²Œ 보일 수 μžˆμŠ΅λ‹ˆλ‹€. 당신은 이미 union type에 λŒ€ν•΄ μ•Œ 것이닀. 이 것은 “$foo의 μœ ν˜„μ€ Aλ˜λŠ” B μ—¬μ•Όν•©λ‹ˆλ‹€”라고 λ§ν•©λ‹ˆλ‹€. 이 것은 A와 Bμ—¬μ•Ό ν•œλ‹€κ³  λ§ν•©λ‹ˆλ‹€. κ΅μ°¨νƒ€μž…μ˜ μœ„μ²˜λŸΌ 보이고 μ•„λ§ˆ 좔츑이 κ°€λŠ₯ν–ˆμ„ κ²ƒμž…λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ 이것은 μ–Έμ œ μœ μš©ν• κΉŒμš”? 예λ₯Ό λ“€μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€. … Continued

PHP 8.1: λ°°μ—΄ ν’€κΈ°

PHP의 λ°°μ—΄ ν•΄μ œλŠ” PHP 7.4λΆ€ν„° ν¬ν•¨λ˜μ–΄ μžˆμ—ˆμ§€λ§Œ μ œν•œμ‚¬ν•­μ΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 숫자 ν‚€κ°€ μžˆλŠ” λ°°μ—΄λ§Œ ν—ˆμš©λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€. κ·Έλž˜μ„œ μ•„λž˜ μ½”λ“œλŠ” 이미 κ°€λŠ₯ν–ˆμ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ•„λž˜ μ½”λ“œλŠ” PHP 8.1 이전 λ²„μ „μ—μ„œλŠ” μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜μ§€ μ•Šμ•˜μ£  ν•˜μ§€λ§Œ μ΄μ œλŠ” μ΄λ ‡κ²Œ μž‘λ™ν•©λ‹ˆλ‹€. 그런데 λ¬Έμžμ—΄ ν‚€λ₯Ό μ‚¬μš©ν•œ λ°°μ—΄μ˜ ν•΄μ œκ°€ μž‘λ™ν•˜λŠ” 방식은 array_merge의 μž‘λ™ 방식과 μ •ν™•νžˆ λ™μΌν•©λ‹ˆλ‹€. 즉, λ™μΌν•œ ν‚€λ₯Ό 가진 λ°°μ—΄μ˜ ν•΄μ œμ— λŒ€ν•΄ μƒˆλ‘œ … Continued

PHP8.1: First-Class Callables

PHP 8.1μ—μ„œ 호좜 κ°€λŠ₯ν•œ ꡬ문을 μž‘μ„±ν•˜λŠ” μƒˆλ‘œμš΄ 방법인 First-Class 호좜 μ΄μ „μ—λŠ” λ‹€μŒκ³Ό 같이 μž‘μ„±ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 즉, λ‹€λ₯Έ μ’…λ₯˜μ˜ ν•¨μˆ˜λ₯Ό μ°Έμ‘°ν•˜λŠ” ν΄λ‘œμ €λ₯Ό μƒμ„±ν•˜μ—¬ ν•΄λ‹Ή ν΄λ‘œμ €λ₯Ό λ³€μˆ˜λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이것은 λ‚΄κ°€ μ„±κ°€μ‹  λΆ€λΆ„μ΄μ—ˆμŠ΅λ‹ˆλ‹€. μ‹€μ œ ν•¨μˆ˜λ₯Ό μ°Έμ‘°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” ‘λ¬Έμžμ—΄’ 이름과 배열에 λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν΄λ‘œμ €λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ μ μ ˆν•œ λ‚΄μž₯ κ΅¬λ¬Έμž…λ‹ˆλ‹€! λ‹€μŒκ³Ό 같이 μƒμ„±ν•˜λ©΄ λ©λ‹ˆλ‹€. … Continued

PHP 8.1: Enums

PHP8.1μ—λŠ” Enumsκ°€ μΆ”κ°€λ©λ‹ˆλ‹€. μ—΄κ±°ν˜•μ˜ 이점은 μƒμˆ˜ κ°’μ˜ μ»¬λ ‰μ…˜μ„ λ‚˜νƒ€λ‚΄μ§€λ§Œ κ°€μž₯ μ€‘μš”ν•œ 것은 μ΄λŸ¬ν•œ 값을 λ‹€μŒκ³Ό 같이 μž…λ ₯ν•  수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 μ˜ˆμ—μ„œ μ—΄κ±°ν˜•μ„ λ§Œλ“€κ³  μ „λ‹¬ν•˜λ©΄ BlogPostλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. μ—΄κ±°ν˜•μ— λŒ€ν•΄ μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€! Enum methods μ—΄κ±°ν˜•μ€ ν΄λž˜μŠ€μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이것은 특히 match μ—°μ‚°μžμ™€ ν•¨κ»˜ μ‚¬μš©ν•  λ•Œ 맀우 κ°•λ ₯ν•œ κΈ°λŠ₯μž…λ‹ˆλ‹€. 방법은 λ‹€μŒκ³Ό 같이 μ‚¬μš©ν•  … Continued