Skip to content

Commit 7883806

Browse files
authored
PHP 8.5 (#384)
* Add php 8.5 support to backend * Add support to form javascript * Add missing php 85 selection form data * Remove php 8.1 * Remove config/reference.php
1 parent 28accc4 commit 7883806

File tree

7 files changed

+102
-87
lines changed

7 files changed

+102
-87
lines changed

public/js/main-form.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ function doMainFormMagic () {
102102
phpVersionSelector.on('change', function () {
103103
extensionMultiSelects.parents('.form-group').hide()
104104

105-
let chosenVersion = '84'
105+
let chosenVersion = '85'
106106
switch ($(this).val()) {
107107
case '8.1':
108108
chosenVersion = '81'
@@ -115,6 +115,10 @@ function doMainFormMagic () {
115115
case '8.3':
116116
chosenVersion = '83'
117117
break
118+
119+
case '8.4':
120+
chosenVersion = '84'
121+
break
118122
}
119123

120124
extensionMultiSelects.filter('[id$=' + chosenVersion + ']').parents('.form-group').show()

src/Controller/GeneratorController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ private function hydrateProject(array $formData): Project
7575
$phpData = $formData['phpOptions'];
7676

7777
$extensions = match ($phpData['version']) {
78-
PhpOptions::PHP_VERSION_81 => $phpData['phpExtensions81'],
7978
PhpOptions::PHP_VERSION_82 => $phpData['phpExtensions82'],
8079
PhpOptions::PHP_VERSION_83 => $phpData['phpExtensions83'],
8180
PhpOptions::PHP_VERSION_84 => $phpData['phpExtensions84'],
81+
PhpOptions::PHP_VERSION_85 => $phpData['phpExtensions85'],
8282
default => throw new InvalidArgumentException(sprintf('Unsupported php version %s', $phpData['version'])),
8383
};
8484

src/Form/Generator/PhpType.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919

2020
namespace App\Form\Generator;
2121

22-
use App\PHPDocker\PhpExtension\Php81AvailableExtensions;
2322
use App\PHPDocker\PhpExtension\Php82AvailableExtensions;
2423
use App\PHPDocker\PhpExtension\Php83AvailableExtensions;
2524
use App\PHPDocker\PhpExtension\Php84AvailableExtensions;
25+
use App\PHPDocker\PhpExtension\Php85AvailableExtensions;
2626
use App\PHPDocker\PhpExtension\PhpExtension;
2727
use App\PHPDocker\Project\ServiceOptions\Php;
2828
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
@@ -77,13 +77,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
7777
new Choice(choices: Php::getSupportedVersions()),
7878
],
7979
])
80-
->add('phpExtensions81', ChoiceType::class, [
81-
'choices' => $this->getExtensionChoices((new Php81AvailableExtensions())->getOptional()),
82-
'multiple' => true,
83-
'label' => 'Extensions (PHP 8.1)',
84-
'required' => false,
85-
'constraints' => $phpOptionsConstraints,
86-
])
8780
->add('phpExtensions82', ChoiceType::class, [
8881
'choices' => $this->getExtensionChoices((new Php82AvailableExtensions())->getOptional()),
8982
'multiple' => true,
@@ -104,6 +97,13 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
10497
'label' => 'Extensions (PHP 8.4)',
10598
'required' => false,
10699
'constraints' => $phpOptionsConstraints,
100+
])
101+
->add('phpExtensions85', ChoiceType::class, [
102+
'choices' => $this->getExtensionChoices((new Php85AvailableExtensions())->getOptional()),
103+
'multiple' => true,
104+
'label' => 'Extensions (PHP 8.5)',
105+
'required' => false,
106+
'constraints' => $phpOptionsConstraints,
107107
]);
108108
}
109109

src/PHPDocker/PhpExtension/AvailableExtensionsFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,19 @@
2626
*/
2727
class AvailableExtensionsFactory
2828
{
29-
private const string PHP_VERSION_81 = '8.1';
3029
private const string PHP_VERSION_82 = '8.2';
3130
private const string PHP_VERSION_83 = '8.3';
3231
private const string PHP_VERSION_84 = '8.4';
32+
private const string PHP_VERSION_85 = '8.5';
3333

3434
/**
3535
* Supported PHP versions
3636
*/
3737
private const array SUPPORTED_VERSIONS = [
38-
self::PHP_VERSION_81 => Php81AvailableExtensions::class,
3938
self::PHP_VERSION_82 => Php82AvailableExtensions::class,
4039
self::PHP_VERSION_83 => Php83AvailableExtensions::class,
4140
self::PHP_VERSION_84 => Php84AvailableExtensions::class,
41+
self::PHP_VERSION_85 => Php85AvailableExtensions::class,
4242
];
4343

4444
/**

src/PHPDocker/PhpExtension/Php81AvailableExtensions.php renamed to src/PHPDocker/PhpExtension/Php85AvailableExtensions.php

Lines changed: 82 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
declare(strict_types=1);
3-
/*
4-
* Copyright 2021 Luis Alberto Pabón Flores
3+
/**
4+
* Copyright 2026 Luis Alberto Pabón Flores
55
*
66
* Licensed under the Apache License, Version 2.0 (the "License");
77
* you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@
1919

2020
namespace App\PHPDocker\PhpExtension;
2121

22-
class Php81AvailableExtensions extends BaseAvailableExtensions
22+
class Php85AvailableExtensions extends BaseAvailableExtensions
2323
{
2424
/**
2525
* @inheritDoc
@@ -28,12 +28,12 @@ class Php81AvailableExtensions extends BaseAvailableExtensions
2828
protected function getMandatoryExtensionsMap(): array
2929
{
3030
return [
31-
'cURL' => ['packages' => ['php8.1-curl']],
32-
'MBSTRING' => ['packages' => ['php8.1-mbstring']],
33-
'OPCache' => ['packages' => ['php8.1-opcache']],
34-
'Readline' => ['packages' => ['php8.1-readline']],
35-
'XML' => ['packages' => ['php8.1-xml']],
36-
'Zip' => ['packages' => ['php8.1-zip']],
31+
'cURL' => ['packages' => ['php8.5-curl']],
32+
'MBSTRING' => ['packages' => ['php8.5-mbstring']],
33+
'OPCache' => ['packages' => ['php8.5-opcache']],
34+
'Readline' => ['packages' => ['php8.5-readline']],
35+
'XML' => ['packages' => ['php8.5-xml']],
36+
'Zip' => ['packages' => ['php8.5-zip']],
3737
];
3838
}
3939

@@ -44,68 +44,79 @@ protected function getMandatoryExtensionsMap(): array
4444
protected function getOptionalExtensionsMap(): array
4545
{
4646
return [
47-
'AMQP' => ['packages' => ['php8.1-amqp']],
48-
'AST' => ['packages' => ['php8.1-ast']],
49-
'Bcmath' => ['packages' => ['php8.1-bcmath']],
50-
'bzip2' => ['packages' => ['php8.1-bz2']],
51-
'CGI' => ['packages' => ['php8.1-cgi']],
52-
'DBA' => ['packages' => ['php8.1-dba']],
53-
'Decimal' => ['packages' => ['php8.1-decimal']],
54-
'DS (Data Structures)' => ['packages' => ['php8.1-ds']],
55-
'Enchant' => ['packages' => ['php8.1-enchant']],
56-
'GD' => ['packages' => ['php8.1-gd']],
57-
'Gearman' => ['packages' => ['php8.1-gearman']],
58-
'Gmagick (GraphicsMagick)' => ['packages' => ['php8.1-gmagick']],
59-
'GMP' => ['packages' => ['php8.1-gmp']],
60-
'GNUPG' => ['packages' => ['php8.1-gnupg']],
61-
'GRPC' => ['packages' => ['php8.1-grpc']],
62-
'HTTP' => ['packages' => ['php8.1-http']],
63-
'igbinary' => ['packages' => ['php8.1-igbinary']],
64-
'ImageMagick' => ['packages' => ['php8.1-imagick']],
65-
'IMAP' => ['packages' => ['php8.1-imap']],
66-
'Inotify' => ['packages' => ['php8.1-inotify']],
67-
'Interbase' => ['packages' => ['php8.1-interbase']],
68-
'Intl (Internationalisation)' => ['packages' => ['php8.1-intl']],
69-
'LDAP' => ['packages' => ['php8.1-ldap']],
70-
'LZ4' => ['packages' => ['php8.1-lz4']],
71-
'Mailparse' => ['packages' => ['php8.1-mailparse']],
72-
'MaxMind DB' => ['packages' => ['php8.1-maxminddb']],
73-
'mcrypt' => ['packages' => ['php8.1-mcrypt']],
74-
'Memcache' => ['packages' => ['php8.1-memcache']],
75-
'Memcached' => ['packages' => ['php8.1-memcached']],
76-
'MongoDB' => ['packages' => ['php8.1-mongodb']],
77-
'MessagePack' => ['packages' => ['php8.1-msgpack']],
78-
'MySQL' => ['packages' => ['php8.1-mysql']],
79-
'OAuth' => ['packages' => ['php8.1-oauth']],
80-
'ODBC' => ['packages' => ['php8.1-odbc']],
81-
'Pcov' => ['packages' => ['php8.1-pcov']],
82-
'PostgreSQL' => ['packages' => ['php8.1-pgsql']],
83-
'PHPDBG' => ['packages' => ['php8.1-phpdbg']],
84-
'Protobuf' => ['packages' => ['php8.1-protobuf']],
85-
'pspell' => ['packages' => ['php8.1-pspell']],
86-
'PSR' => ['packages' => ['php8.1-psr']],
87-
'raphf' => ['packages' => ['php8.1-raphf']],
88-
'Redis' => ['packages' => ['php8.1-redis']],
89-
'rrd' => ['packages' => ['php8.1-rrd']],
90-
'Samba Client' => ['packages' => ['php8.1-smbclient']],
91-
'SNMP' => ['packages' => ['php8.1-snmp']],
92-
'SOAP' => ['packages' => ['php8.1-soap']],
93-
'Solr' => ['packages' => ['php8.1-solr']],
94-
'SQLite3' => ['packages' => ['php8.1-sqlite3']],
95-
'ssh2' => ['packages' => ['php8.1-ssh2']],
96-
'Swoole' => ['packages' => ['php8.1-swoole']],
97-
'Sybase' => ['packages' => ['php8.1-sybase']],
98-
'Tidy' => ['packages' => ['php8.1-tidy']],
99-
'UUID' => ['packages' => ['php8.1-uuid']],
100-
'vips' => ['packages' => ['php8.1-vips']],
101-
'Xdebug' => ['packages' => ['php8.1-xdebug']],
102-
'Xhprof' => ['packages' => ['php8.1-xhprof']],
103-
'XMLRPC' => ['packages' => ['php8.1-xmlrpc']],
104-
'XSL' => ['packages' => ['php8.1-xsl']],
105-
'Yac' => ['packages' => ['php8.1-yac']],
106-
'YAML' => ['packages' => ['php8.1-yaml']],
107-
'ZMQ (ZeroMQ)' => ['packages' => ['php8.1-zmq']],
108-
'zstd (Zstandard)' => ['packages' => ['php8.1-zstd']],
47+
// 'Decimal' => ['packages' => ['php8.5-decimal']],
48+
// 'GRPC' => ['packages' => ['php8.5-grpc']],
49+
// 'Inotify' => ['packages' => ['php8.5-inotify']],
50+
// 'LZ4' => ['packages' => ['php8.5-lz4']],
51+
// 'Protobuf' => ['packages' => ['php8.5-protobuf']],
52+
// 'Pinba' => ['packages' => ['php8.5-pinba']],
53+
// 'Samba Client' => ['packages' => ['php8.5-smbclient']],
54+
// 'Solr' => ['packages' => ['php8.5-solr']],
55+
// 'Swoole' => ['packages' => ['php8.5-swoole']],
56+
// 'vips' => ['packages' => ['php8.5-vips']],
57+
// 'Xhprof' => ['packages' => ['php8.5-xhprof']],
58+
// 'zstd (Zstandard)' => ['packages' => ['php8.5-zstd']],
59+
60+
'AMQP' => ['packages' => ['php8.5-amqp']],
61+
'AST' => ['packages' => ['php8.5-ast']],
62+
'Bcmath' => ['packages' => ['php8.5-bcmath']],
63+
'bzip2' => ['packages' => ['php8.5-bz2']],
64+
'CGI' => ['packages' => ['php8.5-cgi']],
65+
'DBA' => ['packages' => ['php8.5-dba']],
66+
'DS (Data Structures)' => ['packages' => ['php8.5-ds']],
67+
'Enchant' => ['packages' => ['php8.5-enchant']],
68+
'Excimer' => ['packages' => ['php8.5-excimer']],
69+
'GD' => ['packages' => ['php8.5-gd']],
70+
'Gearman' => ['packages' => ['php8.5-gearman']],
71+
'Gmagick (GraphicsMagick)' => ['packages' => ['php8.5-gmagick']],
72+
'GMP' => ['packages' => ['php8.5-gmp']],
73+
'GNUPG' => ['packages' => ['php8.5-gnupg']],
74+
'HTTP' => ['packages' => ['php8.5-http']],
75+
'igbinary' => ['packages' => ['php8.5-igbinary']],
76+
'ImageMagick' => ['packages' => ['php8.5-imagick']],
77+
'IMAP' => ['packages' => ['php8.5-imap']],
78+
'Interbase' => ['packages' => ['php8.5-interbase']],
79+
'Intl (Internationalisation)' => ['packages' => ['php8.5-intl']],
80+
'LDAP' => ['packages' => ['php8.5-ldap']],
81+
'Libvirt' => ['packages' => ['php8.5-libvirt-php']],
82+
'Mailparse' => ['packages' => ['php8.5-mailparse']],
83+
'MaxMind DB' => ['packages' => ['php8.5-maxminddb']],
84+
'mcrypt' => ['packages' => ['php8.5-mcrypt']],
85+
'Memcache' => ['packages' => ['php8.5-memcache']],
86+
'Memcached' => ['packages' => ['php8.5-memcached']],
87+
'MongoDB' => ['packages' => ['php8.5-mongodb']],
88+
'MessagePack' => ['packages' => ['php8.5-msgpack']],
89+
'MySQL' => ['packages' => ['php8.5-mysql']],
90+
'OAuth' => ['packages' => ['php8.5-oauth']],
91+
'ODBC' => ['packages' => ['php8.5-odbc']],
92+
'OpenTelemetry' => ['packages' => ['php8.5-opentelemetry']],
93+
'Pcov' => ['packages' => ['php8.5-pcov']],
94+
'PostgreSQL' => ['packages' => ['php8.5-pgsql']],
95+
'PostgreSQL (libpq)' => ['packages' => ['php8.5-pq']],
96+
'Phalcon 5' => ['packages' => ['php8.5-phalcon']],
97+
'PHPDBG' => ['packages' => ['php8.5-phpdbg']],
98+
'ps' => ['packages' => ['php8.5-ps']],
99+
'pspell' => ['packages' => ['php8.5-pspell']],
100+
'PSR' => ['packages' => ['php8.5-psr']],
101+
'raphf' => ['packages' => ['php8.5-raphf']],
102+
'Redis' => ['packages' => ['php8.5-redis']],
103+
'rrd' => ['packages' => ['php8.5-rrd']],
104+
'SNMP' => ['packages' => ['php8.5-snmp']],
105+
'SOAP' => ['packages' => ['php8.5-soap']],
106+
'SQLite3' => ['packages' => ['php8.5-sqlite3']],
107+
'ssh2' => ['packages' => ['php8.5-ssh2']],
108+
'STOMP protocol' => ['packages' => ['php8.5-stomp']],
109+
'Sybase' => ['packages' => ['php8.5-sybase']],
110+
'Tidy' => ['packages' => ['php8.5-tidy']],
111+
'UOPZ' => ['packages' => ['php8.5-uopz']],
112+
'Upload progress' => ['packages' => ['php8.5-uploadprogress']],
113+
'UUID' => ['packages' => ['php8.5-uuid']],
114+
'Xdebug' => ['packages' => ['php8.5-xdebug']],
115+
'XMLRPC' => ['packages' => ['php8.5-xmlrpc']],
116+
'XSL' => ['packages' => ['php8.5-xsl']],
117+
'Yac' => ['packages' => ['php8.5-yac']],
118+
'YAML' => ['packages' => ['php8.5-yaml']],
119+
'ZMQ (ZeroMQ)' => ['packages' => ['php8.5-zmq']],
109120
];
110121
}
111122
}

src/PHPDocker/Project/ServiceOptions/Php.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
*/
2929
class Php extends Base
3030
{
31-
public const string PHP_VERSION_81 = '8.1';
3231
public const string PHP_VERSION_82 = '8.2';
3332
public const string PHP_VERSION_83 = '8.3';
3433
public const string PHP_VERSION_84 = '8.4';
34+
public const string PHP_VERSION_85 = '8.5';
3535

3636
private string $version;
3737

@@ -42,10 +42,10 @@ class Php extends Base
4242
* Supported PHP versions
4343
*/
4444
private const array SUPPORTED_VERSIONS = [
45+
self::PHP_VERSION_85,
4546
self::PHP_VERSION_84,
4647
self::PHP_VERSION_83,
4748
self::PHP_VERSION_82,
48-
self::PHP_VERSION_81,
4949
];
5050

5151
/**

templates/generator.html.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@
5858
</div>
5959

6060
<div class="col col-lg-6 col-md-6">
61+
{{ form_row(attribute(form.phpOptions, 'phpExtensions85')) }}
62+
6163
{{ form_row(attribute(form.phpOptions, 'phpExtensions84')) }}
6264

6365
{{ form_row(attribute(form.phpOptions, 'phpExtensions83')) }}
6466

6567
{{ form_row(attribute(form.phpOptions, 'phpExtensions82')) }}
66-
67-
{{ form_row(attribute(form.phpOptions, 'phpExtensions81')) }}
6868
</div>
6969
</div>
7070
</div>

0 commit comments

Comments
 (0)