+ $this->title +
+ + HTML; + + if ($this->description !== '' && $this->priority !== 1) { + $html .= <<<"HTML" + +$this->description
"; + } + + return $html . <<<"HTML" +diff --git a/history/timeline-data.json b/history/timeline-data.json new file mode 100644 index 0000000000..b0978a1bc7 --- /dev/null +++ b/history/timeline-data.json @@ -0,0 +1,1474 @@ +[ + { + "priority": 2, + "date": "2020-05-04T00:00:00+00:00", + "title": "Attributes accepted for PHP 8", + "href": "https://wiki.php.net/rfc/attributes_v2", + "description": "
<<PhpAttribute>>\nclass Release {\n public function __construct(\n protected SemVer $version\n ) {}\n }", + "comment": "" + }, + { + "priority": 3, + "date": "2020-04-14T00:00:00+00:00", + "title": "PhpStorm 2020.1", + "href": "https://blog.jetbrains.com/phpstorm/2020/04/phpstorm-2020-1-release/", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2020-04-06T00:00:00+00:00", + "title": "PHP 8 release schedule available", + "href": "https://wiki.php.net/todo/php80", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2020-03-16T00:00:00+00:00", + "title": "PHP to have str_contains()", + "href": "https://wiki.php.net/rfc/str_contains", + "description": "A function that checks if a string is contained in another string?
hrtime()
function, and improved garbage collection.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2018-11-20T00:00:00+00:00",
+ "title": "Symfony leaves PHP-FIG",
+ "href": "https://github.com/php-fig/fig-standards/pull/1120/files",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2018-10-29T00:00:00+00:00",
+ "title": "PSR-18 HTTP Client accepted",
+ "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-18-http-client.md",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2018-10-17T00:00:00+00:00",
+ "title": "Zeev Suraski leaves Zend",
+ "href": "http://zsuraski.blogspot.com/2018/10/the-future-of-zend-engine-and-zend.html",
+ "description": "Zeev Suraski is the second of Zend’s two founders to leave the company. Matthew Weier O’Phinney and Enrico Zimuel also leave.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2018-07-31T00:00:00+00:00",
+ "title": "PSR-17 HTTP Factories accepted",
+ "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-17-http-factory.md",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2018-07-11T00:00:00+00:00",
+ "title": "ReactPHP 1.0 LTS",
+ "href": "https://clue.engineering/2018/announcing-reactphp-lts",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2018-05-21T00:00:00+00:00",
+ "title": "Adobe acquires Magento",
+ "href": "https://news.adobe.com/news/news-details/2018/Adobe-to-Acquire-Magento-Commerce/default.aspx",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2018-04-13T00:00:00+00:00",
+ "title": "PHP FFI announced",
+ "href": "https://externals.io/message/102036",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2018-03-16T00:00:00+00:00",
+ "title": "Zend Expressive 3",
+ "href": "https://framework.zend.com/blog/2018-03-16-expressive-3.html",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2018-02-22T00:00:00+00:00",
+ "title": "Psalm 1.0",
+ "href": "https://github.com/vimeo/psalm/releases/tag/1.0.0",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2018-01-22T00:00:00+00:00",
+ "title": "PSR-15 HTTP Server Request Handlers accepted",
+ "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-15-request-handlers.md",
+ "description": "The standard lays out how to write request handlers and middleware in PHP.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2018-01-08T00:00:00+00:00",
+ "title": "PHP-PM 1.0",
+ "href": "https://github.com/php-pm/php-pm/releases/tag/1.0.0",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2017-12-07T00:00:00+00:00",
+ "title": "Keep it simple stupid: RemoteOK.io is a single “index.php” file generating $2,342 a day. No frameworks. No libraries.",
+ "href": "https://twitter.com/levelsio/status/938707166508154880",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2017-11-30T00:00:00+00:00",
+ "title": "Symfony 4",
+ "href": "https://symfony.com/blog/hello-symfony-4",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2017-11-30T00:00:00+00:00",
+ "title": "PHP 7.2",
+ "href": "https://www.php.net/releases/7_2_0.php",
+ "description": "PHP becomes the first programming language with modern cryptography in its standard library thanks to the bundled libsodium
. It also brings object
typehint and parameter type widening.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2017-09-18T00:00:00+00:00",
+ "title": "HHVM’s last release that commits to PHP support",
+ "href": "https://hhvm.com/blog/2017/09/18/the-future-of-hhvm.html",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2017-09-06T00:00:00+00:00",
+ "title": "Laravel 5.5 LTS",
+ "href": "https://laravel-news.com/laravel-5-5",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2017-07-01T00:00:00+00:00",
+ "title": "InfectionPHP 0.1",
+ "href": "https://github.com/infection/infection/releases/tag/0.1.0",
+ "description": "Introduction of framework that makes mutation testing possible in PHP.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2017-06-15T00:00:00+00:00",
+ "title": "Amphp 2.0",
+ "href": "https://github.com/amphp/amp/releases/tag/v2.0.0",
+ "description": "Along with ReactPHP, Amp makes it possible to build async applications with PHP. It is implemented on top of generators.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2017-05-28T00:00:00+00:00",
+ "title": "End of HHVM support in popular projects",
+ "href": "",
+ "description": "Symfony, Laravel, Doctrine, MongoDB driver, Twig, Silex, Swiftmailer, and many other major tools declare the end of HHVM support.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2017-04-06T00:00:00+00:00",
+ "title": "Spiral Framework 1.0",
+ "href": "https://github.com/spiral/framework/releases/tag/v1.0.0",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2017-03-07T00:00:00+00:00",
+ "title": "Expressive 2.0",
+ "href": "https://framework.zend.com/blog/2017-03-07-expressive-2.html",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2017-02-14T00:00:00+00:00",
+ "title": "PSR-11 Container Interface accepted",
+ "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-11-container.md",
+ "description": "Standardizes how frameworks and libraries make use of containers to obtain objects and parameters.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2017-01-02T00:00:00+00:00",
+ "title": "PSR-16 Simple Cache accepted",
+ "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-16-simple-cache.md",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2016-12-01T00:00:00+00:00",
+ "title": "PHP 7.1",
+ "href": "https://www.php.net/releases/7_1_0.php",
+ "description": "Nullable types, class constant visibility modifiers, void return type, and a performance boost.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2016-11-15T00:00:00+00:00",
+ "title": "PSR-13 Link definition interfaces accepted",
+ "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-13-links.md",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2016-10-01T00:00:00+00:00",
+ "title": "PHP-FIG 3.0 – the new bylaws of the group",
+ "href": "https://github.com/php-fig/fig-standards/pull/752",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2016-08-01T00:00:00+00:00",
+ "title": "Swoole 2 released with coroutines",
+ "href": "",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2016-07-17T00:00:00+00:00",
+ "title": "externals.io launched",
+ "href": "https://externals.io",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2016-07-17T00:00:00+00:00",
+ "title": "PHPStan 0.1 released",
+ "href": "https://github.com/phpstan/phpstan",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2016-06-28T00:00:00+00:00",
+ "title": "Zend Framework 3",
+ "href": "https://framework.zend.com/blog/2016-06-28-zend-framework-3.html",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2016-05-18T00:00:00+00:00",
+ "title": "Silex 2.0",
+ "href": "https://github.com/silexphp/Silex/blob/master/doc/changelog.rst#200-2016-05-18",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2016-05-15T00:00:00+00:00",
+ "title": "Laravel, Propel, Doctrine, The PHP League, and Guzzle resign from PHP-FIG",
+ "href": "https://groups.google.com/forum/#!searchin/php-fig/resignation;context-place=forum/php-fig",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2016-04-05T00:00:00+00:00",
+ "title": "Composer 1.0 goes gold",
+ "href": "https://seld.be/notes/composer-goes-gold",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2016-03-17T00:00:00+00:00",
+ "title": "PhpStorm 2016.1",
+ "href": "https://blog.jetbrains.com/phpstorm/2016/03/phpstorm-2016-1-is-released/",
+ "description": "The first PhpStorm release with a new YYYY.R versioning model.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2016-02-24T00:00:00+00:00",
+ "title": "Andi Gutmans leaves Zend",
+ "href": "https://andigutmans.com/2016/02/24/starting-a-new-journey/",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2016-01-28T00:00:00+00:00",
+ "title": "Zend Expressive 1.0",
+ "href": "https://framework.zend.com/blog/2016-01-28-expressive-1.0-stable.html",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2015-12-11T00:00:00+00:00",
+ "title": "PSR-6: Caching Interface accepted",
+ "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-6-cache.md",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2015-12-03T00:00:00+00:00",
+ "title": "PHP 7.0",
+ "href": "https://www.php.net/releases/7_0_0.php",
+ "description": "A major language renewal comes with the new Zend Engine 3 (PHPNG), numerous improvements and new features. It’s also twice as fast as the previous PHP 5.6 release!",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2015-11-30T00:00:00+00:00",
+ "title": "Symfony 3",
+ "href": "https://symfony.com/blog/symfony-3-0-0-released",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2015-11-19T00:00:00+00:00",
+ "title": "Drupal 8 released",
+ "href": "https://www.drupal.org/blog/drupal-800-released",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2015-11-17T00:00:00+00:00",
+ "title": "Magento 2",
+ "href": "https://magento.com/blog/magento-news/new-era-commerce-innovation",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2015-10-06T00:00:00+00:00",
+ "title": "Rogue Wave acquires Zend",
+ "href": "https://web.archive.org/web/20151010035008/http://www.zend.com/en/resources/news-and-events/newsroom/press/3683_rogue-wave-software-acquires-enterprise-php-leader-zend-acquisition-broadens-enterprise-strength-across-top-five-development-languages",
+ "description": "Zend, the company that had stood behind the language since PHP 3, is bought out by Rogue Wave.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2015-08-24T00:00:00+00:00",
+ "title": "A Field Guide to Elephpants started",
+ "href": "https://afieldguidetoelephpants.net/",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2015-06-08T00:00:00+00:00",
+ "title": "PHP turns 20",
+ "href": "",
+ "description": "Many developers share their PHP stories to mark 20 years of PHP: Ilia Alshanetsky, Cal Evans, Chris Hartjes, Stephan Hochdorfer, Ben Ramsey, Davey Shafik, AWS PHP SDK Blog, Amanda Folson, Michelangelo van Dam, Joe Watkins, Chris Tankersley, Shameer C, Erika Heidi, Matthew Weier O’Phinney, David Carr, Rafael Dohms, Derick Rethans, Wim Godden, Oscar Merida, Patrick Stephan, Rob Allen, Matthew Setter, Matt Raines, Justin Carmony, John Bafford, thePHP.cc.",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2015-05-18T00:00:00+00:00",
+ "title": "PSR-7 HTTP Message Interfaces accepted",
+ "href": "https://mwop.net/blog/2015-05-18-psr-7-accepted.html",
+ "description": "The standard finally settled on how to deal with HTTP requests and responses the OOP way.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2015-03-30T00:00:00+00:00",
+ "title": "CodeIgniter 3",
+ "href": "",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2015-03-22T00:00:00+00:00",
+ "title": "CakePHP 3",
+ "href": "https://web.archive.org/web/20150324162704/https://bakery.cakephp.org/articles/lorenzo/2015/03/22/cakephp_3_0_0_is_here",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2015-02-27T00:00:00+00:00",
+ "title": "Zend JIT Open Sourced",
+ "href": "https://news-web.php.net/php.internals/83994",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2015-02-01T00:00:00+00:00",
+ "title": "Laravel 5",
+ "href": "https://laravel.com/docs/5.0/releases#laravel-5.0",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2014-10-22T00:00:00+00:00",
+ "title": "PSR-0 deprecated in favor of PSR-4",
+ "href": "https://groups.google.com/forum/#!topic/php-fig/7g6n145XlbI",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2014-10-12T00:00:00+00:00",
+ "title": "Yii 2.0",
+ "href": "https://www.yiiframework.com/news/81/yii-2-0-0-is-released",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2014-09-01T00:00:00+00:00",
+ "title": "PHP-Parser 1.0",
+ "href": "https://github.com/nikic/PHP-Parser",
+ "description": "A PHP parser written in PHP that allows a wide range of tools to be created on top of it.",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2014-08-28T00:00:00+00:00",
+ "title": "PHP 5.6",
+ "href": "https://www.php.net/releases/5_6_0.php",
+ "description": "This last major PHP 5 release brings constant scalar expressions, the splat ...
operator for variadic functions and argument unpacking, function and constant import with the use
keyword, phpdbg as an integrated debugger, and operator overloading (yep, PHP has it!) for GMP objects.",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2014-07-30T00:00:00+00:00",
+ "title": "PHP Language Specification",
+ "href": "https://github.com/php/php-langspec/blob/master/spec/00-specification-for-php.md",
+ "description": "Despite its popularity and considerable age, PHP never had a formal specification until 2014. The specification was initially developed at Facebook and later all copyright was transferred to the public domain worldwide.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2014-07-19T00:00:00+00:00",
+ "title": "Wikipedia moves to HHVM",
+ "href": "https://lists.wikimedia.org/pipermail/wikitech-l/2014-July/077690.html",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2014-05-27T00:00:00+00:00",
+ "title": "PHPNG First Announced",
+ "href": "https://www.php.net/archive/2014.php#id2014-05-27-1",
+ "description": "First started with Dmitry Stogov’s message in php.internals, a new generation PHP interpreter is introduced, which goes on to become the basis of PHP 7.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2014-05-06T00:00:00+00:00",
+ "title": "Codeception 2.0",
+ "href": "https://codeception.com/06-06-2014/codeception-2.0-final.html",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2014-04-01T00:00:00+00:00",
+ "title": "Last release of Kohana — R.I.P.",
+ "href": "https://web.archive.org/web/20140411235408/http://forum.kohanaframework.org/discussion/12509/final-releases-of-kohana-beginning-of-ohanzee",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2014-03-28T00:00:00+00:00",
+ "title": "HHVM 3.0",
+ "href": "https://hhvm.com/blog/4349/hhvm-3-0-0",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2014-03-20T00:00:00+00:00",
+ "title": "Facebook introduces Hack",
+ "href": "https://engineering.fb.com/developer-tools/hack-a-new-programming-language-for-hhvm/",
+ "description": "The Hack programming language is born as a PHP dialect and extends PHP with a number of new features. Some of the successful solutions have since made their way into PHP and continue to inspire developers.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2014-02-23T00:00:00+00:00",
+ "title": "PSR-8 Mutually Assured Hug published",
+ "href": "https://github.com/php-fig/fig-standards/blob/master/proposed/psr-8-hug/psr-8-hug.md",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2013-12-03T00:00:00+00:00",
+ "title": "PSR-4 Autoloader accepted",
+ "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2013-09-01T00:00:00+00:00",
+ "title": "Zend Announces 10,000th Zend Certified Engineer",
+ "href": "http://blog.zend.com/2013/09/04/zend-announces-10000th-zend-certified-engineer/",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2013-08-01T00:00:00+00:00",
+ "title": "The League of Extraordinary Packages has started",
+ "href": "https://twitter.com/philsturgeon/status/322409684151701504",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2013-07-05T00:00:00+00:00",
+ "title": "ElisLab looking for new owner for CodeIgniter",
+ "href": "https://ellislab.com/blog/entry/ellislab-seeking-new-owner-for-codeigniter",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2013-07-03T00:00:00+00:00",
+ "title": "Nette 2",
+ "href": "https://github.com/nette/nette/releases/tag/v2.0.0",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2013-06-20T00:00:00+00:00",
+ "title": "PHP 5.5",
+ "href": "https://www.php.net/releases/5_5_0.php",
+ "description": "Generators and coroutines, the finally
keyword, and scalar class name resolution via ::class
. The bundled Zend OPcache extension makes opcode caching available and opens the door to more performance optimizations.",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2013-05-28T00:00:00+00:00",
+ "title": "Laravel 4",
+ "href": "https://web.archive.org/web/20130602115429/http://laravel.com/",
+ "description": "Illuminate, also known as Laravel 4, is re-written from the ground up as a collection of components that integrate with each other to make up a framework. And that’s when the Facades come in.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2013-05-23T00:00:00+00:00",
+ "title": "Stack — the first middlewares in PHP",
+ "href": "https://igor.io/2013/05/23/introducing-stack.html",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2013-05-03T00:00:00+00:00",
+ "title": "Silex 1.0",
+ "href": "https://github.com/fabpot/Silex/releases/tag/v1.0.0",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2013-04-14T00:00:00+00:00",
+ "title": "React v0.3",
+ "href": "https://web.archive.org/web/20131113234811/http://reactphp.org/2013/04/14/v0.3.0.html",
+ "description": "The first public release of ReactPHP proves the async model can be brought into PHP applications. React.js is not yet a thing and is just called “React”.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2013-03-21T00:00:00+00:00",
+ "title": "PHP version 5.3 is the most used version, just ahead of 5.2",
+ "href": "https://w3techs.com/blog/entry/php_version_5_3_is_now_the_most_used_version_just_ahead_of_5_2",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2013-02-13T00:00:00+00:00",
+ "title": "Zend Optimizer+ open sourced",
+ "href": "",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2013-01-08T00:00:00+00:00",
+ "title": "Go! AOP 1.0",
+ "href": "https://github.com/goaop/framework/releases/tag/0.1.0",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2013-01-06T00:00:00+00:00",
+ "title": "PSR-3 Logger Interface accepted",
+ "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2012-09-09T00:00:00+00:00",
+ "title": "Slim 2.0",
+ "href": "https://github.com/codeguy/Slim/releases/tag/2.0.0",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2012-09-04T00:00:00+00:00",
+ "title": "Zend Framework 2.0",
+ "href": "https://framework.zend.com/changelog/2.0.0",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2012-07-08T00:00:00+00:00",
+ "title": "PHP The Right Way",
+ "href": "https://phptherightway.com/",
+ "description": "The “Right Way” becomes the source of PHP wisdom and best practices for developers all around the world.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2012-07-04T00:00:00+00:00",
+ "title": "Phalcon framework released",
+ "href": "",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2012-06-04T00:00:00+00:00",
+ "title": "PSR-1 and PSR-2 accepted",
+ "href": "http://paul-m-jones.com/post/2012/06/04/php-fig-psr-1-and-2-accepted/",
+ "description": "The tabs vs spaces war is over!",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2012-05-08T00:00:00+00:00",
+ "title": "Pimple 1.0",
+ "href": "https://github.com/fabpot/Pimple/releases/tag/v1.0.0",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2012-04-09T00:00:00+00:00",
+ "title": "PHP: a fractal of bad design",
+ "href": "https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/",
+ "description": "The post presents an overview of many PHP problems of the day. Many of them will later be fixed, but PHP haters still refer to the article as a source of truth.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2012-03-06T00:00:00+00:00",
+ "title": "PHP usergroups directory php.ug",
+ "href": "http://php.ug/",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2012-03-01T00:00:00+00:00",
+ "title": "PHP 5.4",
+ "href": "https://www.php.net/releases/5_4_0.php",
+ "description": "Traits, shortened array syntax, and built-in webserver for testing purposes come with significant performance improvements, a reduced memory footprint and over 100 fixed bugs.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2012-02-03T00:00:00+00:00",
+ "title": "Laravel 3",
+ "href": "https://web.archive.org/web/20121025120144/http://forums.laravel.com/viewtopic.php?id=573",
+ "description": "Unit test integration, the Artisan command line interface, database migrations, events, more session drivers and database drivers, integration for “bundles”, and a shiny new website.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2011-11-24T00:00:00+00:00",
+ "title": "Laravel 2",
+ "href": "https://web.archive.org/web/20121025120041/http://forums.laravel.com/viewtopic.php?id=403",
+ "description": "The release introduces support for controllers, making it a fully MVC-compliant framework, built-in support for the inversion of control (IoC) principle, and a templating system called Blade.",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2011-10-16T00:00:00+00:00",
+ "title": "CakePHP 2",
+ "href": "https://web.archive.org/web/20111018074256/https://bakery.cakephp.org/articles/lorenzo/2011/10/16/cakephp_2_0_released",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2011-08-21T00:00:00+00:00",
+ "title": "Composer",
+ "href": "https://groups.google.com/forum/#!topic/composer-dev/3UbUgUibyOo",
+ "description": "By 2011, all major languages already have their own package managers: npm, Bundler, pip, NuGet. Coming in last, PHP receives a state-of-the-art package management tool thanks to Jordi Boggiano, Nils Adermann, and other contributors. index.php
and search.php
.",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2007-07-18T00:00:00+00:00",
+ "title": "Xdebug 2.0",
+ "href": "https://derickrethans.nl/xdebug-2-released.html",
+ "description": "Improved stack traces, execution traces to files, code coverage analysis and much improved remote debugging support.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2007-07-01T00:00:00+00:00",
+ "title": "Kohana 1",
+ "href": "http://kohanaframework.org/",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2007-06-14T00:00:00+00:00",
+ "title": "ElePHPant – the Furry PHP Mascot",
+ "href": "https://web.archive.org/web/20070621023556/http://www.nexen.net/elephpant.php",
+ "description": "Brought into the world by Damien Seguy based on Vincent Pontier’s design.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2006-11-11T00:00:00+00:00",
+ "title": "PHP developers meeting in Paris",
+ "href": "https://derickrethans.nl/files/meeting-notes.html",
+ "description": "First discussion about PHP 6.",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2006-11-02T00:00:00+00:00",
+ "title": "PHP 5.2",
+ "href": "https://www.php.net/releases/5_2_0.php",
+ "description": "With a new memory manager for the Zend Engine and new features such as input filtering, JSON and ZIP extensions, tracking file upload progress, and date and time objects, PHP 5.2 was a big success and remained the most popular version until 2013.",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2006-03-03T00:00:00+00:00",
+ "title": "Zend Framework initial release",
+ "href": "https://web.archive.org/web/20060404214442/http://framework.zend.com/",
+ "description": "Zend Framework was one of the first frameworks developed as a set of reusable components. It’s goal was “extreme simplicity” and “use-at-will architecture”. Released in 2005, it helped bring PHP into the enterprise market.",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2006-02-25T00:00:00+00:00",
+ "title": "CodeIgniter 1",
+ "href": "https://web.archive.org/web/20060303085547/http://www.codeigniter.com:80/",
+ "description": "CodeIgniter was one of the first rapid development frameworks. Not only is it alive and popular to this day, it also inspired developers to produce many subsequent frameworks like Laravel, FuelPHP, Kohana, and Yii.",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2005-11-24T00:00:00+00:00",
+ "title": "PHP 5.1",
+ "href": "https://www.php.net/releases/5_1_0.php",
+ "description": "Completely rewritten date handling code with improved timezone support, PDO enabled by default, and significant performance improvements over PHP 5.0.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2005-10-18T00:00:00+00:00",
+ "title": "Symfony project kicks off",
+ "href": "https://web.archive.org/web/20051023011952/http://www.symfony-project.com/",
+ "description": "Fabien Potencier makes the first import of the Symfony 1 code to the Subversion repository (see changeset).",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2005-08-10T00:00:00+00:00",
+ "title": "PHP 6 with unicode support initiated",
+ "href": "https://externals.io/message/17668",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2005-04-15T00:00:00+00:00",
+ "title": "CakePHP released",
+ "href": "https://web.archive.org/web/20050416071448/http://sputnik.pl/cake/",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 3,
+ "date": "2005-03-15T00:00:00+00:00",
+ "title": "PRADO 2",
+ "href": "https://web.archive.org/web/20060322070507/http://www.xisc.com/forum/viewtopic.php?t=1044",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2004-09-13T00:00:00+00:00",
+ "title": "PRADO version 1",
+ "href": "https://web.archive.org/web/20060514124647/http://www.xisc.com/forum/viewtopic.php?t=7",
+ "description": "The first framework using PHP 5. Prado was inspired by Apache Tapestry, Borland Delphi, and Microsoft ASP.NET.",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2004-07-13T00:00:00+00:00",
+ "title": "PHP 5.0",
+ "href": "https://news-web.php.net/php.announce/50",
+ "description": "Zend Engine II, with a new object model and new extensions (SimpleXML, SOAP, MySQLi, SQLite), greatly improves streams with the ability to access low-level socket operations.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2004-02-04T00:00:00+00:00",
+ "title": "Facebook.com launched as a simple, server-rendered PHP website",
+ "href": "https://web.archive.org/web/20050806011211/http://www.facebook.com/",
+ "description": "",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2003-12-01T00:00:00+00:00",
+ "title": "Dmitry Stogov Joined Zend",
+ "href": "",
+ "description": "Dmitry joins Zend and helps develop most of the core PHP subsystems during PHP 5’s life. Later, Dmitry will go on to lead the PHPNG project, which brings the speed of PHP 7 to a new level. Dmitry currently works at Zend by Perforce as a Principal Engineer and leads the development of the JIT compiler for PHP.",
+ "comment": ""
+ },
+ {
+ "priority": 2,
+ "date": "2003-10-22T00:00:00+00:00",
+ "title": "Mojavi 1.0 ",
+ "href": "http://web.archive.org/web/20040520071127/http://www.mojavi.org/",
+ "description": "",
+ "comment": "???"
+ },
+ {
+ "priority": 1,
+ "date": "2003-05-27T00:00:00+00:00",
+ "title": "First Release of WordPress",
+ "href": "https://wordpress.org/news/2003/05/wordpress-now-available/",
+ "description": "The most popular CMS in the world first appears as a fork of b2. It used the same file structure as its predecessor, and continued the numbering from its last release, 0.6. Major releases of WordPress are codenamed after well-known jazz musicians, starting from version 1.0. Today, WordPress is used by more than one third of all websites on the internet.",
+ "comment": ""
+ },
+ {
+ "priority": 1,
+ "date": "2002-12-30T00:00:00+00:00",
+ "title": "PHP Look Back by Derick Rethans",
+ "href": "https://derickrethans.nl/php_look_back.html",
+ "description": "On 11-Feb Erik was wondering if people who “keep telling me PHP is a dead end, it’s in fact a dying language..” are just making it up or not.
Back when PHP had less than 100 functions and the function hashing mechanism was strlen(). In order to get a nice hash distribution of function names across the various function name lengths names were picked specifically to make them fit into a specific length bucket.", + "comment": "Fun fact" + }, + { + "priority": 1, + "date": "1994-01-01T00:00:00+00:00", + "title": "Rasmus Lerdorf starts working on PHP", + "href": "", + "description": "The very first incarnation of PHP is a simple set of Common Gateway Interface (CGI) binaries written in the C programming language (not Perl). Originally used for tracking visits to Rasmus Lerdorf’s online resume, he named the suite of scripts “Personal Home Page Tools,” more commonly referenced as “PHP Tools”.", + "comment": "Date unknown" + } +] diff --git a/history/timeline.php b/history/timeline.php new file mode 100644 index 0000000000..a69f1e22fa --- /dev/null +++ b/history/timeline.php @@ -0,0 +1,112 @@ + 'history.css']); + +$path = __DIR__ . '/timeline-data.json'; +$events = json_decode(file_get_contents($path), true); + +final readonly class HistoryEntry { + public function __construct( + private string $title, + private string $description, + private DateTimeImmutable $date, + private string $linkHref, + private int $priority, + ) {} + + public function renderHtml(): string + { + $html = <<<"HTML" +
$this->description
"; + } + + return $html . <<<"HTML" ++ Welcome to the PHP Timeline — a curated historical journey of key milestones, releases, and ideas that shaped the PHP language over the years. + Explore the highlights and contributions that helped PHP become one of the most widely used languages on the web. +
++ The Timeline data is opensource and available on GitHub. + If you found a mistake, please feel free to create a pull-request. +
+ + true, 'sidebar' => $SIDEBAR_DATA]); diff --git a/images/i.svg b/images/i.svg new file mode 100644 index 0000000000..c6227f05da --- /dev/null +++ b/images/i.svg @@ -0,0 +1,4 @@ + diff --git a/index.php b/index.php index 42c293ae5b..5b0811c962 100644 --- a/index.php +++ b/index.php @@ -187,6 +187,7 @@ $announcements +