Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Symfony, PHP and its Foundation​

Nicolas Grekas
December 08, 2023

Symfony, PHP and its Foundation​

This presentation focuses on the development and future of PHP, emphasizing the PHP Foundation's role in sustaining and advancing the language. It highlights the minimal contribution to PHP's development despite its widespread usage and the pivotal role of the PHP Foundation in addressing this gap. The foundation, supported by major PHP-based projects and companies, aims to improve PHP for end-users, ensure high-quality maintenance, and promote PHP's modern image. The talk discusses the foundation's achievements, challenges, and ongoing projects like lazy objects and property hooks, underscoring the importance of community and financial support in shaping PHP's future.

Nicolas Grekas

December 08, 2023
Tweet

More Decks by Nicolas Grekas

Other Decks in Technology

Transcript

  1. 3 • Apple • Facebook • Pfizer • Flipkart •

    Slack • Spotify • Etsy • etc. etc. etc. PHP leads the web
  2. 6 Surviving buses May 4, 2021: Blog post by Joe

    Watkins May 20, 2021: JetBrains reaches out to Joe Nov. 22, 2021: Nikita announces he leaves JetBrains
  3. 7 JetBrains Does it make sense to look for a

    replacement and pay for just one developer again?
  4. 8

  5. 9 Founding companies Acquia Automattic Craft CMS JetBrains Laravel PrestaShop

    Private Packagist Symfony Tideways Zend by Perforce
  6. “The PHP Foundation's mission is to ensure the long-term prosperity

    of the PHP language.” 11 • Improve the language for its users • Provide high-quality maintenance • Retain current contributors and welcome new ones • Promote the public image of PHP php.foundation
  7. 28 class User { public function __construct( private string $first,

    private string $last, ) { } public string $fullName { get => $this->first . ' ' . $this->last; set($v) => [$this->first, $this->last] = explode(' ', $v); } }
  8. 30 $obj = (new ReflectionClass($class))->newInstanceWithoutConstructor(); $r = ReflectionLazyObject::makeLazy($obj, function (object

    $obj) { $args = // compute arguments on demand $obj->__construct(...$args); }); $r->skipProperty($propertyName); // ... ReflectionLazyObject::isLazyObject($obj); $r = ReflectionLazyObject::fromInstance($obj); $r->initialize();
  9. 34 class Response { public readonly int $status; public function

    withStatus($status): static { return clone $this with [ 'status' => $status, ]; } }
  10. Future goals 37 • Hire and mentor more core devs

    • More financial stability • Shape a roadmap
  11. • Cannot hydrate a DateTime instance created without the constructor

    #8152 • Casting an object to array does not unwrap references #8655 • WeakMap prevents garbage collection #10043 • Use zval storage for php://memory stream #11106 • Allow suspending fibers in destructors #11389 • Missing CURL_HTTP_VERSION_3 constant #11755 • Wrong magic methods sequence with ?? operator #12695 40 Get bugs fixed
  12. • Make class_alias() work with internal classes #9826 • Wrong

    closure scope class reported for static methods #8932 • Add support for CURLOPT_QUICK_EXIT #10454 • Allow writing to readonly properties during cloning #9403 • Add ReflectionFunction::isAnonymous() #8499 • Add Stringable interface #5083 41 Improve things
  13. 44