Boa noite. Estou com problemas ao declarar atributos Uso o PHP versão 7.4.18 Fiz dois arquivos o conta.php.
<?php
class Conta
{
private string $nomeDoTitular;
private string $cpfDoTitular ;
private float $saldo;
public function __contruct(string $cpfDoTitular, string $nomeDoTitular)
{
$this->nomeDoTitular = $nomeDoTitular;
$this->cpfDoTitular = $cpfDoTitular;
$this->saldo = 0;
}
public function Sacar ($valorASacar): void
{
if($valorASacar > $this->saldo){
echo "Saldo insuficiente";
return;
}
$this->saldo -=$valorASacar;
}
public function depositar(float $valorADepositar): void
{
if($valorADepositar < 0){
echo "O valor precisa ser positivo";
return;
}
$this->saldo += $valorADepositar;
}
public function transferir (float $valorTransferir, Conta $contaDestino): void
{
if($valorTransferir > $this -> saldo){
echo "Saldo insuficiente";
return;
}
$this -> sacar ($valorTransferir);
$contaDestino -> depositar ($valorTransferir);
}
public function defineCpfTitular(string $cpf)
{
$this->cpfDoTitular = $cpf;
}
public function defineNomeTitular(string $nome)
{
$this->nomeDoTitular = $nome;
}
public function mostraSaldo (): float
{
return $this->saldo;
}
public function mostraCpf (): string
{
return $this->cpfDoTitular;
}
public function mostraNome (): string
{
return $this->nomeDoTitular;
}
}
E o banco.php
<?php
require_once 'src/Conta.php';
$primeiraConta = new Conta('153.170.723-12','Jose');
$primeiraConta->depositar(500);
$primeiraConta->sacar(200);
echo $primeiraConta->mostraSaldo();
echo $primeiraConta->mostraCpf();
echo $primeiraConta->mostraNome();
Porém quando eu tento executar o arquivo banco.php ele apresenta um erro fatal: Uncaught Error: Typed property Conta::$saldo must not be accessed before initialization in C:\Users\flore\Documents\Estudos\Alura\PHP\php-primeiros-passos\projeto\src\Conta.php:31 como se eu não pudesse acessar os dados antes de serem inicialisados. Porque nessa versão do PHP quando você não atribui nenhum valor inicial ao atributo ele vem como unable se não me engano. Quando eu vou ao meu arquivo conta.php e atribuo valores iniciais aos meus atributos como exemplo
class Conta
{
private string $nomeDoTitular='';
private string $cpfDoTitular='' ;
private float $saldo=0;
Ele volta a rodar de boa. Queria saber se tem alguma forma de usar eles sem ter que atribuir esses valores de inicio ou se estou fazendo algo errado.
Agradeço desde já . Ah obs: Eu descrevi a falha de 1 atributo somente la em cima, mas ele acontece com todos os atributos.