π PHP : κ°λ¨νκ² μμ보λ PHPμ μμ¬
2023-01-27
PHP
λ 1994λ
λΆν° κΎΈμ€ν κ°λ°λμ΄ νμ¬κΉμ§λ μ
λ°μ΄νΈ λκ³ μλ νλ‘κ·Έλλ° μΈμ΄μ
λλ€. κΈ΄ μμ¬λ₯Ό κ°μ§κ³ μκ³ , 2023λ
μΈ μμ§κΉμ§λ μΉμλ² μΈμ΄ μ μ μ¨ 70% μ΄μμ μ μ§νκ³ μλ PHPμ λν΄ μμΈμ΄ μμ보기 μν΄! PHPμ μμ¬λ₯Ό λ²μ λ³λ‘ κ°λ΅ν μ 리ν΄λ³΄μμ΅λλ€.
π PHPμ μμ¬
PHPλ μ΄κΈ°λΆν° μλ§μ κ°λ°μλ€μ κΈ°μ¬λ₯Ό λ°μΌλ©° μ±μ₯νκ³ , νμ¬κΉμ§λ κΎΈμ€ν κ°λ° μ€μΈ μΈμ΄μ λλ€. ν¬μ€νΈκ° μμ±λ νμ¬ 8.2 λ²μ κΉμ§ μΆμλ μνμ λλ€.
PHPμ μμ¬λ ν¬κ² λΌμ€λ¬΄μ€ λ¬λν(Rasmus Lerdorf)κ° λ°°ν¬ν PHP 1.0μ PHP 2.0, κ·Έλ¦¬κ³ μ€λ κ°νΈλ§μ¦(Andi Gutmans)μ μ μ΄λΈ μ€λΌμ€ν€(Zeev Suraski)κ° λ°°ν¬ν PHP3.0, λ§μ§λ§μΌλ‘ λͺ¨λ PHP
λΌκ³ λΆλ¦¬λ PHP 7.0 μ΄ν λ²μ μΌλ‘ ꡬλΆλ©λλ€. PHP κ° λ²μ μ μ£Όμ λ΄μ©μ λ μμΈν μ΄ν΄λ³΄λ©° PHPμ μμ¬μ λν΄ μμλ΄
μλ€.
PHP 1.0 PHP Tools
(1995λ
6μ 8μΌ)
λΌμ€λ¬΄μ€ λ¬λνλ 1994λ
κ°μΈ μΉνμ΄μ§ κ°λ°(μ΄λ ₯μ λ°©λ¬Έ μΆμ )μ μν΄ Perl μΈμ΄λ‘ μμ±λ CGI(Common Gateway Interface) λꡬλ‘λΆν° μμλμμ΅λλ€. νμν κΈ°λ₯μ κ·Έλκ·Έλ λ§λ€μ΄ μ¬μ©νλ μ€ μΉμλ²μ κ³ΌλΆνμ κ°λ°μ 볡μ‘μ±μ ν΄κ²°νκΈ° μν΄ CμΈμ΄λ‘ Perl λνΌλ₯Ό λ§λ€μκ³ , μ΄κ²μ μκ² λ κ°μ μΉμλ²μ μ¬λλ€μ΄ μ¬μ©ν μ μλμ§ λ¬Όμ΄λ³΄λ©° μ°Ύμμμ΅λλ€. κ·Έ ν, μ΄ λνΌμ μ§μμ μΌλ‘ κΈ°λ₯μ μΆκ°νκ³ μ μ°¨ κ°μ ν΄, λ§μΉ¨λ΄ Personal Home Page Tools
λΌ λͺ
λͺ
ν λ°°ν¬νμ λ§λ€μμ΅λλ€. μ΅μ’
μ μΌλ‘ 1995λ
PHP Toolsμ μμ€λ₯Ό 곡κ°ν΄ μ΅μ΄μ PHPκ° λ¦΄λ¦¬μ¦ λμμ΅λλ€.
ꡬ체μ μΌλ‘ μ€κ³λμ§ μκ³ λ°λ³΅μ μΈ κ°μ μΌλ‘ λ§λ€μ΄μ§ 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μΌ)
λΌμ€λ¬΄μ€λ 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μΌ)
μ€λ κ°νΈλ§μ¦μ μ μ΄λΈ μ€λΌμ€ν€λ PHP/FIμ λΆμ‘±ν κΈ°λ₯μ μ±μ°κ³ , μμ§μ κ°μ νκΈ° μν΄ λΌμ€λ¬΄μ€μ νμ ν©μ³ νλ‘κ·Έλλ° μΈμ΄ κ°λ°μ νλ ₯νμ΅λλ€. μ΄ μλ‘μ΄ μΈμ΄λ PHP
λΌλ μ½μ΄λ₯Ό κ·Έλλ‘ μ¬μ©νλ, κ°μΈ μ¬μ©μ μλ―Έλ₯Ό μ κ±°ν PHP:Hypertext Preprocessor
μ μ¬κ·μ μ½μ΄λ‘ μ΄λ¦μ λ³κ²½νμ΅λλ€.
PHP 3.0μ μ΄λ₯΄λ¬ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μ§μκ³Ό κ°λ ₯νκ³ μΌκ΄νλ μΈμ΄ ꡬ문μΌλ‘ λμ± κ°μ λμκ³ , μ΄μ λν΄ κ°λ ₯ν νμ₯μ±μΌλ‘ μλ§μ λͺ¨λ κ°λ°μλ€μ μ μ μ λΆλ¬μμ΅λλ€. μ΄ λ²μ λΆν° μ°λ¦¬κ° μλ PHPμ μ μ¬ν λͺ¨μ΅μ κ°μΆκ² λμμ΅λλ€.
PHP 4.0 PHP
(2000λ
5μ 22μΌ)
PHP 3.0μ΄ κ³΅μμ μΌλ‘ μΆμλ μ§ν 볡μ‘ν μ ν리μΌμ΄μ
μ μ±λ₯μ κ°μ νκ³ PHP μ½λ λ² μ΄μ€μ λͺ¨λμ±μ κ°μ νκΈ° μν΄ PHP μ½μ΄ μ¬μμ± μμ
μ΄ μμλμμ΅λλ€. μ€λ κ°νΈλ§μ¦μ μ μ΄λΈ μ€λΌμ€ν€λ λ³ΈμΈλ€μ μ΄λ¦ 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λ μ΄λΌλ κΈ°κ° λμ ν° κ°μ μ΄ μλ μμ§μ μν΄ λ€λ₯Έ μΈμ΄μ λΉν΄ μ±λ₯ λΆλΆμμ ν¬κ² λ°λ €λκ² λμμ΅λλ€.
PHP 5.4λΆν° λ€μ UTF8μ κΈ°λ³Έ μΈμ½λ©μΌλ‘ μ±νν΄ λ€μ μ¬μ©μλ€μ μ μ§νλ©° 2014λ 8μ 28μΌ PHP 5.6κΉμ§ μΆμνμ΅λλ€.
PHP 7.0 PHP
(2015λ
12μ 3μΌ)
PHP6μΌλ‘ μΆμ μμ μ΄μλ μ°¨κΈ° λ²μ μ΄ μ§μ²΄λμ΄ 10λ μ΄ μ§λ νμ λ€μ λ²μ μ μ΄λ¦μ μ΄λ»κ² μ ν μ§μ λν λ Όμκ° νλ°ν μΌμ΄λ¬μμ΅λλ€. κ·Έ κ²°κ³Ό PHP6μ΄λΌλ μ΄λ¦μ 10λ μ κΈ°κ° λμ PHP 5.xμ ν΅ν©λ μλ§μ κΈ°λ₯μ λμμ΄ λλ λ²μ μΌλ‘ λΆλ € μκΈ°μ νλμ μ μ¬ λ²μ μ΄λ λ€λ¦μκ³ , νΉν μ€ν¨ν λ²μ μ΄λΌλ μ΄λ―Έμ§κ° λ무 κ°νλ€λ μ£Όμ₯μ΄ νμ μ»μ΄ κ²°κ΅ ν¬ν κ²°κ³Ό PHP7μ΄ μλ‘μ΄ λ¦΄λ¦¬μ¦μ μ΄λ¦μΌλ‘ μ±νλμμ΅λλ€.
- κ·Έλ¦¬κ³ μ¬μ€ μ΄λ―Έ λ§μ νλ‘μ νΈκ° λ©μ΄μ λ²μ μ 건λλ°μκΈ° λλ¬Έμ ν¬κ² μκ΄μ΄ μμ΄ λ³΄μ΄κΈ°λ νμ΅λλ€.
PHP7μ κΈ°λ°μ βμ°¨μΈλ PHPβ phpng
λΌκ³ λΆλ Έλ PHP λΈλμΉμ
λλ€. Dmitry Stogov, Xinchen Hui, Nikita Popovκ° μ°Έμ¬ν μ΄ λΈλμΉμ λͺ©μ μ μμ ν μΈμ΄ νΈνμ±μ μ μ§νλ©΄μ PHPμ μ±λ₯μ μ΅μ ννλ κ²μ΄μμ΅λλ€. μ΄λ₯Ό μν΄ Zend μμ§μ 리ν©ν λ§ν΄ μ±λ₯μ PHP5.6 λλΉ 2λ°° ν₯μλκ³ , λ©λͺ¨λ¦¬ μ¬μ©λμ 80% κ°μλμμ΅λλ€.
- μ£Όμ μ¬ν :
- ν¨μμ μΈμμ λ°ν νμ , ν΄λμ€μ νλ‘νΌν° νμ λͺ μ μ§μ
- μΉλͺ
μ μΈ λ¬Έμ λ₯Ό μΌμΌν¬ μ μμλ λ€μν μ€λ₯ 맀컀λμ¦μ
try-catch
κ° κ°λ₯ν μμΈ(Exception)μΌλ‘ λ체 - νμ΄ν ν¨μ(λλ€μ), λ λ³ν© μ°μ°μ(
??
), μ°μ£Όμ μ°μ°μ(<=>
), λ¬Έμμ΄ μμ μ€νμ , μ΅λͺ ν΄λμ€, λ€μμ€νμ΄μ€ κ·Έλ£Ήν λ± λ€μν λ¬Έλ² μΆκ°
PHP 8.0 PHP
(2020λ
11μ 26μΌ)
PHP7λΆν° μ€λΉν΄ μ¨ JIT
(Just-In-Time) μ»΄νμΌλ¬κ° λμ
λμ΄ λ€μ μ±λ₯μ΄ 2λ°° μμΉλμμ΅λλ€. λν, μ½κΈ° μ μ© μ κ·Όμ(readonly), μ΄κ±°ν(Enum) μ§μ, match
ννμ, λ μΈμ΄ν μ°μ°μ (?->
), Attributes
(Javaμ Anotation) λ± λ€μν κΈ°λ₯μ΄ μΆκ°λμκ³ , PHP7μ μ΄μ΄ λ λ€μν μ€λ₯κ° μμΈλ‘ λ³κ²½λμκ³ , assert
μ κ°μ μμΈ μ²λ¦¬μ κ΄λ ¨λ μμλ€μ΄ κ°μ λμμ΅λλ€.
PHP 7.xμ 8.xμ λ³κ²½μ μ μΆν κ° λ§μ΄λ λ²μ λ³λ‘ μΈμΈνκ² μλ΄νλ ν¬μ€νΈλ₯Ό μμ±ν μμ μ΄κΈ° λλ¬Έμ μ΄μ λλ‘λ§ μ 리νκ³ λ§λ¬΄λ¦¬ νλλ‘ νκ² μ΅λλ€.
μμ±μ€β¦
π μ°Έκ³ λ¬Έν
- https://en.wikipedia.org/wiki/PHP
- https://ko.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