Skip to content

Commit e51338c

Browse files
authored
Merge pull request #378 from phpdocker-io/php84
PHP 8.4
2 parents 90201e1 + 6b4999f commit e51338c

File tree

9 files changed

+159
-1
lines changed

9 files changed

+159
-1
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 = '83'
105+
let chosenVersion = '84'
106106
switch ($(this).val()) {
107107
case '8.1':
108108
chosenVersion = '81'
@@ -111,6 +111,10 @@ function doMainFormMagic () {
111111
case '8.2':
112112
chosenVersion = '82'
113113
break
114+
115+
case '8.3':
116+
chosenVersion = '83'
117+
break
114118
}
115119

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

src/Controller/GeneratorController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ private function hydrateProject(array $formData): Project
7878
PhpOptions::PHP_VERSION_81 => $phpData['phpExtensions81'],
7979
PhpOptions::PHP_VERSION_82 => $phpData['phpExtensions82'],
8080
PhpOptions::PHP_VERSION_83 => $phpData['phpExtensions83'],
81+
PhpOptions::PHP_VERSION_84 => $phpData['phpExtensions84'],
8182
default => throw new InvalidArgumentException(sprintf('Unsupported php version %s', $phpData['version'])),
8283
};
8384

src/Form/Generator/PhpType.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use App\PHPDocker\PhpExtension\Php81AvailableExtensions;
2323
use App\PHPDocker\PhpExtension\Php82AvailableExtensions;
2424
use App\PHPDocker\PhpExtension\Php83AvailableExtensions;
25+
use App\PHPDocker\PhpExtension\Php84AvailableExtensions;
2526
use App\PHPDocker\PhpExtension\PhpExtension;
2627
use App\PHPDocker\Project\ServiceOptions\Php;
2728
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
@@ -96,6 +97,13 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
9697
'label' => 'Extensions (PHP 8.3)',
9798
'required' => false,
9899
'constraints' => $phpOptionsConstraints,
100+
])
101+
->add('phpExtensions84', ChoiceType::class, [
102+
'choices' => $this->getExtensionChoices((new Php84AvailableExtensions())->getOptional()),
103+
'multiple' => true,
104+
'label' => 'Extensions (PHP 8.4)',
105+
'required' => false,
106+
'constraints' => $phpOptionsConstraints,
99107
]);
100108
}
101109

src/PHPDocker/PhpExtension/AvailableExtensionsFactory.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class AvailableExtensionsFactory
2929
private const string PHP_VERSION_81 = '8.1';
3030
private const string PHP_VERSION_82 = '8.2';
3131
private const string PHP_VERSION_83 = '8.3';
32+
private const string PHP_VERSION_84 = '8.4';
3233

3334
/**
3435
* Supported PHP versions
@@ -37,6 +38,7 @@ class AvailableExtensionsFactory
3738
self::PHP_VERSION_81 => Php81AvailableExtensions::class,
3839
self::PHP_VERSION_82 => Php82AvailableExtensions::class,
3940
self::PHP_VERSION_83 => Php83AvailableExtensions::class,
41+
self::PHP_VERSION_84 => Php84AvailableExtensions::class,
4042
];
4143

4244
/**

src/PHPDocker/PhpExtension/Php82AvailableExtensions.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,16 @@ protected function getOptionalExtensionsMap(): array
7878
'MySQL' => ['packages' => ['php8.2-mysql']],
7979
'OAuth' => ['packages' => ['php8.2-oauth']],
8080
'ODBC' => ['packages' => ['php8.2-odbc']],
81+
'OpenTelemetry' => ['packages' => ['php8.2-opentelemetry']],
8182
'Pcov' => ['packages' => ['php8.2-pcov']],
8283
'PostgreSQL' => ['packages' => ['php8.2-pgsql']],
84+
'PostgreSQL (libpq)' => ['packages' => ['php8.2-pq']],
85+
'Phalcon 5' => ['packages' => ['php8.2-phalcon']],
86+
'Pinba' => ['packages' => ['php8.2-pinba']],
8387
'PHPDBG' => ['packages' => ['php8.2-phpdbg']],
88+
'propro' => ['packages' => ['php8.2-propro']],
8489
'Protobuf' => ['packages' => ['php8.2-protobuf']],
90+
'ps' => ['packages' => ['php8.2-ps']],
8591
'pspell' => ['packages' => ['php8.2-pspell']],
8692
'PSR' => ['packages' => ['php8.2-psr']],
8793
'raphf' => ['packages' => ['php8.2-raphf']],
@@ -93,9 +99,12 @@ protected function getOptionalExtensionsMap(): array
9399
'Solr' => ['packages' => ['php8.2-solr']],
94100
'SQLite3' => ['packages' => ['php8.2-sqlite3']],
95101
'ssh2' => ['packages' => ['php8.2-ssh2']],
102+
'STOMP protocol' => ['packages' => ['php8.2-stomp']],
96103
'Swoole' => ['packages' => ['php8.2-swoole']],
97104
'Sybase' => ['packages' => ['php8.2-sybase']],
98105
'Tidy' => ['packages' => ['php8.2-tidy']],
106+
'UOPZ' => ['packages' => ['php8.2-uopz']],
107+
'Upload progress' => ['packages' => ['php8.2-uploadprogress']],
99108
'UUID' => ['packages' => ['php8.2-uuid']],
100109
'vips' => ['packages' => ['php8.2-vips']],
101110
'Xdebug' => ['packages' => ['php8.2-xdebug']],

src/PHPDocker/PhpExtension/Php83AvailableExtensions.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,15 @@ protected function getOptionalExtensionsMap(): array
7878
'MySQL' => ['packages' => ['php8.3-mysql']],
7979
'OAuth' => ['packages' => ['php8.3-oauth']],
8080
'ODBC' => ['packages' => ['php8.3-odbc']],
81+
'OpenTelemetry' => ['packages' => ['php8.3-opentelemetry']],
8182
'Pcov' => ['packages' => ['php8.3-pcov']],
8283
'PostgreSQL' => ['packages' => ['php8.3-pgsql']],
84+
'PostgreSQL (libpq)' => ['packages' => ['php8.3-pq']],
85+
'Phalcon 5' => ['packages' => ['php8.3-phalcon']],
86+
'Pinba' => ['packages' => ['php8.3-pinba']],
8387
'PHPDBG' => ['packages' => ['php8.3-phpdbg']],
8488
'Protobuf' => ['packages' => ['php8.3-protobuf']],
89+
'ps' => ['packages' => ['php8.3-ps']],
8590
'pspell' => ['packages' => ['php8.3-pspell']],
8691
'PSR' => ['packages' => ['php8.3-psr']],
8792
'raphf' => ['packages' => ['php8.3-raphf']],
@@ -93,9 +98,12 @@ protected function getOptionalExtensionsMap(): array
9398
'Solr' => ['packages' => ['php8.3-solr']],
9499
'SQLite3' => ['packages' => ['php8.3-sqlite3']],
95100
'ssh2' => ['packages' => ['php8.3-ssh2']],
101+
'STOMP protocol' => ['packages' => ['php8.3-stomp']],
96102
'Swoole' => ['packages' => ['php8.3-swoole']],
97103
'Sybase' => ['packages' => ['php8.3-sybase']],
98104
'Tidy' => ['packages' => ['php8.3-tidy']],
105+
'UOPZ' => ['packages' => ['php8.3-uopz']],
106+
'Upload progress' => ['packages' => ['php8.3-uploadprogress']],
99107
'UUID' => ['packages' => ['php8.3-uuid']],
100108
'vips' => ['packages' => ['php8.3-vips']],
101109
'Xdebug' => ['packages' => ['php8.3-xdebug']],
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
<?php
2+
declare(strict_types=1);
3+
/**
4+
* Copyright 2023 Luis Alberto Pabón Flores
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*
18+
*/
19+
20+
namespace App\PHPDocker\PhpExtension;
21+
22+
class Php84AvailableExtensions extends BaseAvailableExtensions
23+
{
24+
/**
25+
* @inheritDoc
26+
* @return array<string, array<string, string[]>>
27+
*/
28+
protected function getMandatoryExtensionsMap(): array
29+
{
30+
return [
31+
'cURL' => ['packages' => ['php8.4-curl']],
32+
'MBSTRING' => ['packages' => ['php8.4-mbstring']],
33+
'OPCache' => ['packages' => ['php8.4-opcache']],
34+
'Readline' => ['packages' => ['php8.4-readline']],
35+
'XML' => ['packages' => ['php8.4-xml']],
36+
'Zip' => ['packages' => ['php8.4-zip']],
37+
];
38+
}
39+
40+
/**
41+
* @inheritDoc
42+
* @return array<string, array<string, string[]>>
43+
*/
44+
protected function getOptionalExtensionsMap(): array
45+
{
46+
return [
47+
// 'Decimal' => ['packages' => ['php8.4-decimal']],
48+
// 'GRPC' => ['packages' => ['php8.4-grpc']],
49+
// 'Inotify' => ['packages' => ['php8.4-inotify']],
50+
// 'LZ4' => ['packages' => ['php8.4-lz4']],
51+
// 'Protobuf' => ['packages' => ['php8.4-protobuf']],
52+
// 'Pinba' => ['packages' => ['php8.4-pinba']],
53+
// 'Samba Client' => ['packages' => ['php8.4-smbclient']],
54+
// 'Solr' => ['packages' => ['php8.4-solr']],
55+
// 'Swoole' => ['packages' => ['php8.4-swoole']],
56+
// 'vips' => ['packages' => ['php8.4-vips']],
57+
// 'Xhprof' => ['packages' => ['php8.4-xhprof']],
58+
// 'zstd (Zstandard)' => ['packages' => ['php8.4-zstd']],
59+
60+
'AMQP' => ['packages' => ['php8.4-amqp']],
61+
'AST' => ['packages' => ['php8.4-ast']],
62+
'Bcmath' => ['packages' => ['php8.4-bcmath']],
63+
'bzip2' => ['packages' => ['php8.4-bz2']],
64+
'CGI' => ['packages' => ['php8.4-cgi']],
65+
'DBA' => ['packages' => ['php8.4-dba']],
66+
'DS (Data Structures)' => ['packages' => ['php8.4-ds']],
67+
'Enchant' => ['packages' => ['php8.4-enchant']],
68+
'Excimer' => ['packages' => ['php8.4-excimer']],
69+
'GD' => ['packages' => ['php8.4-gd']],
70+
'Gearman' => ['packages' => ['php8.4-gearman']],
71+
'Gmagick (GraphicsMagick)' => ['packages' => ['php8.4-gmagick']],
72+
'GMP' => ['packages' => ['php8.4-gmp']],
73+
'GNUPG' => ['packages' => ['php8.4-gnupg']],
74+
'HTTP' => ['packages' => ['php8.4-http']],
75+
'igbinary' => ['packages' => ['php8.4-igbinary']],
76+
'ImageMagick' => ['packages' => ['php8.4-imagick']],
77+
'IMAP' => ['packages' => ['php8.4-imap']],
78+
'Interbase' => ['packages' => ['php8.4-interbase']],
79+
'Intl (Internationalisation)' => ['packages' => ['php8.4-intl']],
80+
'LDAP' => ['packages' => ['php8.4-ldap']],
81+
'Libvirt' => ['packages' => ['php8.4-libvirt-php']],
82+
'Mailparse' => ['packages' => ['php8.4-mailparse']],
83+
'MaxMind DB' => ['packages' => ['php8.4-maxminddb']],
84+
'mcrypt' => ['packages' => ['php8.4-mcrypt']],
85+
'Memcache' => ['packages' => ['php8.4-memcache']],
86+
'Memcached' => ['packages' => ['php8.4-memcached']],
87+
'MongoDB' => ['packages' => ['php8.4-mongodb']],
88+
'MessagePack' => ['packages' => ['php8.4-msgpack']],
89+
'MySQL' => ['packages' => ['php8.4-mysql']],
90+
'OAuth' => ['packages' => ['php8.4-oauth']],
91+
'ODBC' => ['packages' => ['php8.4-odbc']],
92+
'OpenTelemetry' => ['packages' => ['php8.4-opentelemetry']],
93+
'Pcov' => ['packages' => ['php8.4-pcov']],
94+
'PostgreSQL' => ['packages' => ['php8.4-pgsql']],
95+
'PostgreSQL (libpq)' => ['packages' => ['php8.4-pq']],
96+
'Phalcon 5' => ['packages' => ['php8.4-phalcon']],
97+
'PHPDBG' => ['packages' => ['php8.4-phpdbg']],
98+
'ps' => ['packages' => ['php8.4-ps']],
99+
'pspell' => ['packages' => ['php8.4-pspell']],
100+
'PSR' => ['packages' => ['php8.4-psr']],
101+
'raphf' => ['packages' => ['php8.4-raphf']],
102+
'Redis' => ['packages' => ['php8.4-redis']],
103+
'rrd' => ['packages' => ['php8.4-rrd']],
104+
'SNMP' => ['packages' => ['php8.4-snmp']],
105+
'SOAP' => ['packages' => ['php8.4-soap']],
106+
'SQLite3' => ['packages' => ['php8.4-sqlite3']],
107+
'ssh2' => ['packages' => ['php8.4-ssh2']],
108+
'STOMP protocol' => ['packages' => ['php8.4-stomp']],
109+
'Sybase' => ['packages' => ['php8.4-sybase']],
110+
'Tidy' => ['packages' => ['php8.4-tidy']],
111+
'UOPZ' => ['packages' => ['php8.4-uopz']],
112+
'Upload progress' => ['packages' => ['php8.4-uploadprogress']],
113+
'UUID' => ['packages' => ['php8.4-uuid']],
114+
'Xdebug' => ['packages' => ['php8.4-xdebug']],
115+
'XMLRPC' => ['packages' => ['php8.4-xmlrpc']],
116+
'XSL' => ['packages' => ['php8.4-xsl']],
117+
'Yac' => ['packages' => ['php8.4-yac']],
118+
'YAML' => ['packages' => ['php8.4-yaml']],
119+
'ZMQ (ZeroMQ)' => ['packages' => ['php8.4-zmq']],
120+
];
121+
}
122+
}

src/PHPDocker/Project/ServiceOptions/Php.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class Php extends Base
3131
public const string PHP_VERSION_81 = '8.1';
3232
public const string PHP_VERSION_82 = '8.2';
3333
public const string PHP_VERSION_83 = '8.3';
34+
public const string PHP_VERSION_84 = '8.4';
3435

3536
private string $version;
3637

@@ -41,6 +42,7 @@ class Php extends Base
4142
* Supported PHP versions
4243
*/
4344
private const array SUPPORTED_VERSIONS = [
45+
self::PHP_VERSION_84,
4446
self::PHP_VERSION_83,
4547
self::PHP_VERSION_82,
4648
self::PHP_VERSION_81,

templates/generator.html.twig

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

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

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

0 commit comments

Comments
 (0)