Ir para conteúdo
Fórum Script Brasil
  • 0

Can't use method return value in write context in D:\xampp\htdocs\ProjetoBanco\ContaBanco.php on line 133


Maxgomesrj

Pergunta

Boa Noite Pessoal!...

Estou aprendendo PHP com orientação a objeto.

Porém eu estou com dificuldades em entender nesta parte.

Peço ajuda.!

A mensagem diz:

Fatal error:  Can't use method return value in write context in D:\xampp\htdocs\ProjetoBanco\ContaBanco.php on line 133

 Erro fatal: não é possível usar o valor de retorno do método no contexto de gravação em D: \ xampp \ htdocs \ ProjetoBanco \ ContaBanco.php na linha 133

Arquivo inde.php

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <pre>
        <?php
        require_once "ContaBanco.php";
        $ps1 = new ContaBanco(); // Juvileu.
        $ps2 = new ContaBanco(); //Creuza.
        $ps1->abrirConta("cc");
        $ps1->setNumConta(111);
        $ps1->setDono("Jubileu");
        $ps2->abrirConta("cp");
        $ps2->setDono("Creuza");
        $ps2->setNumConta(222);
        
        $ps1->depositar(300);
        $ps2->depositar(500);
        
        $ps2->sacar(100);
        
        $ps1->pagarMensal();
        $ps2->pagarMensa();
        
        $ps1->fecharConta();
        $ps2->fecharConta();
        
        print_r($p1);
        print_r($p2);
        
        ?>
        </pre>
    </body>
</html>

 

Arquivo ContaBanco.php

<?php

class ContaBanco {
    //Atributos
    public $numConta;
    protected $tipo;
    private $dono;
    private $saldo;
    private $status;
    
    //Métodos
    

    function __construct($saldo, $status) {
        $this->setSaldo(0);
        $this->setStatus(false);
        echo "<p>Conta criada com sucesso!</P>";
    }
    
    function getNumConta() {
        return $this->numConta;
    }

    function getTipo() {
        return $this->tipo;
    }

    function getDono() {
        return $this->dono;
    }

    function getSaldo() {
        return $this->saldo;
    }

    function getStatus() {
        return $this->status;
    }

    function setNumConta($numConta) {
        $this->numConta = $numConta;
    }

    function setTipo($tipo) {
        $this->tipo = $tipo;
    }

    function setDono($dono) {
        $this->dono = $dono;
    }

    function setSaldo($saldo) {
        $this->saldo = $saldo;
    }

    function setStatus($status) {
        $this->status = $status;
    }

        
    

    public function abrirConta($t){
        $this->setTipo($t);
        $this->setStatus(true);
        if($t == "cc"){
            $this->setSaldo = 50;
    }else if($t == "cp"){
        $this->saldo = 150;
    }
    
    }
    
    public function fecharConta(){
        if($this->getSaldo() > 0){
            echo "<p>Conta com dinheiro, não pode ser fechada!</p>";
        }elseif($this->saldo < 0) {
            echo "<p>Conta esta em debito, impossível encerrar!</p>";
        }else{
            $this->setStatus(false);
            echo "<p>Conta de " . $this->getDono() . "fechada com sucesso!./p>";
        }
        
    }
    
    function depositar($v){
        if($this->getStatus()){
        /*outras formas
          if getStatus(true)
          if getStatus
        */ 
            $this->getSaldo($this->getSaldo() + $v);
        /*poderia fazer de outra forma
         * $this->saldo = $this->saldo + $v;
         */
         echo "<p>Depósito de R$ $v na conta de " . $this->getDono() . "</p>";
        }else{
            echo "<p>Conta fechada não consigo depositar!</p>";
    
        if (getStatus == true){
           $saldo = $saldo = $v;
           /*outra forma
           setSaldo(getSaldo() + $valor);
            */
        }else{
            echo "Impossível depositar";
        }
    }
    
    function sacar($v){
        if ($this->getStatus == true){
            if($this->getSaldo >= $v){
               // $this->saldo = $this->saldo - $v;
                $this->setSaldo($this->getSaldo()- $v);
                echo "<p>Saque de R$ $v autorizado na conta de " . $this->getDono() ."</p>";
            }else{
                echo "<p>Saldo insuficiente para saque</P>";
            }
        }else{
            echo "<p>Não posso sacar de uma conta fechada!</P";
        }
        
    }
    
    function pagarMensal(){
        if($this->getTipo() == "cc"){
            $v = 12;
        }else if($this->getTipo == "cp"){
            $v = 20;
        }
        
        if($this->getStatus()){
            return $this->setSaldo($this->getSaldo() = $v);
            //echo "<p>Mensalidade de R$</p>". $v ."<p>debitado na conta de</P> " . this->getDono() . "</p>";
            echo "<p>Mensalidade de R$</p>". $v ."<p>debitado na conta de</P> " . $this->getDono();
        }else{
            echo "<p>Problemas com a conta. Não posso cobrar.</P>";
        }
      }
    }
}

Editado por Maxgomesrj
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Em 01/02/2019 em 20:28, Maxgomesrj disse:

return $this->setSaldo($this->getSaldo() = $v);

Essa é a linha 133

<?php

class ContaBanco {
	//...

    function setSaldo($saldo) {
        $this->saldo = $saldo;
    }

	//...
    
    function pagarMensal(){
        if($this->getTipo() == "cc"){
            $v = 12;
        }else if($this->getTipo == "cp"){
            $v = 20;
        }
        
        if($this->getStatus()){
            return $this->setSaldo($this->getSaldo() = $v);
            //echo "<p>Mensalidade de R$</p>". $v ."<p>debitado na conta de</P> " . this->getDono() . "</p>";
            echo "<p>Mensalidade de R$</p>". $v ."<p>debitado na conta de</P> " . $this->getDono();
        }else{
            echo "<p>Problemas com a conta. Não posso cobrar.</P>";
        }
      }
    }
}

O método setSaldo não retorna nada então não tem como dar um return nele

Link para o comentário
Compartilhar em outros sites

  • 0
23 horas atrás, lowys disse:

Olá!

Não dá pra saber qual é a linha 133

Mas o método getTipo(), dentro do método pagarMensal(), está sem parênteses

Agora é a linha 128.
return $this->setSaldo($this->getSaldo() = $v);

Obrigado eu corrigi!.

43 minutos atrás, Leonardo Persan disse:

Essa é a linha 133


<?php

class ContaBanco {
	//...

    function setSaldo($saldo) {
        $this->saldo = $saldo;
    }

	//...
    
    function pagarMensal(){
        if($this->getTipo() == "cc"){
            $v = 12;
        }else if($this->getTipo == "cp"){
            $v = 20;
        }
        
        if($this->getStatus()){
            return $this->setSaldo($this->getSaldo() = $v);
            //echo "<p>Mensalidade de R$</p>". $v ."<p>debitado na conta de</P> " . this->getDono() . "</p>";
            echo "<p>Mensalidade de R$</p>". $v ."<p>debitado na conta de</P> " . $this->getDono();
        }else{
            echo "<p>Problemas com a conta. Não posso cobrar.</P>";
        }
      }
    }
}

O método setSaldo não retorna nada então não tem como dar um return nele

Bom Dia!.
Leonardo agora mudou para a lina 128

Fatal error:  Can't use method return value in write context in D:\xampp\htdocs\ProjetoBanco\ContaBanco.php on line 128
A mensagem diz: Não é possível usar o valor de retorno do método no contexto de gravação
Não é possível usar o valor de retorno do método no contexto de gravação
return $this->setSaldo($this->getSaldo() = $v);

c

Possoal!.
Desculpe a demora pela resposta pois fiquei sem internet.

23 horas atrás, lowys disse:

Olá!

Não dá pra saber qual é a linha 133

Mas o método getTipo(), dentro do método pagarMensal(), está sem parênteses

Obrigado resolvi.

Editado por Maxgomesrj
Link para o comentário
Compartilhar em outros sites

  • 0

Consegui resolver.!
 

<?php

class ContaBanco {
    //Atributos
    public $numConta;
    protected $tipo;
    private $dono;
    private $saldo;
    private $status;
    
    //Métodos
    function __construct() {
        $this->setSaldo(0);
        $this->setStatus(false);
        echo "<p>Conta criada com sucesso!</P>";
    }
    
    function getNumConta() {
        return $this->numConta;
    }

    function getTipo() {
        return $this->tipo;
    }

    function getDono() {
        return $this->dono;
    }

    function getSaldo() {
        return $this->saldo;
    }

    function getStatus() {
        return $this->status;
    }

    function setNumConta($numConta) {
        $this->numConta = $numConta;
    }

    function setTipo($tipo) {
        $this->tipo = $tipo;
    }

    function setDono($dono) {
        $this->dono = $dono;
    }

    function setSaldo($saldo) {
        $this->saldo = $saldo;
    }

    function setStatus($status) {
        $this->status = $status;
    }

    public function abrirConta($t){
        $this->setTipo($t);
        $this->setStatus(true);
        if($t == "cc"){
            $this->saldo = 50;
    }else if($t == "cp"){
        $this->saldo = 150;
    }
    
    }
    
    public function fecharConta(){
        if($this->getSaldo() > 0){
            echo "<p>Conta com dinheiro, não pode ser fechada!</p>";
        }elseif($this->saldo < 0) {
            echo "<p>Conta esta em debito, impossível encerrar!</p>";
        }else{
            $this->setStatus(false);
            echo "<p>Conta de " . $this->getDono() . " fechada com sucesso!.</p>";
        }
        
    }
    
    public function depositar($v){
        if($this->getStatus()){
        /*outras formas
          if getStatus(true)
          if getStatus
        */ 
            $this->getSaldo($this->getSaldo() + $v);
        /*poderia fazer de outra forma
         * $this->saldo = $this->saldo + $v;
         */
         echo "<p>Depósito de R$ $v na conta de " . $this->getDono() . "</p>";
        }else{
            echo "<p>Conta fechada não consigo depositar!</p>";
    }
    }
    
    public function sacar($v){
        if ($this->getStatus()){
            if($this->getSaldo() >= $v){
               // $this->saldo = $this->saldo - $v;
                $this->setSaldo($this->getSaldo() - $v);
                echo "<p>Saque de R$ $v autorizado na conta de " . $this->getDono() ."</p>";
            }else{
                echo "<p>Saldo insuficiente para saque</P>";
            }
        }else{
            echo "<p>Não posso sacar de uma conta fechada!</P";
        }
    }
    
    function pagarMensal(){
        
        if($this->getTipo() == "cc"){
            $v = 12;
        }else if($this->getTipo() == "cp"){
            $v = 20;
        }
            
        if($this->getStatus()){
          $this->setSaldo($this->getSaldo() - $v);
            //echo "<p>Mensalidade de R$</p>". $v ."<p>debitado na conta de</P> " . this->getDono() . "</p>";
            echo "<p>Mensalidade de R$". $v ." debitado na conta de " . $this->getDono() . "<p/>";
            }else{
            echo "<p>Problemas com a conta. Não posso cobrar.</P>";
        }
      }
    }

Abraços!...
Até o próximo código... rsrsrs....

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...