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" >
3737 <programlisting role =" php" annotations =" non-interactive" >
3838<![CDATA[
3939<?php
40+
4041enum Naipe
4142{
4243 case Copas;
@@ -59,6 +60,7 @@ enum Naipe
5960 <programlisting role =" php" >
6061<![CDATA[
6162<?php
63+
6264enum Naipe
6365{
6466 case Copas;
@@ -105,6 +107,7 @@ pegar_uma_carta('Espadas');
105107 <programlisting role =" php" >
106108<![CDATA[
107109<?php
110+
108111enum Naipe
109112{
110113 case Copas;
@@ -155,6 +158,7 @@ if ($a !== 'Spades') {
155158 <programlisting role =" php" >
156159<![CDATA[
157160<?php
161+
158162enum 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+
196201enum Naipe: string
197202{
198203 case Copas = 'C';
@@ -235,6 +240,7 @@ enum Naipe: string
235240 <programlisting role =" php" >
236241<![CDATA[
237242<?php
243+
238244enum Naipe: string
239245{
240246 case Copas = 'C';
@@ -258,6 +264,7 @@ print Naipe::Paus->value;
258264 <programlisting role =" php" >
259265<![CDATA[
260266<?php
267+
261268enum Naipe: string
262269{
263270 case Copas = 'C';
@@ -307,6 +314,7 @@ $ref = &$naipe->value;
307314 <programlisting role =" php" >
308315<![CDATA[
309316<?php
317+
310318enum Naipe: string
311319{
312320 case Copas = 'C';
@@ -352,6 +360,7 @@ print $naipe->value . "\n";
352360 <programlisting role =" php" >
353361<![CDATA[
354362<?php
363+
355364interface 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+
408418interface 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+
456467interface 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+
511523enum 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+
553566enum Tamanho
554567{
555568 case Pequeno;
@@ -578,14 +591,16 @@ var_dump(Tamanho::Enorme);
578591 <programlisting role =" php" >
579592<![CDATA[
580593<?php
594+
581595interface Colorido
582596{
583597 public function cor(): string;
584598}
585599
586600trait 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.
640656enum 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+
760778enum Naipe
761779{
762780 case Copas;
@@ -796,6 +814,7 @@ var_dump(NaipeApoiado::cases());
796814 <programlisting role =" php" >
797815<![CDATA[
798816<?php
817+
799818enum 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+
871900class A {}
872901class B extends A {}
873902
874903function 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+
960996enum 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+
9891026enum 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+
10281066enum EstadoDeUsuario: string
10291067{
10301068 case Pendente = 'P';
0 commit comments