1
resposta

Erro ao compilar Banco depois de ter inserido a class Endereco

#Erro ao complilar Banco.php, depois de ter inserido a class Enderco fica aparecendo ero de syntax, abaixo segue codigo de Banco.php como tambem o erro: Banco.php

<?php
require_once 'Conta.php';
require_once 'Endereco.php';
require_once 'Titular.php';
require_once 'CPF.php';


$endereco = new Endereco (cidade:'Teresina',bairro: 'Saci',rua: 'Rua 16',num:'16');
$vinicius = new Titular(new CPF('123.456.789-10'),'Vinicius Dias', $endereco);
$primeiraConta = new Conta($vinicius);


$primeiraConta->depositar(500);
$primeiraConta->sacar(300); // isso � ok

echo $primeiraConta->recuperaNomeTitular() . PHP_EOL;
echo $primeiraConta->recuperaCpfTitular() . PHP_EOL;
echo $primeiraConta->recuperaSaldo() . PHP_EOL;

$segundaConta = new Conta($patricia);
$patricia = new Titular(new CPF('698.549.548-10'), 'Patricia', $endereco);
var_dump($primeiraConta);
var_dump($segundaConta);

$outra = new Conta(new Titular(new CPF('123.654.789-01'),'Abcdefg'),$endereco);
unset($segundaConta);
echo Conta::recuperaNumeroDeContas();
## 

Erro:

[{
    "resource": "/c:/Users/gwpo/OneDrive/Área de Trabalho/PHP/src/Banco.php",
    "owner": "_generated_diagnostic_collection_name_#0",
    "severity": 8,
    "message": "syntax error, unexpected ':', expecting ')'",
    "startLineNumber": 8,
    "startColumn": 1,
    "endLineNumber": 8,
    "endColumn": 1.7976931348623157e+308
}]
[{
    "resource": "/c:/Users/gwpo/OneDrive/Área de Trabalho/PHP/src/Banco.php",
    "owner": "_generated_diagnostic_collection_name_#1",
    "code": "1005",
    "severity": 8,
    "message": "Expected 3 arguments. Found 2.",
    "source": "intelephense",
    "startLineNumber": 25,
    "startColumn": 31,
    "endLineNumber": 25,
    "endColumn": 68
}]
1 resposta

Oi, Gleiser, tudo bem?

Encontrei dois problemas no seu código, são eles:

  1. Para criar a segunda conta você está utilizando a classe titular "patricia", só que esta classe titular só está sendo criada na linha de baixo, ou seja, você está utilizando uma classe antes mesmo de ela ser criada. O Php não consegue entender e isso está causando erro.

  2. Na criação da conta "outra", o argumento $endereco está sendo passado fora do construtor da classe Titular, este argumento precisa estar dentro das chaves do construtor da classe Titular. Como esse argumento está sendo passado fora do construtor da classe Titular, o Php entende que você está passando esse argumento para o construtor da classe Conta, e na classe Conta não existe o atributo de $endereco, por isso está acontecendo um erro.

Acredito que com essas alterações seu código voltará a funcionar corretamente.

Espero ter ajudado.

Abraços e bons estudos!