Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Arquivo novo para class vs code

Olá, 06 composição de objetos 02 criando a classe titular, nesta aula ele criou uma nova class desta forma no php storm, Clicaremos com o botão direito na pasta "src" e em seguida em "New > PHP Class" de modo a criarmos a nova classe. Nela, definiremos os atributos privados $cpf e $nome e criaremos um construtor __construct(), algo que pode ser facilitado digitando apenas __cons e apertando "Tab" ou "Enter". Não consegui criar um arquivo como class no vs code então tentei criando arquivo normal passando todos os códigos para ele mas ele não reconhece Titular no arquivo principal da Conta.php

4 respostas

Olá, Luiz. Não entendi bem sua dúvida.

Você quer uma facilidade do VS Code para que ele gere a estrutura da classe pra você, assim como o PHPStorm faz?

Não, no final do video voce pede para retornar a as funções para recuperarNomeTitular no arquivo conta.php fiz assim:

public function recuperaNomeTitular(): string
{
    return $this -> titular -> recuperaNome();
}

public function recuperacpfTitular(): string
{
    return $this -> titular -> recuperacpf();
}

e meu vs code esta dando erro essas linhas return $this -> titular -> recuperaNome(); return $this -> titular -> recuperacpf(); que faz dar erro no arquivo banco.php tbm aparece esse problema aqui

{
    "resource": "/c:/Users/luize/OneDrive/Documentos/alura/Projeto/scr/conta.php",
    "owner": "_generated_diagnostic_collection_name_#2",
    "code": "1006",
    "severity": 8,
    "message": "Expected type 'object'. Found 'string'.",
    "source": "intelephense",
    "startLineNumber": 64,
    "startColumn": 16,
    "endLineNumber": 64,
    "endColumn": 30
}
{
    "resource": "/c:/Users/luize/OneDrive/Documentos/alura/Projeto/scr/conta.php",
    "owner": "_generated_diagnostic_collection_name_#2",
    "code": "1006",
    "severity": 8,
    "message": "Expected type 'object'. Found 'string'.",
    "source": "intelephense",
    "startLineNumber": 69,
    "startColumn": 16,
    "endLineNumber": 69,
    "endColumn": 30
}

Quando fiz o recuperaNomeTitular() programa n reconhece o titular

conta.php

<?php


class Conta
{
    private string $titular;
    private float $saldo;
    private static $numeroDeContas = 0;

    public function __construct(Titular $titular)
    {
        $this ->titular = $titular;
        $this -> saldo = 0;

        self::$numeroDeContas++;
    }

    public function __destruct()
    {
     self::$numeroDeContas--;
    }

    public function sacar (float $valorASacar): void//funcao dentro de uma classe eh um metodo
    {
        if ($valorASacar > $this -> saldo){
            echo "Saldo insuficiente";
            return;
        }

        $this -> saldo -= $valorASacar;//this eh definicao para q todas contas existentes venham bucas dados aq

    }

    public function depositar(float $valorADepositar):void
    {
        if ($valorADepositar < 0){
            echo "valor precisa ser positivo";
            return;
        }

        $this -> saldo += $valorADepositar;  

    }

    public function transferir(float $valorATransferir, Conta $contaDestino):void
    {
        if($valorATransferir > $this->saldo){
            echo "Saldo indisponuivel";
            return;
        }

         $this->sacar($valorATransferir);
        $contaDestino->depositar($valorATransferir);

    }

    public function recuperarSaldo(): float
    {
        return $this->saldo;
    }

    public function recuperaNomeTitular(): string
    {
        return $this->titular->recuperaNome();
    }

    public function recuperaCpfTitular(): string
    {
        return $this->titular->recuperaCpf();
    }

    public static function recuperaNumeroDeContas(): int
    {
        return Conta::$numeroDeContas;
    }

}

Titular.php

<?php

class Titular
{
    private  $cpf;
    private  $nome;


    public function __construct(string $cpf, string $nome)
    {
        $this->cpf = $cpf;
        $this->validaNomeTitular($nome);
        $this->nome = $nome;   
    }

    public function recuperarCpf(): string
    {
        return $this->cpf;
    }

    public function recuperarNome(): string
    {
        return $this->nome;
    }

    private function validaNomeTitular(string $nomeTitular)
    {
        if (strlen($nomeTitular) < 5){
        echo "Nome precisa ter mais do que 5 caracteres";
        exit();
        }
    }

}

banco.php

<?php

require_once 'Conta.php';
require_once 'Titular.php';

$primeiraConta = new Conta(new Titular('123.456.789-10', 'Vinicius Dias'));

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

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

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

$outra = new Conta(new Titular('123', 'Abcdefg'));
echo Conta::recuperaNumeroDeContas();
i
solução!

Luiz, eu não entendi o erro. Eu não uso VSCode então não sei como funciona esse json. Você pode mandar um print da saída da execução no terminal, por favor?