Ir para conteúdo

POWERED BY:

Arquivado

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

junaooaks

novato em oop class

Recommended Posts

pessoal sou novato oop

 

ajude-me

 

criei uma class e gostaria de uma ajuda tipo em tudo, nao quero criar simplesmente uma class e função e falar que sei programar em oop

 

preciso que me corrige o que posso fazer e como receber o valor dela na outra pagina

vamos la:

objetivo desta class e retorna a $string

class

<?php

class classString {

    /*atributos*/
    private $check;
    private $string;
    private $tipo = 'k';
    

    function semburst() {
        //comparar se check esta vazio
        if (empty($check)) {
            //contatenar o k nos valores
            if ($txC <> '') {
                $txC = $txC . $tipo;
            }
            //comparar se variavel == vazio para receber valor = $txC
            if ($rxC == '') {
                $rxC = $txC;
            } else {
                $rxC = $rxC . $tipo;
            }
            //formar a string com os valores corretos
            $string = $txC . "/" . $rxC;
            return $this->string;
        }
    }

    function comburst() {
        //criar a string
        if ($check == 1) {
            //comparar se os campos rx estao fazio
            if ($rxC == '') {
                $rxC = $txC;
            }
            if ($rxM == '') {
                $rxM = $txM;
            }
            if ($rxL == '') {
                $rxL = $txL;
            }
            if ($rxMG == '') {
                $rxMG = $txMG;
            }
            //verificar se todos os campos estao preenchido
            if (empty($txC) || empty($rxC) || empty($txMG) || empty($rxMG) || empty($txM) || empty($rxM) || empty($tempo) || empty($prioridade) || empty($txL) || empty($rxL) || empty($valor)) {
                echo "PREENCHER TODOS OS CAMPOS";
                //parar o script
                exit();
            }
            //montar string
            $string = "$txC/$rxC $txM/$rxM $txL/$rxL $tempo $prioridade $txMG/$rxMG";
            return $this->string;
        }
    }

}

?>

tentendo pegar o retorno em outra pagina

<?php
        
		if ($tabela == '1'){
		     //receber a class
                    include 'classString.php';
                    //instancia o objeto
                    $speed = new classString();

                    //setar os valores no valores no objeto
                    
			
			
			
		}
        
?>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body bgcolor="#eaeaea" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"><fieldset>
            <legend><font size="2">Planos de Acesso</font></legend>
            <table width="100%" border="0" cellpadding="0" cellspacing="5">
                <tr>
                    <td> <div align="left"><strong>VELOCIDADE</strong></div></td>
                    <td> <div align="left"><strong>VALOR</strong></div></td>
                    <td> <div align="left"><strong>ALTERAR</strong></div></td>
                    <td><strong>EXCLUIR</strong></td>
                </tr>
            </table>
        </fieldset>

        <fieldset>
            <legend><font size="2">Inserir/Alterar Planos de Acessos</font></legend>
            <form action="">
                <table border="0" cellspacing="5" cellpadding="0">
                    <tr>
                        <td><input name="check" type="checkbox" id="mayoria_edad" value="1"> Usar Burst</td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>Constante</td>
                        <td id="maxima" style="display: none;">Máxima</td>
                        <td id="limiar" style="display: none;">Limiar</td>
                        <td id="tempo">Tempo:</td>
                        <td>Prioridade</td>
                        <td id="garantido" style="display: none;">Mínimo. Garantido</td>
                        <td>Valor:</td>
                    </tr>
                    <tr>
                        <td>TX/ Kbps</td>
                        <td id="txC"><input name="txC" type="text" value="" size="10" onkeypress='return nnn(event)'></td>
                        <td id="txM" style="display: none;"><input name="txM" type="text" value="" size="10" onkeypress='return nnn(event)'></td>
                        <td id="txL" style="display: none;" ><input name="txL" type="text" value="" size="10" onkeypress='return nnn(event)'></td>
                        <td><input name="tempo" type="text" value="" size="10" onkeypress='return nnn(event)'></td>
                        <td><select name="prioridade" >

                                <option value="0">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                                <option value="4">4</option>
                                <option value="5">5</option>
                                <option value="6">6</option>
                                <option value="7">7</option>
                                <option value="8">8</option>
                                <option value="9">9</option>

                            </select></td>
                        <td id="txMG" style="display: none;"><input name="txMG" type="text" value="" size="10" onkeypress='return nnn(event)'></td>
                        <td><input name="valor" type="text" value="" size="10" id="valor"></td>
                    </tr>
                    <tr>
                        <td>RX/ Kbps</td>
                        <td id="rxC"><input name="rxC" type="text" value="" size="10" onkeypress='return nnn(event)'></td>
                        <td id="rxM" style="display: none;" ><input name="rxM" type="text" value="" size="10" id="rxM" onkeypress='return nnn(event)'></td>
                        <td id="rxL" style="display: none;"><input name="rxL" type="text" value="" size="10" id="rxL" onkeypress='return nnn(event)'></td>
                        <td> </td>
                        <td> </td>
                        <td id="rxMG" style="display: none;"><input name="rxMG" type="text" value="" size="10" id="rxMG" onkeypress='return nnn(event)'></td>
                        <td> </td>
                    </tr>
                    <tr>
                        <td colspan="8"><div align="center"><font size="2" face="Verdana">
                                    <input type="reset" name="Reset" value="Novo Plano" onClick="limpa()">
                                    <input name="tabela" type="hidden" value="1">
                                </font>
                                <input type="submit" name="Submit" value="Enviar">
                            </div></td>
                    </tr>
                </table>
            </form>
        </fieldset>
    </body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola, vou colocar aqui um exemplo do código que mandei esses dias para um amigo que esta estudando PHP OO

 

não esta comentado, pois eu havia explicado pessoalmente rs, mas o que não entender fala ai, que explicamos

 

*para quem tiver dica do que pode ser melhorado o exemplo fala ai tbm, que sempre é bom ;)

 

connection.php

<?php
class connection {
    private static $host = 'localhost';
    private static $user = 'root';
    private static $pass = '';
    private static $dbase = 'phpoo';
    private static $link;
    private $result;
    public $error = array();

    private static function connect(){
        self::$link = mysqli_connect(self::$host, self::$user, self::$pass, self::$dbase) or die($this->error[] = 'Ocorreu um error na conexão MySql: ' . mysqli_connect_error());
    }

    private static function desconect(){
        mysqli_close(self::$link);
    }

    private function execute_query($query){
        $this->connect();
        $result = self::$link->query($query) or die($this->error[] = 'Ocorreu um erro ao executar a Query MySQL: ' . $query . ' - Erro no MySQL: ' . self::$link->error);
        $this->desconect();
    return $result;
    }

    public function sql_query($query){
        return $this->execute_query($query);
    }
}
?>

list.php

<?php

require('connection.php');



$conn = new connection();

$list = $conn->sql_query('SELECT nome, idade FROM clientes ORDER BY nome ASC');

while($return = mysqli_fetch_array($list)){

    echo $return['nome'] . '<br />';

}

echo '<br />';

$list = $conn->sql_query('SELECT idade FROM clientes ORDER BY idade ASC');

while($return = mysqli_fetch_array($list)){

    echo $return['idade'] . '<br />';

}

if($conn->error) print_r($conn->error);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem como posta um arquivo que recebe entra enviada pelo formulario

 

 

tipo um formulario com cadastro pessoais

ex nome, endereco, cidade ...

 

tenho que fazer a function construtor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

montei uma class rapido aqui

preciso colocar o metodo construtor ?

<?php

class pessoa(){
	
	$nome;
	$endereco;
	$cidade;
	
	function valida(){
		if (empty($nome)){
			$retorno = "vazio"
		return $this->retorno;
		}
	
	    if (empty($endereco)){
			$retorno = "vazio"
		    return $this->retorno;
		}
		
		if (empty($cidade)){
			$retorno = "vazio"
		return $this->retorno;
		}
	}
}
?>
html para enviar os valores do form

 

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<?php
include 'pessoa';
// como enviar os dados do formulario para a class e pegar a função return

?>
<body>
<form id="form1" name="form1" method="post" action="">
  <table width="0%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>Nome</td>
      <td><label for="nome"></label>
      <input type="text" name="nome" id="nome" /></td>
    </tr>
    <tr>
      <td>Endereco</td>
      <td><input type="text" name="endereco" id="endereco" /></td>
    </tr>
    <tr>
      <td>Cidade</td>
      <td><input type="text" name="cidade" id="cidade" /></td>
    </tr>
    <tr>
      <td> </td>
      <td><input type="submit" name="button" id="button" value="enviar" /></td>
    </tr>
  </table>
</form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Metodo construtor não é uma necessidade.

PHPOO é um conceito.

 

O método contrutor serve para definir as ações da classe

no momento em que a mesma é instanciada.

 

Ex: uma classe que abstrai os comandos utilizados do MySQL por exemplo

pode ter dentro do seu metodo construtor a conexão com o banco de dados.

Assim quando a mesma for instanceada ela vai acessar o MySQL.

 

Nesta mesma classe você implementa um metodo destrutor, que tem como finalidade

executar tarefas ao final da execução do objeto. La você pode por exemplo fechar

a conexão com banco de dados mysql.

 

É possivel também que você queira que uma subclasse tenha o mesmo aspecto de uma classe

pai e para isso utilize a herança do metodo construtor da classe pai.

 

Ex: a classe pai é a classe carros.

A subclasse é a mostra_carro.

Supomos que na classe carros em seu metodo construtor você define o nome do carro atraves do primeiro parametro.

Dai a subclasse precisa saber o nome do carro. Desta forma você herda a classe Pai carro

e seu metodo construtor.

 

Assim quando você instanciar a classe mostra_carro passando o parametro de nome você terá automaticamente o

nome do carro graças a herança. Não havendo a necessidade de repetir o código que define o nome do mesmo.

 

Não é o melhor exemplo do mundo rss mas ententa que OO é um conceito e não um carro que precisa de motor suspensão gasolina e etc para funcionar.

A classe pode funcionar de qq jeito. Mas para dizer que estamos trabalhando com OO é preciso saber aplicar o conceito.

Só após entender o conceito você saberá identificar se utiliza ou não determinado metodo. Escrever código porque

alguém falou pra escrever não vai te ensinar OO.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado pela resposta

 

mas tem como colocar na pratica, pra poder ter uma demonstração usando a class acima

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer seu problema resolvido por alguém que entenda de OO

porque te pediram a solução OO ou quer aprender sobre OO?

 

Se estiver em busca de aprender digite

 

php orientado a objetos

 

no google que você vai achar muita coisa.

 

Agora se quiser alguém que faça o que você precisa OO ai eu vou

ficar lhe devendo esta.

 

Porque exemplos do que tu quer no google tem varios.

 

Veja se mais algum amigo do fórum monta esta classe para você

conforme você precisa.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao me entenda mau

 

eu ja li sobre oop, so que para mim similar a teoria com a pratica.

acima eu so coloquei um exemplo, do que eu sei fazer ate aonde eu intendi

gostaria de expandir o meu conhecimento mais para oop, eu sei que oop nao e so criar class

 

e nao gostaria de segui caminhos errados

 

me entenda por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu entendi amigo só que conceito você tem que ler para entender.

O que você quer é que alguém te explique passo a passo o conceito.

Só que existem varios livros que falam sobre isso passo a passo. Artigos na internet.

Acredito que até o curso de PHP do fórum te de uma mãozinha.

 

Se você ler um bom livro ou apostila que fale sobre OO você vai entender

o conceito mais facilmente. Se o que você entendeu se resume a isso significa

então que você não leu o suficiente.

 

O que sei sobre PHP OO foi lendo que aprendi. Nunca achei ninguém que me ensinasse

conceito passo a passo até porque é complexo trabalhar com OO. A vantagem que se tem

é o resultado inteligente e facil de dar manutenção que se obtem.

 

Por ser um conteúdo extenso e complexo de se entender que existem artigos e livros que falam

sobre. Não se acha um guia pratico de OO para comprar. Ou aprenda em uma semana.

 

Mas bom está é a minha opnião.

 

O Amigo João Batista Neto te passou até um link que tem um ótimo conteúdo.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o Periscuelo disse, não é necessario utilizar o metodo, mas no caso do exemplo que passei, poderia ter sido utilizado __construct()

 

Olha, já que quer aprender, segue assim, utilizando padrão MVC e OOP, ficaria mais ou menos assim...

 

model/pessoa.php

<?php
class pessoa(){
    private static $nome = '';
    private static $endereco = '';
    private static $cidade = '';

    public function setNome($nome){
        self::$nome = $nome;
    }

    public function getNome(){
        return self::$nome;
    }

    public function setEndereco($endereco){
        self::$endereco = $endereco;
    }

    public function getEndereco(){
        return self::$endereco;
    }

    public function setCidade($cidade){
        self::$cidade = $cidade;
    }

    public function getCidade(){
        return self::$cidade;
    }
}
?>

controller/validacoes.php

<?php
class validacoes{

    private $msgError;

    public function validaPessoa(pessoa $pessoa){
        $retorno = true;

        if(empty($pessoa->getNome())){
            $msgError = "erro no nome";
            $retorno = false;
        }
        elseif(empty($pessoa->getEndereco())){
            $msgError = "erro no endereco";
            $retorno = false;
        }
        elseif(empty($pessoa->getCidade())){
            $msgError = "erro na cidade";
            $retorno = false;
        }

        if($msgError) $this->setMsgError($msgError);

        return $retorno;
    }

    private function setMsgError($msgError){
        self::$msgError = $msgError;
    }

    public function getMsgError(){
        return self::$msgError;
    }
}
?>

view/pessoa.php

<?php
require'model/pessoa.php';
require'controller/validacoes.php';
?>
<html>
[...]
<?php
$nome = "Eurico";
$endereco = "Rua";
$cidade = "Cidade";

$pessoa = new pessoa();
$pessoa->setNome($nome);
$pessoa->setEndereco($endereco);
$pessoa->setCidade($cidade);

$validacoes = new validacoes();
if($valicacoes->validaPessoa($pessoa)){
    echo "todos campos validos";
}
else{
    echo $validacoes->getMsgError();
}

?>
[...]
</html>

Periscuelo, caso me equivoquei em algo me corrija por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então amigo Eurico seu exemplo também é uma das formas de se fazer.

Existem N formas, tudo vai da necessidade do cliente.

Mas o amigo junaooaks sabe muito pouco sobre OO para seguir um MVC por exemplo.

 

A idéia que dei pra ele é estudar os conceitos para saber o que fazer.

Mas ele acha que aprende mais se alguém pegar o exemplo dele e mostrar como faz

o exemplo com o arquivo dele.

 

Então eu deixei a gosto né.

 

O caminho para chegar la já fornecemos.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

EuricoVidal

 

muito obrigado pela ajuda, eu tinha esquecido dos métodos set e get

sao uma boa pratica, separa bem os código

 

com o exemplo mostrado consigo prosseguir esta viagem

 

eu nao sei pra que server ::

self::$nome;
poderia me explicar

nao achei no google

Compartilhar este post


Link para o post
Compartilhar em outros sites

@junaooaks

 

 

Basicamente a diferença está em self:: referir-se à classe e $this-> referir-se ao objeto.

 

Bom, suponha as classe:

 

<?php
class Carro {
   public $marcha;
   public function reduzirMarcha() {
       $this->marcha--;
   }
}
?>

 

 

O atributo $marcha representa a marcha que o carro está atualmente e o método reduzirMarcha decrementa esse atributo. Observe que utilizamos $this->.

 

Vamos instanciar um objeto dessa classe:

 

<?php
$corsa = new Carro();
$corsa->marcha = 2;
$corsa->reduzirMarcha();
echo $corsa->marcha; //irá retornar 1.
?>

 

 

Se utilizar-mos self:: ao invés de $this-> não irá funcionar e no PHP 5 irá dar Fatal Error por $marcha não ser uma variavel estática.

 

Observe agora:

 

<?php
class Carro {
   public static $quantidade;
   public function __construct() {
       self::$quantidade++;
   }
}
$corsa = new Carro();
$gol   = new Carro();
echo Carro::$quantidade; //irá retornar 2. (duas instancias de carro)
?>

 

 

Agora a classe Carro possui uma variável estática $quantidade que não poderá ser chamada a partir de um objeto e somente a partir da Classe (sem estar instanciada).

 

Lembre-se só utilizamos self:: para variáveis estáticas.

fonte:http://www.htmlstaff.org/ver.php?id=17606

 

 

Se você não entender agora, desiste. Brincadeira .. tem que estudar, testar e estuda de novo que assim você aprende =)

 

Tenta fazer a view eles já deram tudo pronto pra você! Faz os forms .. estude CSS e posta aqui pra gente ver!

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal tentando usar oop seguindo as instruções, nao consegui deu erro

 

class/testeoop.php

<?php
include "mvc.php";
include "classTeste.php";

//instancia a class
$set = new mvc();

//setar valor nas variaveis
$set->setCheck($check);

$classString = new classTeste();
$teste = $classString->semburst($mvc);
 echo "$teste";

?>

class/classTeste.php

<?php
class classTeste {
	
	private $erro;
  
    public function semburst(mvc $mvc) {
        
        $retorno = true;

        //comparar se check esta vazio
        /*if (empty($setClass->getCheck())) {
			
		}*/
		$retorno = $mvc->getCheck;
		return $retorno;
	}
}
?>
e class mvc

<?php
class mvc {
	private static $check = '';
	
	public function setCheck($check){
        self::$check = $check;
    }

    public function getCheck(){
        return self::$check;
    }
}
?>

pagina html basico.

<form action="testeoop.php" method="post">
                <table border="0" cellspacing="5" cellpadding="0">
                    <tr>
                        <td><input name="check" type="checkbox" value="1"> Usar Burst</td>
                    </tr>
                </table>
            </form>

so quero mostra o valor do checks

esta dando o seguinte erro?

Catchable fatal error: Argument 1 passed to classTeste::semburst() must be an instance of mvc, null given, called in /var/www/brsite/plano/testeoop.php on line 12 and defined in /var/www/brsite/plano/classTeste.php on line 6

o que estou fazendo de errado ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

deveria ser:

//instancia a class
$mvc = new mvc();

//setar valor nas variaveis
$mvc->setCheck($check);
ne?! $mvc e não $set

Compartilhar este post


Link para o post
Compartilhar em outros sites

William Bruno

 

obrigado

 

nao mostra mas o erro, so que nao aparece o resultado no echo

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal eu vo continuar este topico para as duvidas

 

na tentativa de comparar um valor se esta vazio fazendo assim

if (empty($mvc->getCheck())) {

da erro mas se antes criar um variavel com o valor da instancia

$checkget = $mvc->getCheck();

e deixa o if desta forma

if (empty($checkget)) {

funciona, gostaria de saber se isto e certo ou se tenho que alterar o arquivo php.ini

 

ha o erro e este

Fatal error: Can't use method return value in write context in 

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.