diff --git a/public/js/main-form.js b/public/js/main-form.js index 7f113516..54696755 100644 --- a/public/js/main-form.js +++ b/public/js/main-form.js @@ -102,7 +102,7 @@ function doMainFormMagic () { phpVersionSelector.on('change', function () { extensionMultiSelects.parents('.form-group').hide() - let chosenVersion = '84' + let chosenVersion = '85' switch ($(this).val()) { case '8.1': chosenVersion = '81' @@ -115,6 +115,10 @@ function doMainFormMagic () { case '8.3': chosenVersion = '83' break + + case '8.4': + chosenVersion = '84' + break } extensionMultiSelects.filter('[id$=' + chosenVersion + ']').parents('.form-group').show() diff --git a/src/Controller/GeneratorController.php b/src/Controller/GeneratorController.php index 2089c8c8..33acd7e2 100644 --- a/src/Controller/GeneratorController.php +++ b/src/Controller/GeneratorController.php @@ -75,10 +75,10 @@ private function hydrateProject(array $formData): Project $phpData = $formData['phpOptions']; $extensions = match ($phpData['version']) { - PhpOptions::PHP_VERSION_81 => $phpData['phpExtensions81'], PhpOptions::PHP_VERSION_82 => $phpData['phpExtensions82'], PhpOptions::PHP_VERSION_83 => $phpData['phpExtensions83'], PhpOptions::PHP_VERSION_84 => $phpData['phpExtensions84'], + PhpOptions::PHP_VERSION_85 => $phpData['phpExtensions85'], default => throw new InvalidArgumentException(sprintf('Unsupported php version %s', $phpData['version'])), }; diff --git a/src/Form/Generator/PhpType.php b/src/Form/Generator/PhpType.php index dd8c6fe5..a966b072 100644 --- a/src/Form/Generator/PhpType.php +++ b/src/Form/Generator/PhpType.php @@ -19,10 +19,10 @@ namespace App\Form\Generator; -use App\PHPDocker\PhpExtension\Php81AvailableExtensions; use App\PHPDocker\PhpExtension\Php82AvailableExtensions; use App\PHPDocker\PhpExtension\Php83AvailableExtensions; use App\PHPDocker\PhpExtension\Php84AvailableExtensions; +use App\PHPDocker\PhpExtension\Php85AvailableExtensions; use App\PHPDocker\PhpExtension\PhpExtension; use App\PHPDocker\Project\ServiceOptions\Php; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; @@ -77,13 +77,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void new Choice(choices: Php::getSupportedVersions()), ], ]) - ->add('phpExtensions81', ChoiceType::class, [ - 'choices' => $this->getExtensionChoices((new Php81AvailableExtensions())->getOptional()), - 'multiple' => true, - 'label' => 'Extensions (PHP 8.1)', - 'required' => false, - 'constraints' => $phpOptionsConstraints, - ]) ->add('phpExtensions82', ChoiceType::class, [ 'choices' => $this->getExtensionChoices((new Php82AvailableExtensions())->getOptional()), 'multiple' => true, @@ -104,6 +97,13 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'label' => 'Extensions (PHP 8.4)', 'required' => false, 'constraints' => $phpOptionsConstraints, + ]) + ->add('phpExtensions85', ChoiceType::class, [ + 'choices' => $this->getExtensionChoices((new Php85AvailableExtensions())->getOptional()), + 'multiple' => true, + 'label' => 'Extensions (PHP 8.5)', + 'required' => false, + 'constraints' => $phpOptionsConstraints, ]); } diff --git a/src/PHPDocker/PhpExtension/AvailableExtensionsFactory.php b/src/PHPDocker/PhpExtension/AvailableExtensionsFactory.php index 4af867a1..def90c2a 100644 --- a/src/PHPDocker/PhpExtension/AvailableExtensionsFactory.php +++ b/src/PHPDocker/PhpExtension/AvailableExtensionsFactory.php @@ -26,19 +26,19 @@ */ class AvailableExtensionsFactory { - private const string PHP_VERSION_81 = '8.1'; private const string PHP_VERSION_82 = '8.2'; private const string PHP_VERSION_83 = '8.3'; private const string PHP_VERSION_84 = '8.4'; + private const string PHP_VERSION_85 = '8.5'; /** * Supported PHP versions */ private const array SUPPORTED_VERSIONS = [ - self::PHP_VERSION_81 => Php81AvailableExtensions::class, self::PHP_VERSION_82 => Php82AvailableExtensions::class, self::PHP_VERSION_83 => Php83AvailableExtensions::class, self::PHP_VERSION_84 => Php84AvailableExtensions::class, + self::PHP_VERSION_85 => Php85AvailableExtensions::class, ]; /** diff --git a/src/PHPDocker/PhpExtension/Php81AvailableExtensions.php b/src/PHPDocker/PhpExtension/Php85AvailableExtensions.php similarity index 59% rename from src/PHPDocker/PhpExtension/Php81AvailableExtensions.php rename to src/PHPDocker/PhpExtension/Php85AvailableExtensions.php index 97c90303..4955c576 100644 --- a/src/PHPDocker/PhpExtension/Php81AvailableExtensions.php +++ b/src/PHPDocker/PhpExtension/Php85AvailableExtensions.php @@ -1,7 +1,7 @@ ['packages' => ['php8.1-curl']], - 'MBSTRING' => ['packages' => ['php8.1-mbstring']], - 'OPCache' => ['packages' => ['php8.1-opcache']], - 'Readline' => ['packages' => ['php8.1-readline']], - 'XML' => ['packages' => ['php8.1-xml']], - 'Zip' => ['packages' => ['php8.1-zip']], + 'cURL' => ['packages' => ['php8.5-curl']], + 'MBSTRING' => ['packages' => ['php8.5-mbstring']], + 'OPCache' => ['packages' => ['php8.5-opcache']], + 'Readline' => ['packages' => ['php8.5-readline']], + 'XML' => ['packages' => ['php8.5-xml']], + 'Zip' => ['packages' => ['php8.5-zip']], ]; } @@ -44,68 +44,79 @@ protected function getMandatoryExtensionsMap(): array protected function getOptionalExtensionsMap(): array { return [ - 'AMQP' => ['packages' => ['php8.1-amqp']], - 'AST' => ['packages' => ['php8.1-ast']], - 'Bcmath' => ['packages' => ['php8.1-bcmath']], - 'bzip2' => ['packages' => ['php8.1-bz2']], - 'CGI' => ['packages' => ['php8.1-cgi']], - 'DBA' => ['packages' => ['php8.1-dba']], - 'Decimal' => ['packages' => ['php8.1-decimal']], - 'DS (Data Structures)' => ['packages' => ['php8.1-ds']], - 'Enchant' => ['packages' => ['php8.1-enchant']], - 'GD' => ['packages' => ['php8.1-gd']], - 'Gearman' => ['packages' => ['php8.1-gearman']], - 'Gmagick (GraphicsMagick)' => ['packages' => ['php8.1-gmagick']], - 'GMP' => ['packages' => ['php8.1-gmp']], - 'GNUPG' => ['packages' => ['php8.1-gnupg']], - 'GRPC' => ['packages' => ['php8.1-grpc']], - 'HTTP' => ['packages' => ['php8.1-http']], - 'igbinary' => ['packages' => ['php8.1-igbinary']], - 'ImageMagick' => ['packages' => ['php8.1-imagick']], - 'IMAP' => ['packages' => ['php8.1-imap']], - 'Inotify' => ['packages' => ['php8.1-inotify']], - 'Interbase' => ['packages' => ['php8.1-interbase']], - 'Intl (Internationalisation)' => ['packages' => ['php8.1-intl']], - 'LDAP' => ['packages' => ['php8.1-ldap']], - 'LZ4' => ['packages' => ['php8.1-lz4']], - 'Mailparse' => ['packages' => ['php8.1-mailparse']], - 'MaxMind DB' => ['packages' => ['php8.1-maxminddb']], - 'mcrypt' => ['packages' => ['php8.1-mcrypt']], - 'Memcache' => ['packages' => ['php8.1-memcache']], - 'Memcached' => ['packages' => ['php8.1-memcached']], - 'MongoDB' => ['packages' => ['php8.1-mongodb']], - 'MessagePack' => ['packages' => ['php8.1-msgpack']], - 'MySQL' => ['packages' => ['php8.1-mysql']], - 'OAuth' => ['packages' => ['php8.1-oauth']], - 'ODBC' => ['packages' => ['php8.1-odbc']], - 'Pcov' => ['packages' => ['php8.1-pcov']], - 'PostgreSQL' => ['packages' => ['php8.1-pgsql']], - 'PHPDBG' => ['packages' => ['php8.1-phpdbg']], - 'Protobuf' => ['packages' => ['php8.1-protobuf']], - 'pspell' => ['packages' => ['php8.1-pspell']], - 'PSR' => ['packages' => ['php8.1-psr']], - 'raphf' => ['packages' => ['php8.1-raphf']], - 'Redis' => ['packages' => ['php8.1-redis']], - 'rrd' => ['packages' => ['php8.1-rrd']], - 'Samba Client' => ['packages' => ['php8.1-smbclient']], - 'SNMP' => ['packages' => ['php8.1-snmp']], - 'SOAP' => ['packages' => ['php8.1-soap']], - 'Solr' => ['packages' => ['php8.1-solr']], - 'SQLite3' => ['packages' => ['php8.1-sqlite3']], - 'ssh2' => ['packages' => ['php8.1-ssh2']], - 'Swoole' => ['packages' => ['php8.1-swoole']], - 'Sybase' => ['packages' => ['php8.1-sybase']], - 'Tidy' => ['packages' => ['php8.1-tidy']], - 'UUID' => ['packages' => ['php8.1-uuid']], - 'vips' => ['packages' => ['php8.1-vips']], - 'Xdebug' => ['packages' => ['php8.1-xdebug']], - 'Xhprof' => ['packages' => ['php8.1-xhprof']], - 'XMLRPC' => ['packages' => ['php8.1-xmlrpc']], - 'XSL' => ['packages' => ['php8.1-xsl']], - 'Yac' => ['packages' => ['php8.1-yac']], - 'YAML' => ['packages' => ['php8.1-yaml']], - 'ZMQ (ZeroMQ)' => ['packages' => ['php8.1-zmq']], - 'zstd (Zstandard)' => ['packages' => ['php8.1-zstd']], + // 'Decimal' => ['packages' => ['php8.5-decimal']], + // 'GRPC' => ['packages' => ['php8.5-grpc']], + // 'Inotify' => ['packages' => ['php8.5-inotify']], + // 'LZ4' => ['packages' => ['php8.5-lz4']], + // 'Protobuf' => ['packages' => ['php8.5-protobuf']], + // 'Pinba' => ['packages' => ['php8.5-pinba']], + // 'Samba Client' => ['packages' => ['php8.5-smbclient']], + // 'Solr' => ['packages' => ['php8.5-solr']], + // 'Swoole' => ['packages' => ['php8.5-swoole']], + // 'vips' => ['packages' => ['php8.5-vips']], + // 'Xhprof' => ['packages' => ['php8.5-xhprof']], + // 'zstd (Zstandard)' => ['packages' => ['php8.5-zstd']], + + 'AMQP' => ['packages' => ['php8.5-amqp']], + 'AST' => ['packages' => ['php8.5-ast']], + 'Bcmath' => ['packages' => ['php8.5-bcmath']], + 'bzip2' => ['packages' => ['php8.5-bz2']], + 'CGI' => ['packages' => ['php8.5-cgi']], + 'DBA' => ['packages' => ['php8.5-dba']], + 'DS (Data Structures)' => ['packages' => ['php8.5-ds']], + 'Enchant' => ['packages' => ['php8.5-enchant']], + 'Excimer' => ['packages' => ['php8.5-excimer']], + 'GD' => ['packages' => ['php8.5-gd']], + 'Gearman' => ['packages' => ['php8.5-gearman']], + 'Gmagick (GraphicsMagick)' => ['packages' => ['php8.5-gmagick']], + 'GMP' => ['packages' => ['php8.5-gmp']], + 'GNUPG' => ['packages' => ['php8.5-gnupg']], + 'HTTP' => ['packages' => ['php8.5-http']], + 'igbinary' => ['packages' => ['php8.5-igbinary']], + 'ImageMagick' => ['packages' => ['php8.5-imagick']], + 'IMAP' => ['packages' => ['php8.5-imap']], + 'Interbase' => ['packages' => ['php8.5-interbase']], + 'Intl (Internationalisation)' => ['packages' => ['php8.5-intl']], + 'LDAP' => ['packages' => ['php8.5-ldap']], + 'Libvirt' => ['packages' => ['php8.5-libvirt-php']], + 'Mailparse' => ['packages' => ['php8.5-mailparse']], + 'MaxMind DB' => ['packages' => ['php8.5-maxminddb']], + 'mcrypt' => ['packages' => ['php8.5-mcrypt']], + 'Memcache' => ['packages' => ['php8.5-memcache']], + 'Memcached' => ['packages' => ['php8.5-memcached']], + 'MongoDB' => ['packages' => ['php8.5-mongodb']], + 'MessagePack' => ['packages' => ['php8.5-msgpack']], + 'MySQL' => ['packages' => ['php8.5-mysql']], + 'OAuth' => ['packages' => ['php8.5-oauth']], + 'ODBC' => ['packages' => ['php8.5-odbc']], + 'OpenTelemetry' => ['packages' => ['php8.5-opentelemetry']], + 'Pcov' => ['packages' => ['php8.5-pcov']], + 'PostgreSQL' => ['packages' => ['php8.5-pgsql']], + 'PostgreSQL (libpq)' => ['packages' => ['php8.5-pq']], + 'Phalcon 5' => ['packages' => ['php8.5-phalcon']], + 'PHPDBG' => ['packages' => ['php8.5-phpdbg']], + 'ps' => ['packages' => ['php8.5-ps']], + 'pspell' => ['packages' => ['php8.5-pspell']], + 'PSR' => ['packages' => ['php8.5-psr']], + 'raphf' => ['packages' => ['php8.5-raphf']], + 'Redis' => ['packages' => ['php8.5-redis']], + 'rrd' => ['packages' => ['php8.5-rrd']], + 'SNMP' => ['packages' => ['php8.5-snmp']], + 'SOAP' => ['packages' => ['php8.5-soap']], + 'SQLite3' => ['packages' => ['php8.5-sqlite3']], + 'ssh2' => ['packages' => ['php8.5-ssh2']], + 'STOMP protocol' => ['packages' => ['php8.5-stomp']], + 'Sybase' => ['packages' => ['php8.5-sybase']], + 'Tidy' => ['packages' => ['php8.5-tidy']], + 'UOPZ' => ['packages' => ['php8.5-uopz']], + 'Upload progress' => ['packages' => ['php8.5-uploadprogress']], + 'UUID' => ['packages' => ['php8.5-uuid']], + 'Xdebug' => ['packages' => ['php8.5-xdebug']], + 'XMLRPC' => ['packages' => ['php8.5-xmlrpc']], + 'XSL' => ['packages' => ['php8.5-xsl']], + 'Yac' => ['packages' => ['php8.5-yac']], + 'YAML' => ['packages' => ['php8.5-yaml']], + 'ZMQ (ZeroMQ)' => ['packages' => ['php8.5-zmq']], ]; } } diff --git a/src/PHPDocker/Project/ServiceOptions/Php.php b/src/PHPDocker/Project/ServiceOptions/Php.php index 5402f52d..65c89a2c 100644 --- a/src/PHPDocker/Project/ServiceOptions/Php.php +++ b/src/PHPDocker/Project/ServiceOptions/Php.php @@ -28,10 +28,10 @@ */ class Php extends Base { - public const string PHP_VERSION_81 = '8.1'; public const string PHP_VERSION_82 = '8.2'; public const string PHP_VERSION_83 = '8.3'; public const string PHP_VERSION_84 = '8.4'; + public const string PHP_VERSION_85 = '8.5'; private string $version; @@ -42,10 +42,10 @@ class Php extends Base * Supported PHP versions */ private const array SUPPORTED_VERSIONS = [ + self::PHP_VERSION_85, self::PHP_VERSION_84, self::PHP_VERSION_83, self::PHP_VERSION_82, - self::PHP_VERSION_81, ]; /** diff --git a/templates/generator.html.twig b/templates/generator.html.twig index 30902cd8..8fdae4ff 100644 --- a/templates/generator.html.twig +++ b/templates/generator.html.twig @@ -58,13 +58,13 @@