Ir para conteúdo

POWERED BY:

Arquivado

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

criatividade zero

[Resolvido] codigo

Recommended Posts

como passo o valor _NUM de uma função para a outra

 

class controll{
	public $_NUM;

	function call_cidade(){
		return $this -> _NUM = date('s');
	}
}

class anuncios extends controll{
	function return_anuncios() {
		return 'anuncios na cidade: '.$this -> _NUM;
	}
}


$obj = new controll;
echo $obj -> call_cidade();

$obj = new anuncios;
echo $obj -> return_anuncios();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma vez que anuncios extende controll e a alteração da propriedade não é feita no construtor de controll, menos errado (já esse código é uma gambiarra só), seriaapenas trocar o objeto de contextoque chama os métodos:

 

$obj = new anuncios;

echo $obj -> call_cidade() . '<br/>';

echo $obj -> return_anuncios();

Veja que instanciei anuncios e usei o método existente em controll. Assim altero a propriedade pai e já passo a conhecer o valor.

 

Mas isso é totalmente errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leia, na sala de Cursos PHP os capítulos disponíveis sobre Orientação a Objetos em PHP.

 

É de fácil compreensão e você aprenderá que não basta ter seu código dentro de um class {} ára ser, de fato, Orientado a Objetos.

 

Jamais peça o peixe pronto, queira sempre aprender a pescar. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jamais peça o peixe pronto, queira sempre aprender a pescar. ;)

 

minha pergunta foi direta, como passar o valor, pq tinha certeza que estava certo hehehe

 

se você olhar meus topicos pedindo ajuda, sempre quero saber COMO reesolver o problema e não, o que resolve o problema...

ja disse que sou ZERÃO em PHP e estou migrando um sistema prondo em ASP, mas muita coisa que tem é 'hello word'.

olhei tudo aqui - literalmente - e sempre encontro um basico do basico

 

 

tem muito exemplo de pegar id, consultar e exibir, mas eu preciso de algo que contenha outras consultas

por exemplo

 

exibir os detalhes do produto com comentarios e montar um menu com outros produtos

é 'simplão' mas não encontro um exemplo consistente

 

ainda necessito de ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

@H4X0R, exclui seu post para que não fosse enquadrado como violação à Regra nº. 2, no quesito entrar em discussões que não dizem respeito.

 

Aprecio sua intenção emmeu favor, mas o ponto é impacialidade. Não se ofenda http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

@criatividade zero, até ler oscapítulos disponíveis do Curso PHP citado, também achava que só colocar um código dentro de um class {} já significava estar programando Orientado a Objetos.

 

Devo confessar com certa vergonha o quão errado eu estava. E sinceramente não gostaria de ver você cair na mesma armadilha que eu.

 

Se você está portando umsistema em ASP para o PHP, posso supor que você seja programador ASP e entenda dessa linguagem.

 

PHP é muito um pouco diferente e como toda linguagem você deve começar pelo bê-a-bá dela.

 

Você não pode ler qualquer livrinho furreca ou qualquer apostila gratuita que se encontra pela Internet e tentar fazer algo da magnitude que está fazendo diretamente Orientado a Objetos.

 

Apesar de parecer um conselho de grego, seria até mais interessante você, em uma primeira versão desse sistema, portá-lo proceduralmente para que tenha um maior e mais amplo contato com a linguagem.

 

Mesmo que você se recuse a lançar ou vender esse sistema dessa forma, já vai tedar conhecimento suficiente para partir para Orientação a Objetos.

 

Depois que estudar muito OOP, programando (e não pogramando) e conseguir sanar por si só os problemas daí sim você começa a REALMENTE estudar OOP, com Padrões de Projeto, e leva seu sistema à um ponto muito superior ao que pode imaginar.

 

Aqui no fórum existem excelentes programadores que entendem desses conceitos MUITO melhor do que eu, mas no que eu puder ajudar, eu ajudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

agradeço a preocupação :)

sei que estou muito² distante de POO - consciencia total hehehe

 

mas eu não estou, de inicio, focado em POO... preciso ir desmembrando os problemas e aprendendo coisa por coisa

o sistema em ASP não faz uso de arquitetura MVC e esse meu pontapé inicial

meu controller fica por parte do .htaccess

 

 

ex

eu acesso site.com.br/produto/rio/mustang-gt-500.html

o htaccess remete para a pag 'produtos_cidade.php' -> aqui verifico a cidade e resgato o produto // ate aqui tudo bem, depois carrego a view correspondente

 

a duvida maior é que alem disso, preciso retornar no menu, outros produtos da cidade e os comentarios

 

por facilidade, praticidade ou comodidade, achei melhor separar a pagina que chama os outros anuncios, pois fica mais facil criar criterios de exibição, como limitar regioes, faixa etaris...

 

 

tenho +- aplicado dessa forma

 

class ver_cidade extends database
{
	private $n_city;

	public function confere_cidade() {
		select cidade
	}
	public function confere_produto() {
		select produto
	}
	public function produtos_cidade() {
		select produtos_cidade
	}

}


$check			= new ver_cidade();
$retorno_cidade	= check -> confere_cidade();

if $retorno_cidade {
   $retorno_produto = check -> confere_produto();
   if $retorno_produto {
      $monta_menu = check -> produtos_cidade();
   }else{
      erro
   }
}else{
   erro
}

 

essa forma esta muito errada? heheheheh

a function produtos_cidade é a função que precisaria ser externa, chamada por include como falei acima, e precisa passar o parametro de $retorno_cidade com a ID da cidade

 

 

[]s

e obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao meu ver, apesar de estarem falando uns parentêses no segundo código, o erro estaria noconceito que aprendi as duras penas em torno de "aclasse que sabe demais".

 

Veja como ficaria melhor (vou renomear os nomes em geral porque sou umprogramador afrescuradamente globalizado :lol: )

 

$citiesClass = new Cities;
$productsClass = new Products;

$menu = array();

if( $citiesClass -> isValid() ) {

   if( $productsClass -> isValid( $productID ) ) {

       $menu = $productsClass -> sortByCity( $cityID );

   } else {

       // Error
   }

} else {

   // Error
}

Com isso, em sortByCity() retornar um array, você poderia montar omenu inteiro com uma linha:

 

Veja que eu separei em duas Models distintas. Uma relativa apenas às cidades e outra aos produtos.

 

Cada uma terá sua própria query e trabalharão juntas, mas uma sequer saberá que a outra existe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mal... faltaram os () do IF, sei que fica uma M pra decifrar, mas deu pra entender hehehee :)

dei uma 'aplicada' pra ver se estou com o raciocinio correto...

 

$citiesClass	= new Cities;
$productsClass		= new Products;
$avaliacaoClass		= new Avaliacao;

$cidade			= array();
$menu			= array();
$descProduto		= array();
$avaliacao		= array();


if( $citiesClass -> isValid() ) {

	/*retorna um array contendo o id da cidade...*/
	$cidade = $citiesClass -> returnCidade( $_GET['city'] );

	if( $productsClass -> isValid( $_GET['produto'] ) ) {

		/*sortByCity que retorna um array e monta os produtos da cidade*/
		$menu		= $productsClass -> sortByCity( $cidade['cityID'] );

		/*returnProduto que retorna um array com os dados do produto*/
		$descProduto	= $productsClass -> returnProduto( $_GET['produto'] )

		/*returnAvaliacao que retorna um array com os comentários*/
		$avaliacao	= $avaliacaoClass -> returnAvaliacao( $_GET['produto'] )

	} else {/*Error*/
	}

} else {/*Error*/
}

implementei outras var's e classes

1. returnCidade me retorna um array com algumas informações da cidade

2. returnProduto e sortByCity(menu) são funções que fazem parte da classe Products; sempre que chamar a classe Products é pq esta exibindo um produto e ha necessidade de exibir outros produtos

3. avaliação que segue o mesmo exemplo

4. a view monta com for os itens do $menu e $avaliacao, e mostra as informações de $descProduto

 

o item 2 está correto o raciocinio/aplicação?

posso manter cada 'model' em pagina separada - model_comment.php, model_produto.php, model_cidade.php

 

 

 

valeu Bruno, por mais simplista que seja esse mini-codigo, esta sendo uma grande aula e uma grande ajuda pra implementar no sistema http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vejo como errado, mas poderia observar que, segundo o primeiro comentário dá a entender que returnCidade() finaliza assim:

 

return array( 'cityID' => $cityID );

Sendo $cityID obtido via consulta ao banco.

 

Se assim o for, poderia simplificare fazer ela retornar um inteiro, que poderia ser a chave-primária dela na tabela, de uma vez.

 

Assim, alinha do $menu ficaria:

 

$menu = $productsClass -> sortByCity( 
                $citiesClass -> returnCidade( $_GET['city'] ) );

E aquela variável sumiria.

 

Mas você deve tomar muito cuidado porque você não está tratando o valor vindo por GET. E isso poderia comprometer o sistema visto que com SQL Injections um infrator poderia fazer mil estripulias com sua aplicação.

 

Quanto à organização das Models, por seu usuário do Zend Framework e futuro usuário do Recess, as minhas Models já fica juntas num diretório à parte e, graças ao AutoLoader, não preciso usar N require's ou include's na aplicação.

 

Quanto ao agradecimento, saiba que isso é só a pontinha do iceberg que aprendi com o João Batista.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. sobre injection; isso esta tranquilo, nao precisava postar o codigo anti-injection :)

vindo de ASP, touxe algumas funções boas, algumas migrei sem problema e outras encontrei melhores

2. sobre o agradecimento; você esta tendo boa vontade em me ajudar, o minimo que devo é ser grato :)

o João Batista tem uns codigos bacanas, mas ainda estou longe de entender esse 'dialeto' heheheheheh

 

a consulta na tbl_cidade

uma url valida=> www.site.com.br/produto/cabo-frio/mustang-gt-500.html

eu efetuo uma consulta por 'cabo-frio' para identificar erro do tipo

www.site.com.br/produto/cabo-quente/mustang-gt-500.html

www.site.com.br/produto/cabo-frio/mustang-gt-3500.html

se eu nao consultar a tbl_cidade nao vou saber qual o erro, se é a cidade errada ou o produto incorreto

 

além disso, a consulta resgata o nome da cidade para exibição

produtos em Cabo Frio, e não, produtos em cabo frio

e ainda tenho o total de produtos setado numa coluna pra não fizar fazendo um count geral, por isso precisa ser em array

 

 

colocar um autoloader seria uma outra opção que percorre as páginas:

model_comment.php, model_produto.php, model_cidade.php

estas vão conter todas as bases de consulta, para exibir produto, paginar produtos de uma categoria...

assim vejo mais facil administrar mediante uma possivel manutenção

 

 

[]s

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.