junaooaks 3 Denunciar post Postado Outubro 21, 2010 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
EuricoVidal 0 Denunciar post Postado Outubro 21, 2010 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
junaooaks 3 Denunciar post Postado Outubro 21, 2010 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
EuricoVidal 0 Denunciar post Postado Outubro 21, 2010 não intendi o que quis dizer, tem como dar um exemplo Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Outubro 21, 2010 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
Periscuelo 20 Denunciar post Postado Outubro 21, 2010 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
junaooaks 3 Denunciar post Postado Outubro 21, 2010 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
Periscuelo 20 Denunciar post Postado Outubro 21, 2010 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
junaooaks 3 Denunciar post Postado Outubro 21, 2010 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
João Batista Neto 448 Denunciar post Postado Outubro 21, 2010 http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://forum.imasters.com.br/index.php?/topic/392735-php-orientado-a-objetos/ Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Outubro 21, 2010 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
EuricoVidal 0 Denunciar post Postado Outubro 21, 2010 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
Periscuelo 20 Denunciar post Postado Outubro 22, 2010 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
junaooaks 3 Denunciar post Postado Outubro 22, 2010 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 explicarnao achei no google Compartilhar este post Link para o post Compartilhar em outros sites
chuck01 0 Denunciar post Postado Outubro 22, 2010 @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
junaooaks 3 Denunciar post Postado Outubro 27, 2010 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
William Bruno 1501 Denunciar post Postado Outubro 27, 2010 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
junaooaks 3 Denunciar post Postado Outubro 27, 2010 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
junaooaks 3 Denunciar post Postado Outubro 28, 2010 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