Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

caririofertas

Aprendendo PHP na marra com OO

Recommended Posts

Olá, eu estou começando no PHP, estou aprendendo já com Oriateção a Objetos, eu fui gerando um código de um livro que eu comprei, por sinal bem caro, ele é completo, so que a linguagem utilizada não é PHP, então eu tentei adaptar para o PHP e encontrei alguns erros, gostaria que alguém no forum sanasse minhas dúvidas, o código segue abaixo:

<?php

// Criando a Classe Item
class Item {
				   private $preco_unico; // Preço único
				   private $disconto; // Uma porcentagem de disconto que se aplica ao preço
				   private $quantidade; // Quantidade
				   private $descricao; //Descrição
				   private $id; // Identificador
				   
				   public function Item($id,$descricao,$quantidade,$preco){
					   $this->id=$id;
					   $this->descricao=$descricao;
					   
					   if($quantidade >= 0){
						   $this->quantidade=$quantidade;
					   }
					   else{
						   $this->quantidade = 0;
					   }
					   $this->preco_unico = $preco;
				   }
				   public function getTotalAjustado(){
					   $this->total = $preco_unico * $quantidade;
					   $this->total_disconto = $total * $disconto;
					   $this->adtotal_ajustado = $total - $total_disconto;
					   
					   return $adtotal_ajustado;
				   }
				   // aplica uma porcentagem de desconto no preço
				   public function setdisconto($disconto){
					   if($disconto <= 1.00){
						   $this->disconto = $disconto;
					   }
					   else{
						   $this->disconto = 0.0;
					   }
				   }
				   public function getdisconto(){
					   return $disconto;
				   }
				   public function getquantidade(){
					   return $quantidade;
				   }
				   public function setquantidade($quantidade){
					   if(quantidade>=0){
						   $this->quantidade = $quantidade;
					   }
				   }
				   public function getProdutoID(){
					   return $id;
				   }
				   public function getDescricao(){
					   return $descricao;
				   }
				   }
				   // Fazendo os Objetos trabalharem
				   
				   public static function main(){
					   // cria os itens
					   $this->leite = new Item("diario-011","1 Litro de Leite",2,2.50);
					   $this->iorgute = new Item("diario-032","Iorgute Pasteurizado",4,0.50);
					   $this->torrada = new Item("bakery-023","Torrada Francesa",1,2.55);
					   $this->sopa = new Item("household-21","6 Pacotes de Sopa",1,4.51);
					   // aplica cupons
					   $leite.setDisconto(0.15);
					   // obtêm os preços ajustados
					   $this->leite_preco = $leite.getTotalAjustado();
					   $this->iorgute_preco = $iorgute.getTotalAjustado();
					   $this->torrada_preco = $torrada.getTotalAjustado();
					   $this->sopa_preco = $sopa.getTotalAjustado();
					   // imprime recibo
					   echo"Obrigado por sua compra."."</br>";
					   echo"Por favor, volte sempre!"."</br>";
					   echo ($leite.getDescricao() + "\t R$" + $leite_preco ."</br>");
					   echo ($iorgute.getDescricao() + "\t R$" + $iorgute_preco ."</br>");
					   echo ($torrada.getDescricao() + "\t R$" + $torrada_preco ."</br>");
					   echo ($sopa.getDescricao() + "\t R$" + $sopa_preco ."</br>");
					   
					   //calcula e imprime o total
					   $this->total = $leite_preco + $iorgute_preco + $torrada_preco + $sopa_preco;
					   echo "Total \t R$". $total;
				   }
				   ?>

As dúvidas: Eu preciso declarar de que tipo são as variáveis? string, bulean, int, double, etc?
No meu código diz que tem um erro na linha 59 que seria desta parte do código:

public static function main(){
					   // cria os itens
					   $this->leite = new Item("diario-011","1 Litro de Leite",2,2.50);
					   $this->iorgute = new Item("diario-032","Iorgute Pasteurizado",4,0.50);
					   $this->torrada = new Item("bakery-023","Torrada Francesa",1,2.55);
					   $this->sopa = new Item("household-21","6 Pacotes de Sopa",1,4.51);
					   // aplica cupons
					   $leite.setDisconto(0.15);
					   // obtêm os preços ajustados
					   $this->leite_preco = $leite.getTotalAjustado();
					   $this->iorgute_preco = $iorgute.getTotalAjustado();
					   $this->torrada_preco = $torrada.getTotalAjustado();
					   $this->sopa_preco = $sopa.getTotalAjustado();
					   // imprime recibo
					   echo"Obrigado por sua compra."."</br>";
					   echo"Por favor, volte sempre!"."</br>";
					   echo ($leite.getDescricao() + "\t R$" + $leite_preco ."</br>");
					   echo ($iorgute.getDescricao() + "\t R$" + $iorgute_preco ."</br>");
					   echo ($torrada.getDescricao() + "\t R$" + $torrada_preco ."</br>");
					   echo ($sopa.getDescricao() + "\t R$" + $sopa_preco ."</br>");
					   
					   //calcula e imprime o total
					   $this->total = $leite_preco + $iorgute_preco + $torrada_preco + $sopa_preco;
					   echo "Total \t R$". $total;
				   }

O que ta errado, poderiam corrigir comentando meu erro por favor?

Desde já obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que tenha usado um livro de Java. Respondendo suas dúvidas:

 

1 - No PHP não precisa declarar o tipo da variável, as opções abaixo são válidas:

<?php
var $minhaVariavel = "Texto";
var $minhaVariavel = 21546; //número
var $minhaVariavel = 23.06; //decimal
var $minhaVariavel = array("indice" => "valor"); //array
var $minhaVariavel = new MinhaClasse(); //objeto
?>

2 - Posta o erro da linha 59.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parse error: parse error in C:\xampp\htdocs\testes\teste.php on line 59


Acredito que tenha usado um livro de Java. Respondendo suas dúvidas:

 

1 - No PHP não precisa declarar o tipo da variável, as opções abaixo são válidas:

<?php
var $minhaVariavel = "Texto";
var $minhaVariavel = 21546; //número
var $minhaVariavel = 23.06; //decimal
var $minhaVariavel = array("indice" => "valor"); //array
var $minhaVariavel = new MinhaClasse(); //objeto
?>

2 - Posta o erro da linha 59.

Justamente Adriano, eu comprei um Livro pra aprender a progamar em OO, mas ele é pra JAVA, não achei um tão completo pra PHP, neste caso, como eu fariaa pra transcrever esse código pra PHP?


Segue o código do jeito que se encontra no Livro

 

codigo_parte1.jpgcodigo_parte2.jpg

codigo_parte3.jpgcodigo_parte4.jpg

Como fica esse código em PHP?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro não é o método main, no PHP main é um nome qualquer de um método. O erro é o String args[], no php não se declara tipo de variável. Fiz um exemplo abaixo, agora com um pouco de pesquisa você consegue transcrever esse código. Abs.

<?php

class Item{
    
    // declarando uma variável privada
    private $teste;
    
    // váriavel publica
    public $description;
    
    // váriavel publica também (mais usado)
    var $id;
    
    // No java o método construtor da classe é sempre chamado de "main".
    // No PHP4 o contrutor tinha o mesmo nome da classe.
    // No PHP5+ o método construtor é "function __consctruc()";
    
    // E não precisa falar o tipo da variável
    public function __construct($id, $description){
    
        // A valor da variável $id que está sendo passado no método vai ser adicionado no atributo da classe $this->id
        $this->id = $id;
        
        $this->setDescription($description);
        
        echo $this->id . " => ";
        echo $this->getDescription();
    }
    
    
    // Esse método faz a mesma coisa que o $this->id = $id no método anterior.    
    public function setDescription($valor){
        $this->description = $valor;
    }
    
    
    public function getDescription(){
        return $this->description;
    }
    
}


// Estou instanciando a classe "chamando ela". O métdo construtor exige que você passe dois parâmetros o ID e o Description
$objeto = new Item("02938", "Descrição vai aqui");

//Você pode acessar os métodos e atributos atráves do objeto;

echo "<hr />";
echo $objeto->id . " => " . $objeto->description;
echo "<hr />";

// setando uma nova descrição no atributo description.
$objeto->setDescription("Uma nova descrição");

// imprimindo o novo valor
echo $objeto->getDescription();
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

O erro não é o método main, no PHP main é um nome qualquer de um método. O erro é o String args[], no php não se declara tipo de variável. Fiz um exemplo abaixo, agora com um pouco de pesquisa você consegue transcrever esse código. Abs.

<?php

class Item{
    
    // declarando uma variável privada
    private $teste;
    
    // váriavel publica
    public $description;
    
    // váriavel publica também (mais usado)
    var $id;
    
    // No java o método construtor da classe é sempre chamado de "main".
    // No PHP4 o contrutor tinha o mesmo nome da classe.
    // No PHP5+ o método construtor é "function __consctruc()";
    
    // E não precisa falar o tipo da variável
    public function __construct($id, $description){
    
        // A valor da variável $id que está sendo passado no método vai ser adicionado no atributo da classe $this->id
        $this->id = $id;
        
        $this->setDescription($description);
        
        echo $this->id . " => ";
        echo $this->getDescription();
    }
    
    
    // Esse método faz a mesma coisa que o $this->id = $id no método anterior.    
    public function setDescription($valor){
        $this->description = $valor;
    }
    
    
    public function getDescription(){
        return $this->description;
    }
    
}


// Estou instanciando a classe "chamando ela". O métdo construtor exige que você passe dois parâmetros o ID e o Description
$objeto = new Item("02938", "Descrição vai aqui");

//Você pode acessar os métodos e atributos atráves do objeto;

echo "<hr />";
echo $objeto->id . " => " . $objeto->description;
echo "<hr />";

// setando uma nova descrição no atributo description.
$objeto->setDescription("Uma nova descrição");

// imprimindo o novo valor
echo $objeto->getDescription();
?>

 

Eu entendi Adriano Lopes, eu reescrevi o código, não da mais erros, mas não ta imprimindo a saaida, poderiaa dar outra olhada para mim? Segue:

<?php
/*
Progama criado por Uillemberg p> Santos<br />
Cria Classes em PHp Orientado a Objetos para calculo de preço de produtos com opção de descontos e imprime o resultado na tela!
*/

// Criando a Classe Item
class Item {
				   private $preco_unico; // Preço único
				   private $disconto; // Uma porcentagem de disconto que se aplica ao preço
				   private $quantidade; // Quantidade
				   private $descricao; //Descrição
				   private $id; // Identificador
				   
				   public function Item($id,$descricao,$quantidade,$preco){
					   $this->id=$id;
					   $this->descricao=$descricao;
					   
					   if($quantidade >= 0){
						   $this->quantidade=$quantidade;
					   }
					   else{
						   $this->quantidade = 0;
					   }
					   $this->preco_unico = $preco;
				   }
				   public function getTotalAjustado(){
					   $this->total = $preco_unico * $quantidade;
					   $this->total_disconto = $total * $disconto;
					   $this->adtotal_ajustado = $total - $total_disconto;
					   
					   return $adtotal_ajustado;
				   }
				   // aplica uma porcentagem de desconto no preço
				   public function setdisconto($disconto){
					   if($disconto <= 1.00){
						   $this->disconto = $disconto;
					   }
					   else{
						   $this->disconto = 0.0;
					   }
				   }
				   public function getdisconto(){
					   return $disconto;
				   }
				   public function getquantidade(){
					   return $quantidade;
				   }
				   public function setquantidade($quantidade){
					   if(quantidade>=0){
						   $this->quantidade = $quantidade;
					   }
				   }
				   public function getProdutoID(){
					   return $id;
				   }
				   public function getDescricao(){
					   return $descricao;
				   }
				   }
				   // Fazendo os Objetos trabalharem
				   
				   public function __construct($id,$descricao,$quantidade,$preco){
					   // cria os itens
					   $this->leite = new Item("11","1 Litro de Leite",2,2.50);
					   $this->iorgute = new Item("32","Iorgute Pasteurizado",4,0.50);
					   $this->torrada = new Item("23","Torrada Francesa",1,2.55);
					   $this->sopa = new Item("21","6 Pacotes de Sopa",1,4.51);
					   // aplica cupons
					   $leite.setDisconto(0.15);
					   // obtêm os preços ajustados
					   $this->leite_preco = $leite->getTotalAjustado();
					   $this->iorgute_preco = $iorgute->getTotalAjustado();
					   $this->torrada_preco = $torrada->getTotalAjustado();
					   $this->sopa_preco = $sopa->getTotalAjustado();
					    
				   // imprime recibo
					   echo "Obrigado por sua compra.</br>";
					   echo "Por favor, volte sempre!</br>";
					   echo ($leite->getDescricao() . "\t R$" . $leite_preco ."</br>");
					   echo ($iorgute->getDescricao() . "\t R$" . $iorgute_preco ."</br>");
					   echo ($torrada->getDescricao() . "\t R$" . $torrada_preco ."</br>");
					   echo ($sopa->getDescricao() . "\t R$" . $sopa_preco ."</br>");
					   
					   //calcula e imprime o total
					   $this->total = $leite_preco + $iorgute_preco + $torrada_preco + $sopa_preco;
					   echo "Total \t R$". $total;
					   
					   }
				   ?>

Eu tô em dúvida é nas fuções que criei, por que aqui:

// obtêm os preços ajustados

$this->leite_preco = $leite->getTotalAjustado();

$this->iorgute_preco = $iorgute->getTotalAjustado();

$this->torrada_preco = $torrada->getTotalAjustado();

$this->sopa_preco = $sopa->getTotalAjustado();

 

esta correto esse bloco? eu quero que pegue o preço ajustado de cada Item!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

<?php
var $minhaVariavel = "Texto";
var $minhaVariavel = 21546; //número
var $minhaVariavel = 23.06; //decimal
var $minhaVariavel = array("indice" => "valor"); //array
var $minhaVariavel = new MinhaClasse(); //objeto

 

De onde surgiu isso? PHP não tem a keyword [inline]var[/inline] na versão 5. Na versão 4 ela era usada exclusivamente para declarar propriedades de classes.

 

Sobre o construtor, atualmente há suporte para se utilizar tanto um método com o mesmo nome da classe, tal como em C++ ou Java, mas a maneira moderna de fazê-lo é com o método [inline]__construct[/inline].

 

O erro é o String args[], no php não se declara tipo de variável.

Errado. Veja no manual do PHP.

 

Nesse caso em específico, há um problema, pois o tipo string não é um objeto, como no Java, mas um tipo nativo.

 

A maior diferença na execução é que não há um entry point definido como uma função, como no Java ou no C.

 

O PHP é uma linguagem de script. Como tal, os comandos são lidos em sequência e executados. Você deve fazer assim no seu arquivo:

 

class Foo {
    public function bar() {
        echo 'bar';
    }
}

$foo = new Foo();
$foo->bar();
Para executar, na linha de comando, basta fazer:

 

php seu_arquivo.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.