Skip to content

Commit d5a32e8

Browse files
authored
[Sync EN] unserialization: allowed_classes option with enums (#776)
* [Sync EN] unserialization: allowed_classes option with enums Refs: php/doc-en@8af3521 * Update unserialize.xml to reflect deprecation notice
1 parent 2babef3 commit d5a32e8

2 files changed

Lines changed: 63 additions & 15 deletions

File tree

language/enumerations.xml

Lines changed: 52 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?> <!-- EN-Revision: 1eb67bea30f61f7d9cdfd371146911a0ba07bbd2 Maintainer: leonardolara Status: ready --><!-- CREDITS: lhsazevedo,ae,ABDALAZARD,leonardolara -->
1+
<?xml version="1.0" encoding="utf-8"?> <!-- EN-Revision: 8af3521cb43f54c652baaf8dbbcb786b79a5d04e Maintainer: leonardolara Status: ready --><!-- CREDITS: lhsazevedo,ae,ABDALAZARD,leonardolara -->
22
<chapter xml:id="language.enumerations" xmlns="http://docbook.org/ns/docbook" annotations="interactive">
33
<title>Enumerações</title>
44
<sect1 xml:id="language.enumerations.overview">
@@ -37,6 +37,7 @@
3737
<programlisting role="php" annotations="non-interactive">
3838
<![CDATA[
3939
<?php
40+
4041
enum Naipe
4142
{
4243
case Copas;
@@ -59,6 +60,7 @@ enum Naipe
5960
<programlisting role="php">
6061
<![CDATA[
6162
<?php
63+
6264
enum Naipe
6365
{
6466
case Copas;
@@ -105,6 +107,7 @@ pegar_uma_carta('Espadas');
105107
<programlisting role="php">
106108
<![CDATA[
107109
<?php
110+
108111
enum Naipe
109112
{
110113
case Copas;
@@ -155,6 +158,7 @@ if ($a !== 'Spades') {
155158
<programlisting role="php">
156159
<![CDATA[
157160
<?php
161+
158162
enum Naipe
159163
{
160164
case Copas;
@@ -193,6 +197,7 @@ print Naipe::Espadas->name;
193197
<programlisting role="php" annotations="non-interactive">
194198
<![CDATA[
195199
<?php
200+
196201
enum Naipe: string
197202
{
198203
case Copas = 'C';
@@ -235,6 +240,7 @@ enum Naipe: string
235240
<programlisting role="php">
236241
<![CDATA[
237242
<?php
243+
238244
enum Naipe: string
239245
{
240246
case Copas = 'C';
@@ -258,6 +264,7 @@ print Naipe::Paus->value;
258264
<programlisting role="php">
259265
<![CDATA[
260266
<?php
267+
261268
enum Naipe: string
262269
{
263270
case Copas = 'C';
@@ -307,6 +314,7 @@ $ref = &$naipe->value;
307314
<programlisting role="php">
308315
<![CDATA[
309316
<?php
317+
310318
enum Naipe: string
311319
{
312320
case Copas = 'C';
@@ -352,6 +360,7 @@ print $naipe->value . "\n";
352360
<programlisting role="php">
353361
<![CDATA[
354362
<?php
363+
355364
interface Colorido
356365
{
357366
public function cor(): string;
@@ -367,7 +376,7 @@ enum Naipe implements Colorido
367376
// Cumpre o contrato da interface.
368377
public function cor(): string
369378
{
370-
return match($this) {
379+
return match ($this) {
371380
Naipe::Copas, Naipe::Ouros => 'Vermelho',
372381
Naipe::Paus, Naipe::Espadas => 'Preto',
373382
};
@@ -405,6 +414,7 @@ print Naipe::Ouros->forma(); // imprime "Retângulo"
405414
<programlisting role="php" annotations="non-interactive">
406415
<![CDATA[
407416
<?php
417+
408418
interface Colorido
409419
{
410420
public function cor(): string;
@@ -420,7 +430,7 @@ enum Naipe: string implements Colorido
420430
// Cumpre o contrato da interface.
421431
public function cor(): string
422432
{
423-
return match($this) {
433+
return match ($this) {
424434
Naipe::Copas, Naipe::Ouros => 'Vermelho',
425435
Naipe::Paus, Naipe::Espadas => 'Preto',
426436
};
@@ -453,6 +463,7 @@ enum Naipe: string implements Colorido
453463
<programlisting role="php" annotations="non-interactive">
454464
<![CDATA[
455465
<?php
466+
456467
interface Colorido
457468
{
458469
public function cor(): string;
@@ -469,7 +480,7 @@ final class Naipe implements UnitEnum, Colorido
469480
470481
public function cor(): string
471482
{
472-
return match($this) {
483+
return match ($this) {
473484
Naipe::Copas, Naipe::Ouros => 'Vermelho',
474485
Naipe::Paus, Naipe::Espadas => 'Preto',
475486
};
@@ -508,6 +519,7 @@ final class Naipe implements UnitEnum, Colorido
508519
<programlisting role="php">
509520
<![CDATA[
510521
<?php
522+
511523
enum Tamanho
512524
{
513525
case Pequeno;
@@ -516,7 +528,7 @@ enum Tamanho
516528
517529
public static function deComprimento(int $cm): self
518530
{
519-
return match(true) {
531+
return match (true) {
520532
$cm < 50 => self::Pequeno,
521533
$cm < 100 => self::Medio,
522534
default => self::Grande,
@@ -550,6 +562,7 @@ var_dump(Tamanho::fromLength(50));
550562
<programlisting role="php">
551563
<![CDATA[
552564
<?php
565+
553566
enum Tamanho
554567
{
555568
case Pequeno;
@@ -578,14 +591,16 @@ var_dump(Tamanho::Enorme);
578591
<programlisting role="php">
579592
<![CDATA[
580593
<?php
594+
581595
interface Colorido
582596
{
583597
public function cor(): string;
584598
}
585599
586600
trait Retangulo
587601
{
588-
public function forma(): string {
602+
public function forma(): string
603+
{
589604
return "Retângulo";
590605
}
591606
}
@@ -601,7 +616,7 @@ enum Naipe implements Colorido
601616
602617
public function cor(): string
603618
{
604-
return match($this) {
619+
return match ($this) {
605620
Naipe::Copas, Naipe::Ouros => 'Vermelho',
606621
Naipe::Paus, Naipe::Espadas => 'Preto',
607622
};
@@ -636,6 +651,7 @@ var_dump($naipe->forma());
636651
<programlisting role="php" annotations="non-interactive">
637652
<![CDATA[
638653
<?php
654+
639655
// Esta é uma definição de enumeração perfeitamente legal.
640656
enum Direcao implements ArrayAccess
641657
{
@@ -734,6 +750,7 @@ $foo = new Foo();
734750
<programlisting role="php" annotations="non-interactive">
735751
<![CDATA[
736752
<?php
753+
737754
$trevos = new Naipe();
738755
// Erro: Não é possível instanciar a enumeração Naipe
739756
@@ -757,6 +774,7 @@ $ferraduras = (new ReflectionClass(Naipe::class))->newInstanceWithoutConstructor
757774
<programlisting role="php">
758775
<![CDATA[
759776
<?php
777+
760778
enum Naipe
761779
{
762780
case Copas;
@@ -796,6 +814,7 @@ var_dump(NaipeApoiado::cases());
796814
<programlisting role="php">
797815
<![CDATA[
798816
<?php
817+
799818
enum Naipe: string
800819
{
801820
case Copas = 'C';
@@ -816,6 +835,12 @@ print serialize(Naipe::Copas);
816835
Na desserialização, se uma enumeração de um caso não pode ser encontrada para combinar com um valor
817836
serializado, um aviso será emitido e &false; retornado.</para>
818837

838+
<simpara>
839+
A opção <literal>allowed_classes</literal> de
840+
<function>unserialize</function> não afeta
841+
<link linkend="language.enumerations">Enumerações</link>.
842+
</simpara>
843+
819844
<para>
820845
Se uma Enumeração Pura for serializada para JSON, um erro será lançado. Se uma Enumeração Apoiada
821846
for serializada para JSON, ela será representada apenas por seu valor escalar, no
@@ -831,11 +856,14 @@ print serialize(Naipe::Copas);
831856
<programlisting role="php">
832857
<![CDATA[
833858
<?php
834-
enum Foo {
859+
860+
enum Foo
861+
{
835862
case Bar;
836863
}
837864
838-
enum Baz: int {
865+
enum Baz: int
866+
{
839867
case Beep = 5;
840868
}
841869
@@ -868,12 +896,14 @@ Baz Enum:int {
868896
<programlisting role="php" annotations="non-interactive">
869897
<![CDATA[
870898
<?php
899+
871900
class A {}
872901
class B extends A {}
873902
874903
function foo(A $a) {}
875904
876-
function bar(B $b) {
905+
function bar(B $b)
906+
{
877907
foo($b);
878908
}
879909
]]>
@@ -892,7 +922,9 @@ function bar(B $b) {
892922
<programlisting role="php" annotations="non-interactive">
893923
<![CDATA[
894924
<?php
895-
enum ErrorCode {
925+
926+
enum ErrorCode
927+
{
896928
case SOMETHING_BROKE;
897929
}
898930
@@ -919,13 +951,16 @@ function quux(ErrorCode $errorCode)
919951
<programlisting role="php" annotations="non-interactive">
920952
<![CDATA[
921953
<?php
954+
922955
// Apenas para o exemplo onde enumerações não são finais.
923956
// Isto *não* funciona no PHP.
924-
enum MoreErrorCode extends ErrorCode {
957+
enum MoreErrorCode extends ErrorCode
958+
{
925959
case PEBKAC;
926960
}
927961
928-
function fot(MoreErrorCode $errorCode) {
962+
function fot(MoreErrorCode $errorCode)
963+
{
929964
quux($errorCode);
930965
}
931966
@@ -957,6 +992,7 @@ fot(MoreErrorCode::PEBKAC);
957992
<programlisting role="php" annotations="non-interactive">
958993
<![CDATA[
959994
<?php
995+
960996
enum Ordem
961997
{
962998
case Asc;
@@ -986,6 +1022,7 @@ function consulta($campos, $filtros, Ordem $ordem = Ordem::Asc)
9861022
<programlisting role="php">
9871023
<![CDATA[
9881024
<?php
1025+
9891026
enum EstadoDeUsuario: string
9901027
{
9911028
case Pendente = 'P';
@@ -995,7 +1032,7 @@ enum EstadoDeUsuario: string
9951032
9961033
public function rotulo(): string
9971034
{
998-
return match($this) {
1035+
return match ($this) {
9991036
self::Pendente => 'Pendente',
10001037
self::Ativo => 'Ativo',
10011038
self::Suspenso => 'Suspenso',
@@ -1025,6 +1062,7 @@ var_dump($status->rotulo());
10251062
<programlisting role="php">
10261063
<![CDATA[
10271064
<?php
1065+
10281066
enum EstadoDeUsuario: string
10291067
{
10301068
case Pendente = 'P';

reference/var/functions/unserialize.xml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<!-- EN-Revision: a9e47cecca7d5834de43b7641baf5d86828bb153 Maintainer: leonardolara Status: ready -->
2+
<!-- EN-Revision: 8af3521cb43f54c652baaf8dbbcb786b79a5d04e Maintainer: leonardolara Status: ready -->
33
<refentry xml:id="function.unserialize" xmlns="http://docbook.org/ns/docbook">
44
<refnamediv>
55
<refname>unserialize</refname>
@@ -103,6 +103,9 @@
103103
Omitir esta opção é o mesmo que defini-la como &true;: o PHP
104104
tentará instanciar objetos de qualquer classe.
105105
</simpara>
106+
<simpara>
107+
Esta opção não afeta <link linkend="language.enumerations">Enumerações</link>.
108+
</simpara>
106109
</entry>
107110
</row>
108111
<row>
@@ -172,6 +175,13 @@
172175
de <parameter>options</parameter> não for um <type>array</type> de nomes de classes.
173176
</entry>
174177
</row>
178+
<row>
179+
<entry>8.4.0</entry>
180+
<entry>
181+
Desserializar strings usando a tag maiúscula <literal>"S"</literal>
182+
foi descontinuado; use a tag minúscula <literal>"s"</literal> em vez disso.
183+
</entry>
184+
</row>
175185
<row>
176186
<entry>8.3.0</entry>
177187
<entry>

0 commit comments

Comments
 (0)