Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/SYLmi
function name: (null)
number of ops: 33
compiled vars: !0 = $contas, !1 = $resultadoFinal
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
164 0 E > ECHO '%3D%3D%3D+INICIANDO+SISTEMA+BANC%C3%81RIO+FUNCIONAL+%3D%3D%3D%0A%0A'
167 1 NEW $2 'Conta'
2 SEND_VAL_EX 'conta_A'
3 SEND_VAL_EX 0
4 DO_FCALL 0
5 INIT_ARRAY ~4 $2, 'conta_A'
168 6 NEW $5 'Conta'
7 SEND_VAL_EX 'conta_B'
8 SEND_VAL_EX 100
9 DO_FCALL 0
10 ADD_ARRAY_ELEMENT ~4 $5, 'conta_B'
166 11 ASSIGN !0, ~4
172 12 ECHO '---+Processando+Stream+com+DTO+Tipado+%28ResultadoProcessamento%29+---%0A'
173 13 INIT_FCALL 'processarcomidempotencia'
14 SEND_VAR !0
15 INIT_FCALL 'gerarstreamtransacoes'
16 DO_FCALL 0 $8
17 SEND_VAR $8
18 DO_FCALL 0 $9
19 ASSIGN !1, $9
176 20 ECHO '%0A---+SALDO+FINAL+DAS+CONTAS+---%0A'
177 21 INIT_FCALL 'array_walk'
22 FETCH_OBJ_W $11 !1, 'contas'
23 SEND_REF $11
24 DECLARE_LAMBDA_FUNCTION ~12 [0]
179 25 SEND_VAL ~12
177 26 DO_ICALL
181 27 ECHO '%0A---+HIST%C3%93RICO+DE+CHAVES+IDEMPOTENTES+REGISTRADAS+---%0A'
182 28 FETCH_OBJ_R ~14 !1, 'chavesProcessadas'
29 FRAMELESS_ICALL_2 implode ~15 '%2C+', ~14
30 CONCAT ~16 ~15, '%0A'
31 ECHO ~16
32 > RETURN 1
Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/SYLmi
function name: {closure:/in/SYLmi:177}
number of ops: 10
compiled vars: !0 = $conta
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
177 0 E > RECV !0
178 1 ROPE_INIT 5 ~4 'Conta%3A+'
2 FETCH_OBJ_R ~1 !0, 'id'
3 ROPE_ADD 1 ~4 ~4, ~1
4 ROPE_ADD 2 ~4 ~4, '+%7C+Saldo+Final%3A+R%24+'
5 FETCH_OBJ_R ~2 !0, 'saldo'
6 ROPE_ADD 3 ~4 ~4, ~2
7 ROPE_END 4 ~3 ~4, '%0A'
8 ECHO ~3
179 9 > RETURN null
End of Dynamic Function 0
Function depositar:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/SYLmi
function name: depositar
number of ops: 14
compiled vars: !0 = $conta, !1 = $valor
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
70 0 E > RECV !0
1 RECV !1
72 2 NEW $2 'Conta'
3 CHECK_FUNC_ARG
4 FETCH_OBJ_FUNC_ARG $3 !0, 'id'
5 SEND_FUNC_ARG $3
6 FETCH_OBJ_R ~4 !0, 'saldo'
7 ADD ~5 ~4, !1
8 SEND_VAL_EX ~5
9 DO_FCALL 0
10 VERIFY_RETURN_TYPE $2
11 > RETURN $2
73 12* VERIFY_RETURN_TYPE
13* > RETURN null
End of function depositar
Function sacar:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 13
Branch analysis from position: 5
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/SYLmi
function name: sacar
number of ops: 25
compiled vars: !0 = $conta, !1 = $valor
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
75 0 E > RECV !0
1 RECV !1
77 2 FETCH_OBJ_R ~2 !0, 'saldo'
3 IS_SMALLER ~2, !1
4 > JMPZ ~3, ->13
78 5 > NEW $4 'InvalidArgumentException'
6 ROPE_INIT 3 ~7 'Saldo+insuficiente+na+conta+'
7 FETCH_OBJ_R ~5 !0, 'id'
8 ROPE_ADD 1 ~7 ~7, ~5
9 ROPE_END 2 ~6 ~7, '%21'
10 SEND_VAL_EX ~6
11 DO_FCALL 0
12 > THROW 0 $4
80 13 > NEW $10 'Conta'
14 CHECK_FUNC_ARG
15 FETCH_OBJ_FUNC_ARG $11 !0, 'id'
16 SEND_FUNC_ARG $11
17 FETCH_OBJ_R ~12 !0, 'saldo'
18 SUB ~13 ~12, !1
19 SEND_VAL_EX ~13
20 DO_FCALL 0
21 VERIFY_RETURN_TYPE $10
22 > RETURN $10
81 23* VERIFY_RETURN_TYPE
24* > RETURN null
End of function sacar
Function aplicartransacao:
Finding entry points
Branch analysis from position: 0
3 jumps found. (Code = 195) Position 1 = 4, Position 2 = 11, Position 3 = 18
Branch analysis from position: 4
1 jumps found. (Code = 42) Position 1 = 27
Branch analysis from position: 27
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 11
1 jumps found. (Code = 42) Position 1 = 27
Branch analysis from position: 27
Branch analysis from position: 18
1 jumps found. (Code = 108) Position 1 = -2
filename: /in/SYLmi
function name: aplicarTransacao
number of ops: 32
compiled vars: !0 = $conta, !1 = $tx
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
88 0 E > RECV !0
1 RECV !1
90 2 FETCH_OBJ_R ~2 !1, 'tipo'
3 > MATCH ~2, [ 'DEPOSITO':->4, 'SAQUE':->11, ], ->18
91 4 > INIT_FCALL 'depositar'
5 SEND_VAR !0
6 FETCH_OBJ_R ~4 !1, 'valor'
7 SEND_VAL ~4
8 DO_FCALL 0 $5
9 QM_ASSIGN ~6 $5
10 > JMP ->27
92 11 > INIT_FCALL 'sacar'
12 SEND_VAR !0
13 FETCH_OBJ_R ~7 !1, 'valor'
14 SEND_VAL ~7
15 DO_FCALL 0 $8
16 QM_ASSIGN ~6 $8
17 > JMP ->27
93 18 > NEW $9 'InvalidArgumentException'
19 NOP
20 FETCH_OBJ_R ~10 !1, 'tipo'
21 FAST_CONCAT ~11 'Tipo+de+transa%C3%A7%C3%A3o+desconhecido%3A+', ~10
22 SEND_VAL_EX ~11
23 DO_FCALL 0
24 > THROW 1 $9
25* QM_ASSIGN ~6 <true>
26* JMP ->27
27 > FREE ~2
28 VERIFY_RETURN_TYPE ~6
29 > RETURN ~6
95 30* VERIFY_RETURN_TYPE
31* > RETURN null
End of function aplicartransacao
Function criarvalidadorvalorminimo:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/SYLmi
function name: criarValidadorValorMinimo
number of ops: 8
compiled vars: !0 = $valorMinimo, !1 = $operacao
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
102 0 E > RECV !0
104 1 DECLARE_LAMBDA_FUNCTION ~2 [0]
2 BIND_LEXICAL ~2, !0
3 BIND_LEXICAL ~2, !1
107 4 VERIFY_RETURN_TYPE ~2
5 > RETURN ~2
108 6* VERIFY_RETURN_TYPE
7* > RETURN null
Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/SYLmi
function name: {closure:criarValidadorValorMinimo():104}
number of ops: 8
compiled vars: !0 = $valor, !1 = $valorMinimo, !2 = $operacao
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
104 0 E > RECV !0
1 BIND_STATIC !1
2 BIND_STATIC !2
3 DECLARE_LAMBDA_FUNCTION ~3 [0]
4 BIND_LEXICAL ~3, !0
5 BIND_LEXICAL ~3, !1
107 6 > RETURN ~3
7* > RETURN null
Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 13
Branch analysis from position: 5
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/SYLmi
function name: {closure:{closure:criarValidadorValorMinimo():104}:104}
number of ops: 18
compiled vars: !0 = $operacao, !1 = $valor, !2 = $valorMinimo
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
104 0 E > RECV !0
1 BIND_STATIC !1
2 BIND_STATIC !2
105 3 IS_SMALLER !1, !2
4 > JMPZ ~3, ->13
106 5 > NEW $4 'InvalidArgumentException'
6 NOP
7 FAST_CONCAT ~5 'Valor+m%C3%ADnimo+deve+ser+R%24+', !2
8 SEND_VAL_EX ~5
9 DO_FCALL 0
10 > THROW 1 $4
11* QM_ASSIGN ~7 <true>
12* JMP ->16
107 13 > INIT_DYNAMIC_CALL !0
14 DO_FCALL 0 $8
15 QM_ASSIGN ~7 $8
16 > RETURN ~7
17* > RETURN null
End of Dynamic Function 0
End of Dynamic Function 0
End of function criarvalidadorvalorminimo
Function processarcomidempotencia:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 6
Branch analysis from position: 4
1 jumps found. (Code = 42) Position 1 = 10
Branch analysis from position: 10
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 6
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/SYLmi
function name: processarComIdempotencia
number of ops: 27
compiled vars: !0 = $contasIniciais, !1 = $transacoes, !2 = $listaTransacoes, !3 = $estadoInicial
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
116 0 E > RECV !0
1 RECV !1
118 2 TYPE_CHECK 128 !1
3 > JMPZ ~4, ->6
4 > QM_ASSIGN ~5 !1
5 > JMP ->10
6 > INIT_FCALL 'iterator_to_array'
7 SEND_VAR !1
8 DO_ICALL $6
9 QM_ASSIGN ~5 $6
10 > ASSIGN !2, ~5
120 11 NEW $8 'ResultadoProcessamento'
121 12 SEND_VAR_EX !0, 'contas'
122 13 SEND_VAL_EX <array>, 'chavesProcessadas'
14 CHECK_UNDEF_ARGS
120 15 DO_FCALL 1
16 ASSIGN !3, $8
125 17 INIT_FCALL 'array_reduce'
126 18 SEND_VAR !2
127 19 DECLARE_LAMBDA_FUNCTION ~11 [0]
141 20 SEND_VAL ~11
142 21 SEND_VAR !3
125 22 DO_ICALL $12
142 23 VERIFY_RETURN_TYPE $12
24 > RETURN $12
144 25* VERIFY_RETURN_TYPE
26* > RETURN null
Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 15
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 15
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/SYLmi
function name: {closure:processarComIdempotencia():127}
number of ops: 56
compiled vars: !0 = $estado, !1 = $tx, !2 = $contaAtual, !3 = $novaConta
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
127 0 E > RECV !0
1 RECV !1
129 2 INIT_METHOD_CALL !0, 'possuiChave'
3 CHECK_FUNC_ARG
4 FETCH_OBJ_FUNC_ARG $4 !1, 'idempotencyKey'
5 SEND_FUNC_ARG $4
6 DO_FCALL 0 $5
7 > JMPZ $5, ->15
130 8 > ROPE_INIT 3 ~8 '%E2%9A%A0%EF%B8%8F+%5BIDEMPOT%C3%8ANCIA%5D+Transa%C3%A7%C3%A3o+'
9 FETCH_OBJ_R ~6 !1, 'idempotencyKey'
10 ROPE_ADD 1 ~8 ~8, ~6
11 ROPE_END 2 ~7 ~8, '+ignorada+%28j%C3%A1+processada%29.%0A'
12 ECHO ~7
131 13 VERIFY_RETURN_TYPE !0
14 > RETURN !0
134 15 > FETCH_OBJ_R ~11 !1, 'contaId'
16 FETCH_OBJ_IS ~10 !0, 'contas'
17 FETCH_DIM_IS ~12 ~10, ~11
18 COALESCE ~13 ~12
19 NEW $14 'Conta'
20 CHECK_FUNC_ARG
21 FETCH_OBJ_FUNC_ARG $15 !1, 'contaId'
22 SEND_FUNC_ARG $15
23 SEND_VAL_EX 0
24 DO_FCALL 0
25 QM_ASSIGN ~13 $14
26 ASSIGN !2, ~13
135 27 INIT_FCALL 'aplicartransacao'
28 SEND_VAR !2
29 SEND_VAR !1
30 DO_FCALL 0 $18
31 ASSIGN !3, $18
137 32 ROPE_INIT 9 ~25 '%E2%9C%85+Transa%C3%A7%C3%A3o+'
33 FETCH_OBJ_R ~20 !1, 'tipo'
34 ROPE_ADD 1 ~25 ~25, ~20
35 ROPE_ADD 2 ~25 ~25, '+de+R%24+'
36 FETCH_OBJ_R ~21 !1, 'valor'
37 ROPE_ADD 3 ~25 ~25, ~21
38 ROPE_ADD 4 ~25 ~25, '+na+conta+'
39 FETCH_OBJ_R ~22 !1, 'contaId'
40 ROPE_ADD 5 ~25 ~25, ~22
41 ROPE_ADD 6 ~25 ~25, '+conclu%C3%ADda.+Saldo+atual%3A+R%24+'
42 FETCH_OBJ_R ~23 !3, 'saldo'
43 ROPE_ADD 7 ~25 ~25, ~23
44 ROPE_END 8 ~24 ~25, '%0A'
45 ECHO ~24
140 46 INIT_METHOD_CALL !0, 'comTransacao'
47 SEND_VAR_EX !3
48 CHECK_FUNC_ARG
49 FETCH_OBJ_FUNC_ARG $30 !1, 'idempotencyKey'
50 SEND_FUNC_ARG $30
51 DO_FCALL 0 $31
52 VERIFY_RETURN_TYPE $31
53 > RETURN $31
141 54* VERIFY_RETURN_TYPE
55* > RETURN null
End of Dynamic Function 0
End of function processarcomidempotencia
Function gerarstreamtransacoes:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 161) Position 1 = -2
filename: /in/SYLmi
function name: gerarStreamTransacoes
number of ops: 37
compiled vars: none
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
151 0 E > GENERATOR_CREATE
153 1 NEW $0 'Transacao'
2 SEND_VAL_EX 'tx_key_001'
3 SEND_VAL_EX 'DEPOSITO'
4 SEND_VAL_EX 500
5 SEND_VAL_EX 'conta_A'
6 DO_FCALL 0
7 YIELD $0
154 8 NEW $3 'Transacao'
9 SEND_VAL_EX 'tx_key_002'
10 SEND_VAL_EX 'SAQUE'
11 SEND_VAL_EX 150
12 SEND_VAL_EX 'conta_A'
13 DO_FCALL 0
14 YIELD $3
155 15 NEW $6 'Transacao'
16 SEND_VAL_EX 'tx_key_001'
17 SEND_VAL_EX 'DEPOSITO'
18 SEND_VAL_EX 500
19 SEND_VAL_EX 'conta_A'
20 DO_FCALL 0
21 YIELD $6
156 22 NEW $9 'Transacao'
23 SEND_VAL_EX 'tx_key_003'
24 SEND_VAL_EX 'DEPOSITO'
25 SEND_VAL_EX 1000
26 SEND_VAL_EX 'conta_B'
27 DO_FCALL 0
28 YIELD $9
157 29 NEW $12 'Transacao'
30 SEND_VAL_EX 'tx_key_002'
31 SEND_VAL_EX 'SAQUE'
32 SEND_VAL_EX 150
33 SEND_VAL_EX 'conta_A'
34 DO_FCALL 0
35 YIELD $12
158 36 > GENERATOR_RETURN
End of function gerarstreamtransacoes
Class Conta:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/SYLmi
function name: __construct
number of ops: 7
compiled vars: !0 = $id, !1 = $saldo
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
19 0 E > RECV !0
20 1 RECV !1
19 2 ASSIGN_OBJ 'id'
3 OP_DATA !0
20 4 ASSIGN_OBJ 'saldo'
5 OP_DATA !1
21 6 > RETURN null
End of function __construct
End of class Conta.
Class Transacao:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/SYLmi
function name: __construct
number of ops: 13
compiled vars: !0 = $idempotencyKey, !1 = $tipo, !2 = $valor, !3 = $contaId
line #* E I O op fetch ext return operands
-----------------------------------------------------------------------------------------
27 0 E > RECV !0
28 1 RECV !1
29 2 RECV !2
30 3 RECV !3
27 4 ASSIGN_OBJ 'idempotencyKey'
5 OP_DATA !0
28 6 ASSIGN_OBJ 'tipo'
7 OP_DATA !1
29 8 ASSIGN_OBJ 'valor'
9 OP_DATA !2
30 10 ASSIGN_OBJ 'contaId'
11 OP_DATA !3
31 12 > RETURN null
End of function __construct
End of class Transacao.
Class ResultadoProcessamento:
Function __construct:
Finding entryGenerated using Vulcan Logic Dumper, using php 8.5.0