2
respostas

[Dúvida] Erro ao executar classe teste

Olá, espero que estejam bem! Ao tentar executar a classe de teste no terminal, estou recebendo a seguinte mensagem: Could not open input file: testeTarifa.php

Ao tentar executar a classe de teste no PHP Storm, estou recebendo a seguinte mensagem: Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port). PHP Fatal error: Uncaught Error: Class "Alura\Banco\Modelo\Conta\Conta" not found in C:\Users\devsf\Downloads\php-oo-parte-2-aula-2-completa\src\testeTarifa.php:8 Stack trace: #0 {main} thrown in C:\Users\devsf\Downloads\php-oo-parte-2-aula-2-completa\src\testeTarifa.php on line 8

Quando eu adiciono o requireonce "autoload.php"; no arquivo, tenho a seguinte mensagem: C:\php\php.exe C:\Users\devsf\Downloads\php-oo-parte-2-aula-2-completa\src\testeTarifa.php Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port). PHP Warning: require_once(autoload.php): Failed to open stream: No such file or directory in C:\Users\devsf\Downloads\php-oo-parte-2-aula-2-completa\src\testeTarifa.php on line 6 PHP Fatal error: Uncaught Error: Failed opening required 'autoload.php' (include_path='.;C:\php\pear') in C:\Users\devsf\Downloads\php-oo-parte-2-aula-2-completa\src\testeTarifa.php:6 Stack trace: #0 {main} thrown in C:\Users\devsf\Downloads\php-oo-parte-2-aula-2-completa\src\testeTarifa.php on line 6

A estrutura consiste em: (https://cdn1.gnarususercontent.com.br/1/941122/d8f72ecf-ba1f-4d63-af50-f24aec78caa0.png)

O codigo consiste em:

`<?php

use Alura\Banco\Modelo\Conta\Conta; use Alura\Banco\Modelo\Conta\Titular; use Alura\Banco\Modelo\Endereco; require_once "autoload.php";

$conta = new Conta ( new Titular( new CPF("123.456.789-10"), 'MAYARA', new Endereco( 'Mairiporã', 'Portão', 'Lago dos Patos', '1.400') ) );

$conta->deposita(1000); $conta->saca(100);

echo $conta->recuperaSaldo(); `

O classe Conta consiste em;

<?php

namespace Alura\Banco\Modelo\Conta;

class Conta
{
    private $titular;
    private $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 saca(float $valorASacar): void
    {

        $tarifa= $valorASacar * 1.5;
        if ($valorASacar > $this->saldo + $tarifa) {
            echo "Saldo indisponível";
            return;
        }

        $this->saldo -= $valorASacar;
    }

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

        $this->saldo += $valorADepositar;
    }

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

        $this->saca($valorATransferir);
        $contaDestino->deposita($valorATransferir);
    }

    public function recuperaSaldo(): 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 self::$numeroDeContas;
    }
}
2 respostas

testeTarifa.php está dentro da pasta src. Você provavelmente está tentando executá-la a partir da raiz do projeto, por isso a mensagem:

Could not open input file: testeTarifa.php

Além disso, como ela está dentro de src, o caminho para o autoload.php passa a estar errado. Só mover esse arquivo para a raiz que tudo deve funcionar.

e só complementando que o require depende de caminho relativo, ou o arquivo chamado estar no path das variáveis de include do php no php.ini