π PHP : κ°λ¨νκ² μμ보λ PHPμ μμ¬
2023-10-24
π© κ°μ
PHP
λ 1994λ
λΆν° κΎΈμ€ν λ°μ μ κ±°λνμ¬ νμ¬κΉμ§λ μ
λ°μ΄νΈλκ³ μλ νλ‘κ·Έλλ° μΈμ΄μ
λλ€. λ§μ κ°λ°μλ€μκ² λ κ±°μ μΈμ΄λΌλ μ
λͺ
μΌλ‘ μ λͺ
ν μΈμ΄μΈλ°, κ·ΈλΌμλ κΎΈμ€ν κ°μ μ΄ μ΄λ€μ§κ³ μλ€λ μ μ΄ κ½€ 맀λ ₯μ μ΄μμ΅λλ€. μ΄λ² κΈ°νμ 28λ
μ΄λΌλ κΈ΄ μΈμ λμ μλ§μ κ°λ°μλ€μ κΈ°μ¬λ‘ λ°μ ν΄μ¨ PHPμ μμ¬λ₯Ό μ 리ν΄λ³΄κ³ μ μ΄ ν¬μ€νΈλ₯Ό μμ±νκ² λμμ΅λλ€.
νμ¬ PHPλ The PHP Group
μμ κ°λ° λ° κ΄λ¦¬λ₯Ό λ§‘κ³ μκ³ , php.netμμ λ¬Έμλ₯Ό μ 곡νκ³ μμ΅λλ€. μ΄κ³³μμλ 3.0 μ΄μμ λ²μ λ§ κ΄λ¦¬νκΈ° λλ¬Έμ 1.0κ³Ό 2.0λ PHP λ°λ¬Όκ΄μμ νμΈνμ€ μ μμ΅λλ€.
π PHPμ μμ¬
PHP 1.0 PHP Tools
(1995λ
6μ 8μΌ)
PHPλ Rasmus Lerdorfκ° 1994λ κ°μΈ μΉνμ΄μ§ κ°λ°(μ΄λ ₯μ λ°©λ¬Έ μΆμ )μ μν΄ Perl μΈμ΄λ‘ μμ±λ CGI(Common Gateway Interface) λꡬλ‘λΆν° μμλμμ΅λλ€. μμ μκ² νμν κΈ°λ₯μ κ·Έλκ·Έλ λ§λ€μ΄ μ¬μ©νλ μ€ μΉμλ²μ κ³ΌλΆνμ κ°λ°μ 볡μ‘μ±μ ν΄κ²°νκΈ° μν΄ CμΈμ΄λ‘ Perl λνΌλ₯Ό λ§λ€μκ³ , μ΄λ₯Ό μκ²λ μ£Όλ³ κ°λ°μλ€μ κΈ°μ¬μ κΈ°λ₯ μμ²μΌλ‘ κ³μν΄μ κ°λ°λμμ΅λλ€.
μκ°μ΄ μ§λ λ§μ κΈ°λ₯μ μΆκ°νκ³ μ μ°¨ κ°μ ν΄, λ§μΉ¨λ΄ Personal Home Page Tools
λΌ λͺ
λͺ
ν λ°°ν¬νμ λ§λ€μκ³ , μ΅μ’
μ μΌλ‘ 1995λ
PHP Toolsμ μμ€λ₯Ό κ³΅κ° ν΄ μ΅μ΄μ PHPκ° λ¦΄λ¦¬μ¦ λμμ΅λλ€.
μ΄ λ²μ μ PHPλ νλ‘κ·Έλλ° μΈμ΄κ° μλ λμ μΉ νμ΄μ§λ₯Ό μμ½κ² μμ±νκΈ° μν΄ κ°λ°λ λκ΅¬μΌ λΏμ΄μκ³ , ꡬ체μ μΈ μ€κ³ μμ΄ μꡬ κΈ°λ₯ ꡬνμ μν λ§μ μμ μΌλ‘ λ§λ€μ΄μ§ νμ ν¨μμ μ΄λ¦μ΄λ 맀κ°λ³μμ μμκ° μΌκ΄λμ§ μμ λ¬Έμ λ₯Ό κ°κ² λμμ΅λλ€. λΌμ€λ¬΄μ€λ νκ³ λ‘μμ μ΄μ λν΄ βμ λ νλ‘κ·Έλλ° μΈμ΄λ₯Ό μμ±ν μλκ° μ ν μμμ§λ§, μ΄κ²μ λ©μΆλ λ°©λ²μ λͺ°λμ΅λλ€. [β¦] μ λ νλ‘κ·Έλλ° μΈμ΄λ₯Ό μμ±νλ λ°©λ²μ μ ν λͺ¨λ¦ λλ€. μ λ κ·Έμ κ³μν΄μ λ€μ λ Όλ¦¬μ λ¨κ³λ₯Ό μΆκ°νμ΅λλ€.β λΌκ³ λ§νμ΅λλ€.
νκ³ λ‘ μλ¬Έ : βI donβt know how to stop it, there was never any intent to write a programming language [β¦] I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way.β
μμ± μμ
<!--getenv HTTP_USER_AGENT--> <!--ifsubstr $exec_result Mozilla--> Hey, you are using Netscape!<p> <!--endif--> <!--sql database select * from table where user='$username'--> <!--ifless $numentries 1--> Sorry, that record does not exist<p> <!--endif exit--> Welcome <!--$user-->!<p> You have <!--$index:0--> credits left in your account.<p> <!--include /text/footer.html-->
PHP 2.0 PHP/FI
(1997λ
11μ 1μΌ)
Rasmus Lerdorfλ PHP Toolsλ₯Ό λ°°ν¬ν¨κ³Ό λμμ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ½κ² μ¬μ©ν λ°©λ²μ μ°Ύκ³ μμκ³ , SQL 쿼리λ₯Ό ꡬ문 λΆμνκ³ κ·Έ κ²°κ³Όλ₯Ό ν΅ν΄ μμκ³Ό ν
μ΄λΈμ μ½κ² λ§λ€ μ μλλ‘ λμμ£Όλ μλ‘μ΄ CGI λꡬλ₯Ό λ§λ€μμ΅λλ€. Form Interpreter
λΌ λͺ
λͺ
λ μ΄ λꡬλ μ΄ν PHPμ νλμ νλ‘κ·Έλ¨μΌλ‘ κ²°ν©λμ΄ Personal Home Page Construction Kit/Form Interpreter
λΌλ μ΄λ¦μΌλ‘ μμ ν μ¬μμ± λμμ΅λλ€.
μ΄ λ²μ λΆν° νλ‘κ·Έλλ° μΈμ΄λ‘ λ°μ ν PHP/FI
λ κ°λ¨ν μ€ν¬λ¦½νΈλ₯Ό μ§μ HTML νμΌμ λ°°μΉν μ μμ΄, Cμ Perl μΈμ΄λ‘ CGIλ₯Ό μ¬μ©ν΄ 볡μ‘νκ² μΉνμ΄μ§λ₯Ό μμ±νλ κΈ°μ‘΄ λ°©μμ λΉν΄ λ§€μ° μ¬μ΄ νΈμ΄μμ΅λλ€. λν, μλ§μ CGI λꡬλ₯Ό μ¬μ©ν λμ λ¬λ¦¬ μ€λ²ν€λκ° λ§μ΄ μ κ±°λμ΄ μΉνμ΄μ§μ μ±λ₯μ΄ κ°μ λμκ³ , κΈ°μ‘΄ κ°λ°μκ° μ½κ² λ°°μΈ μ μλλ‘ μλμ μΌλ‘ Cμ Perlμ ꡬ쑰μ μ μ¬νκ² μ€κ³λμμ΅λλ€.
- λ³μλͺ
μ΄
$
λ‘ μμνλ κ²κ³Ό λͺ¨λ λ°°μ΄(array)μ΄ μ°κ΄ λ°°μ΄(map)λ‘ μλνλ€λ μ , λ¬Έμμ΄ κ²°ν©μ+
κ° μλ.
λ‘ νλ€λ μ λ±μ΄ Perlμ μν₯μ λ°μ λνμ μΈ λ¬Έλ²μ λλ€.
PHP 3.0 PHP
(1998λ
6μ 6μΌ)
Andi Gutmansμ Zeev Suraskiλ PHP/FIμ λΆμ‘±ν κΈ°λ₯μ μ±μ°κ³ , μμ§μ κ°μ νκΈ° μν΄ λΌμ€λ¬΄μ€μ νμ ν©μ³ νλ‘κ·Έλλ° μΈμ΄ κ°λ°μ νλ ₯νμ΅λλ€. μ΄ μλ‘μ΄ λ²μ μ μ΄λ¦μ PHP
λΌλ μ½μ΄λ₯Ό κ·Έλλ‘ μ¬μ©νλ, κ°μΈ μ¬μ©μ μλ―Έλ₯Ό μ κ±°ν PHP:Hypertext Preprocessor
μ μ¬κ·μ μ½μ΄λ‘ μ ν΄μ‘μ΅λλ€.
PHP 3.0μ μ΄λ₯΄λ¬ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μ§μκ³Ό κ°λ ₯νκ³ μΌκ΄νλ μΈμ΄ ꡬ문μΌλ‘ λμ± κ°μ λμκ³ , μ΄μ λν΄ κ°λ ₯ν νμ₯μ±μΌλ‘ μλ§μ λͺ¨λ κ°λ°μλ€μ μ μ μ λΆλ¬μμ΅λλ€. μ΄ λ²μ λΆν° μ°λ¦¬κ° μλ PHPμ μ μ¬ν λͺ¨μ΅μ κ°μΆκ² λμμ΅λλ€.
PHP 4.0 PHP
(2000λ
5μ 22μΌ)
PHP 3.0μ΄ κ³΅μμ μΌλ‘ μΆμλ μ§ν 볡μ‘ν μ ν리μΌμ΄μ
μ μ±λ₯μ κ°μ νκ³ PHP μ½λ λ² μ΄μ€μ λͺ¨λμ±μ κ°μ νκΈ° μν΄ PHP μ½μ΄ μ¬μμ± μμ
μ΄ μμλμμ΅λλ€. Andi Gutmansμ Zeev Suraskiλ λ³ΈμΈλ€μ μ΄λ¦ Zeev μ Andi λ‘λΆν° λ°μ¨ Zend Engine
μ΄λΌλ μ΄λ¦μ μλ‘μ΄ μμ§μ λ§λ€μ΄ λκ³ , μ±λ₯κ³Ό νμ₯μ±μ ν¬κ² κ°μ ν΄ λμ΅λλ€.
λ λ§μ μΉ μλ², HTTP μΈμ
, μΆλ ₯ λ²νΌλ§, μ¬μ©μ μ
λ ₯μ μ²λ¦¬νλ λ³΄λ€ μμ ν λ°©λ² λ° λͺ κ°μ§ μλ‘μ΄ μΈμ΄ ꡬ쑰μ λν μ§μκ³Ό κ°μ κΈ°ν μ£Όμ κΈ°λ₯μ΄ ν¬ν¨λ 4.0 λ²μ μ κΎΈμ€ν μ
λ°μ΄νΈλμ΄, CLI(Command Line Interface) μ§μ, SuperGlobal
λ³μ μ§μ λ± κΎΈμ€ν μ
λ°μ΄νΈλ‘ 2008λ
8μκΉμ§ μ μ§λ³΄μ λμμ΅λλ€.
PHP 5.0 PHP
(2004λ
7μ 13μΌ)
μλ‘ μΆμλ Zend Engine 2.0μΌλ‘ ꡬλλλ PHP 5λ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ λν λ λ§μ μ§μκ³Ό μλ§μ κΈ°λ₯μ μΆκ°μ μ±λ₯ κ°μ , κ·Έλ¦¬κ³ λ³΄μ κ°νκ° μ΄λ£¨μ΄μ‘μ΅λλ€.
- μ£Όμ μ¬ν: λ€μμ€νμ΄μ€(Namespace), μ½λ μ‘°κ°(trait), μΌν μ°μ°μ(
?:
), μ λ€λ μ΄ν°(Generators), ν΄λ‘μ ( Native closures), λ¨μΆ λ°°μ΄ κ΅¬λ¬Έ([]
), μμ(const), κ°λ³ κΈΈμ΄ μΈμ, PDO(PHP Data Object), JSON ν¨μ, λ΄μ₯ κ°λ° μλ², κ°λΉμ§ 컬λ μ (Garbage Collection), Phar(php λ¬ΆμνμΌ), SQLite3, β¦
νμ λ²μ μΈ PHP6μ κ°λ°μ΄ 2005λ
λΆν° μμλμ΄ μ λμ½λλ₯Ό κΈ°λ°μΌλ‘ μλνλλ‘ μ€κ³νμλλ°, μ΄λ UTF-16
λ₯Ό μ°¨κΈ° μ λμ½λ μΈμ½λ©μΌλ‘ μ±νν΄ κ°λ°νλ μ¬μ΄, μΉμ νμ€ μ λμ½λ μΈμ½λ© λ°©μμ΄ UTF-8
λ‘ κ΅³νμ§λ©΄μ κ°λ°μλ€μ μ°Έμ¬κ° μ μ‘°ν΄μ‘κΈ° λλ¬Έμ κ°λ°μ΄ μ§μ²΄λλ€ κ²°κ΅ 2010λ
μ·¨μλμμ΅λλ€.
μ΄ν 2015λ κΉμ§ 10λ λμ PHP5 λ²μ μ 머무λ₯΄κ² λλ©΄μ PHP6μ μΆκ°νκΈ° μν΄ λ Όμλμλ λ§μ κΈ°λ₯μ΄ PHP5 λ²μ μ ν΅ν©λμμ§λ§, 10λ μ΄λΌλ κΈ°κ° λμ ν° κ°μ μ΄ μλ μμ§μ μν΄ λ€λ₯Έ μΈμ΄μ λΉν΄ μ±λ₯ λΆλΆμμ ν¬κ² λ°λ €λκ² λμμ΅λλ€.
PHP6λΆν° μ§μν μμ μ΄μλ μ λμ½λ κΈ°λ₯μ 5.4μ λ³ν©νλ©° UTF-8μ κΈ°λ³Έ μΈμ½λ©μΌλ‘ μ±νν΄ λ€μ μ¬μ©μλ€μ μ μ§νλ©° 2014λ 8μ 28μΌ PHP 5.6κΉμ§ μΆμνμ΅λλ€.
PHP 7.0 PHP
(2015λ
12μ 3μΌ)
PHP6μΌλ‘ μΆμ μμ μ΄μλ μ°¨κΈ° λ²μ μ΄ μ§μ²΄λμ΄ 10λ μ΄ μ§λ νμ λ€μ λ²μ μ μ΄λ¦μ μ΄λ»κ² μ ν μ§μ λν λ Όμκ° νλ°ν μΌμ΄λ¬μμ΅λλ€. κΈ΄ μκ° λμ PHP6μ΄ μΆμλμ§ μμλ νμ PHP6μ λμμΌλ‘ κ³νλμλ λ§μ κΈ°λ₯λ€μ΄ 5.x λ²μ μ ν΅ν©λμ΄λ²λ¦° μν©μ΄μμ΅λλ€. λ¬Έμ λ μ΄λ κ² μΆκ°λ κΈ°λ₯λ€μ PHP6μ΄λΌκ³ μ§μΉνλ λ§μ μλ£λ€μ΄ μ‘΄μ¬νκ² λμκΈ° λλ¬Έμ, PHP6μ΄λΌλ λ²μ μ μ¬μ©νλ©΄ ν° νΌλμ μΌκΈ°ν μ μλ€λ μ°λ €κ° λ§μμ΅λλ€.
νΉν PHP6μ μ€ν¨ν λ²μ μ΄λΌλ μ΄λ―Έμ§κ° λ무 κ°νλ€λ μ£Όμ₯μ΄ νμ μ»μ΄ κ²°κ΅ ν¬ν κ²°κ³Ό PHP7μ΄ μλ‘μ΄ λ¦΄λ¦¬μ¦μ μ΄λ¦μΌλ‘ μ±νλμμ΅λλ€.
- λμ μΈμ΄μ μΈκ³μλ
λ²μ 6μ΄ μ μ£Όλ°μλ€
λ λ―Έμ μ΄ μμ΅λλ€. μΆμλμ§μμMySQL 6
κ³Ό μ€ν¨νPerl 6
, κ·Έλ¦¬κ³ λΉμ¬μμΈPHP 6
- κ·Έλ¦¬κ³ μ¬μ€ μ΄λ―Έ λ§μ νλ‘μ νΈκ° μ¬λ¬ μ΄μ λ‘ λ©μ΄μ λ²μ μ 건λλ°μκΈ° λλ¬Έμ ν¬κ² μκ΄μ΄ μμ΄ λ³΄μ΄κΈ°λ νμ΅λλ€.
PHP7μ κΈ°λ°μ βμ°¨μΈλ PHPβ phpng
λΌκ³ λΆλ Έλ PHP λΈλμΉμ
λλ€. Dmitry Stogov, Xinchen Hui, Nikita Popovκ° μ°Έμ¬ν μ΄ λΈλμΉμ λͺ©μ μ μμ ν μΈμ΄ νΈνμ±μ μ μ§νλ©΄μ PHPμ μ±λ₯μ μ΅μ ννλ κ²μ΄μμ΅λλ€. μ΄λ₯Ό μν΄ Zend μμ§μ 리ν©ν λ§ν΄ μ±λ₯μ PHP5.6 λλΉ 2λ°° ν₯μλκ³ , λ©λͺ¨λ¦¬ μ¬μ©λμ 80% κ°μλμμ΅λλ€.
μ€λ κΈ°κ°μ μμ¬μ¨ λ κ±°μ νλ‘μ νΈλ€μ΄ λ§μ νμ μ΄ λ²μ λΆν°λ₯Ό ModernPHP
λΌκ³ λΆλ₯΄κΈ°λ ν©λλ€.
- μ£Όμ μ¬ν :
- ν¨μμ μΈμμ λ°ν νμ , ν΄λμ€μ νλ‘νΌν° νμ λͺ μ μ§μ
- μΉλͺ
μ μΈ λ¬Έμ λ₯Ό μΌμΌν¬ μ μμλ λ€μν μ€λ₯ 맀컀λμ¦μ
try-catch
κ° κ°λ₯ν μμΈ(Exception)μΌλ‘ λ체 - νμ΄ν ν¨μ(λλ€μ), λ λ³ν© μ°μ°μ(
??
), μ°μ£Όμ μ°μ°μ(<=>
), λ¬Έμμ΄ μμ μ€νμ , μ΅λͺ ν΄λμ€, λ€μμ€νμ΄μ€ κ·Έλ£Ήν λ± λ€μν λ¬Έλ² μΆκ°
PHP 8.0 PHP
(2020λ
11μ 26μΌ)
PHP7λΆν° μ€λΉν΄ μ¨ JIT
(Just-In-Time) μ»΄νμΌλ¬κ° λμ
λμ΄ λ€μ μ±λ₯μ΄ 2λ°° μμΉλμμ΅λλ€. λν, μ½κΈ° μ μ© μ κ·Όμ(readonly), μ΄κ±°ν(Enum) μ§μ, match
ννμ, λ μΈμ΄ν μ°μ°μ (?->
), Attributes
(Javaμ Anotation) λ± λ€μν κΈ°λ₯μ΄ μΆκ°λμκ³ , PHP7μ μ΄μ΄ λ λ€μν μ€λ₯κ° μμΈλ‘ λ³κ²½λμκ³ , assert
μ κ°μ μμΈ μ²λ¦¬μ κ΄λ ¨λ μμλ€μ΄ κ°μ λμμ΅λλ€.
ποΈλ§μΉ¨
μ΄ ν¬μ€νΈλ₯Ό μμ±νκΈ° μν΄ λ§μ λ¬Έμμ κΈλ€μ 보며 μ΅λν μ νν λ΄μ©μΌλ‘ μμ±νλ €κ³ λ Έλ ₯νμ§λ§, νΉμλΌλ μλͺ»λ μ λ³΄κ° μλ€λ©΄ λκΈλ‘ μ§μ ν΄μ£Όμλ©΄ νμΈνλλλ‘ μ μ νλλ‘ νκ² μ΅λλ€.
μΌλ¨ μ΄ ν¬μ€νΈμμ μ΄λ κ² ν° νμ λ³νλ§ μμ±νκ³ λ§λ¬΄λ¦¬ νλλ‘ νκ² μ΅λλ€. λ€μμ μκ°μ΄ λλ€λ©΄ κ° λ²μ λ§λ€μ μΈμΈν λ³κ²½μ¬νμ μ 리νλ ν¬μ€νΈλ₯Ό μμ±ν΄λ³΄λλ‘ νκ² μ΅λλ€.
π μ°Έκ³ λ¬Έν
- https://en.wikipedia.org/wiki/PHP
- https://www.php.net/manual/en/history.php.php
- https://www.php.net/manual/phpfi2.php
- https://www.php.net/manual/php3.php