輝きと貧困のphp。 4.xから7.1への言語の進化

画像


噂によると、リリース7.1の期限は本日です。 したがって、少し振り返って、phpが松葉杖と小道具のセットから本格的なWeb言語に成長したことを確認したいと思います。 すぐに、つまり バージョンごと。 そして最後に少しお願いします 燃やす 現代のエコシステムにおけるphpの役割を反映します。


ワードプレス、bitrix、他の何百万ものCMSやホームページが開発されたphp4の時代に戻りましょう。


5番目のバージョンまでのPHPは、ストレッチ言語と呼ぶことができます。 むしろ、mysqlからブラウザーにデータを吐き出すためにすぐに呼び出すことができる無秩序な関数のセットでした。 OOPの始まりはありましたが、そのようなものはおそらくより良いものではなかったでしょう。


1つおきのサイトは、刻印された魔法の引用符で動作しました。 つまり ブラウザから到着したすべての変数は魔法のようにエスケープされました。 これにより、データベースに安全に挿入できるようになりました。 実際、ユニバーサルCMSはそれをきれいにしなければなりませんでした(または、php.iniの設定に応じて、そのままにしておきます)。 一般的に、暗闇。 しかし、初心者にとっては、「便利」だったと思われます。入浴するのではなく、ベースに飛び込んだものをすべて挿入することです。


したがって、エントリのしきい値は非常に低く、関数mysql_queryおよびhtmlspecialcharsを学習するのに十分でした。 これにより、phpのサイトがすべてを完全に実行し始めたという事実につながりました。ほぼ2人に1人の学生が「ウェブスタジオ」のメンバーでした。


しきい値は低く、コードの品質は適切でした。 当時始まった主要なプロジェクトを取り上げて、そのコードを見てください。 恐れ、憎しみ、痛み。


しかし、その後php5が登場しました


php 5.0(2004)


. (public, protected, private). (static). . . Reflection API. . __get __set. . ArrayAccess ( , ). - . , java, (extends, implements, try, catch ..). .. . .
, type hinting. .. ( ), ( -!).
SPL ( ).


, : , , . , ( php4) , - .


php5 . , php5 — .


php 5.1 5.2 (2006-2009 )


5.1 5.2 , : __isset __unset ( __get __set).
type hinting array. .. . , , , .
Serializable.
SPL Reflection


. , json_encode


PDO . mysql_query SQL- .


php 5.3 (2009 )


5.3 .
— ( package java). . composer.


. , java 5 .
( c# 5 )


goto


?:


static __callStatic


php-fpm


php 5.4 (2012 )


- register_globals. .. - deprecated, 5.4 - . , : ( php) , magic_quotes, . , .


: (traits).


, .. Array(1,2,3) [1,2,3]



foo()[0]

:


(new foo)->bar()

type hint callable


php 5.5 (2013 )


5.5 "finally".


:


echo [1, 2, 3][0];
echo 'PHP'[0];

::class .


php 5.6 (2014 )


.
(...$params) c ...


php 6 ()


php 6 . challenge UTF ( UTF-16). , . , UTF-8, - . .


php 7 (2015 )


, 5.0 5.3. , -.
-, : int, string .. . ,


declare(strict_types=1)

float , int, Fatal Error.


php .


?? <=>


, use, , .


php 7.1 ()


nullable ?
?string


void. .. return, fatal error


list []
..


[$a, $b] = [$b, $a];

(public, protected, private)


( java)


catch (FirstException | SecondException $e)  

"abcdef"[-2]


pcntl_async_signals()


php7.1 : https://secure.php.net/manual/ru/migration71.php


?


, : (Symfony, Yii .), .. . .. , php, best practices, composer, .


, php- php php4, . - , , . , , .


( "", ), , , .


, php . -?


.. , ( , go - ). ( ), php , C# java. , , . , utf. php — HashMap .. .. java/c#, php, ?


, php, ? , , .



Source: https://habr.com/ru/post/J316506/


All Articles