Ir para conteúdo

Arquivado

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

guih_oliveira10

nota para minha classe

Recommended Posts

Pelo visto esse exemplo do retângulo e do quadrado é bastante usado. :lol:

 

Agora compreendi sobre esse LSP, a questão é que a classe Z que extende determinada classe X, não deve fazer algo que não seja esperado pela funcionalidade básica da classe X.

 

então, seguindo as analogias, o seguinte estaria violando esse principio:

 

class Vendedor {
   public function vender()
   {
       $this->receberDinheiro();
   }
}

class VendedorEstagiario extends Vendedor {
   public function vender()
   {
       $this->darDinheiro();
   }
}

certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo visto esse exemplo do retângulo e do quadrado é bastante usado.

 

Sim, é um exemplo clássico, existem outros, mas esse é bem interessante. :D

 

Agora compreendi sobre esse LSP, a questão é que a classe Z que extende determinada classe X, não deve fazer algo que não seja esperado pela funcionalidade básica da classe X.

 

certo?

 

A classe derivada não deve ter um comportamento diferente do que aquele definido pelas regras da classe base.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

João Batista Neto bela explicação! Nem sabia da existência desse princípio da substituição de Barbara Liskov.

 

JCMais sintetizou muito bem a ideia :clap:

 

O que achei interessante: "...especialização deve ser totalmente compatível com a operação original do tipo B em termos de comportamento."

Compartilhar este post


Link para o post
Compartilhar em outros sites

É bacana quando esses tópicos assim rendem :D

Puxei essa do LSP láaaa do fundo embaixo do fundo falso do baú do ceLebro... hehe...

Lembro que meu professor mencionou isso há 2 anos atrás e eu gravei :huh:.

 

@JCMais, que preconceito é esse com estagiário? ashusahassauh...

Se Deus quiser, serei um em 1 ano e alguns meses...

Compartilhar este post


Link para o post
Compartilhar em outros sites

É bacana quando esses tópicos assim rendem

 

Realmente. :)

 

Se já não tivéssemos tantos tópicos pendurados, esse poderia ser pelo conteúdo que já tem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@JCMais, que preconceito é esse com estagiário? ashusahassauh...

Se Deus quiser, serei um em 1 ano e alguns meses...

 

Haha, nada contra, mas vai que ele passa o troco errado. :lol:

 

 

Realmente. :)

 

Se já não tivéssemos tantos tópicos pendurados, esse poderia ser pelo conteúdo que já tem.

 

O fórum está precisando de mais tópicos que movimentem idéias, quanto mais tópico desse tipo melhor, porque todos nós ganhamos experiência. :D

 

@off-topic

O curso que você vai ministrar irá tratar de teorias como esta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O curso que você vai ministrar irá tratar de teorias como esta?

 

O curso PHP Orientado a Objetos é um curso online e já está publicado no iMasters Pro, mas não aborda essa parte.

 

Estou para publicar um novo curso chamado Princípios e Padrões de Design em PHP Orientado a Objetos que vai abordar toda essa parte de princípio design de classes e pacotes, além dos padrões de design que costumo postar muita coisa aqui no fórum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, mudança finalmente feita hehe' (um pouco demorada) e tudo arrumado

 

nesses dias, pude implementar mais alguns métodos que achei de extrema importância a minha classe:

 

mysql.class.php

<?php

//Constantes
define('host','127.0.0.1');
define('user','root');
define('senha','');
define('db','teste');

//Inicio da classe  
class mysql{

//Definições de variáveis
private $conn;
public $sql;

public function mysql($host = host, $user = user, $senha = senha, $db = db){

	if($this->conn == NULL){

		$this->conn = mysql_connect($host,$user,$senha) or die(mysql_error());
		mysql_select_db($db,$this->conn);

	}

}

//Função para fechar a conexão MYSQL
public function close_conn(){

	if($this->conn != NULL){

		unset($this->sql);
		mysql_close($this->conn);

	}

}

//Função anti-injection SQL
public function anti_injection($sintese,$sql = true){

	$sintese = strip_tags($sintese);
	$sintese = trim($sintese);

	if($sql){

		if(!get_magic_quotes_gpc()){

			$sintese = mysql_real_escape_string($sintese,$this->conn);

		}

	}

	return $sintese;

}

//Função que executa uma query no MYSQL
public function query($query){

	$this->sql = mysql_query($query,$this->conn);

}

//Função para retornar o número de resultados de uma query
public function nums(){

	if($this->sql != NULL){

		return mysql_num_rows($this->sql);	

	}	

}

//Retorna os resultados de acordo com a função desejada
public function fetch($func = ''){

	if($this->sql != NULL){

		switch($func){

			case 'array': return mysql_fetch_array($this->sql); break;

			case 'assoc': return mysql_fetch_assoc($this->sql); break;

			case 'row': return mysql_fetch_row($this->sql); break;

			case 'object': return mysql_fetch_object($this->sql); break;

			default: return mysql_fetch_assoc($this->sql); break;

		}	

	}

}

}

?>

 

vou retomar meus estudos de PHP OO, estou muito ancioso pra aprender tudo

sempre que eu puder , posto resultados e avanços aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opá .. melhorou bem, mas ainda tem coisa que pode fazer melhor ! isso aí, continua estudando que você vai longe ! ... agora, só uma coisa

 

if($this->sql != NULL){

 

Troque isto aí, por um :

if ( is_resource ( $this -> sql ) ) 
    // ...

 

Fica bem melhor, você testa logo de vez, se é uma resource, no caso o mysql_query, retorna um resource ! ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não use constantes em minúsculas, é uma boa prática você utilizá-las em MAIÚSCULAS.

 

E eu creio que criar constantes para a configuração do BD não seja o ideal, o melhor é você ter um arquivo de configuração, arquivo ini por exemplo, aí você pode utilizar a função nativa do php parse_ini_file.

 

 

Eu não sei se você está seguindo algum padrão para nomear suas classes, metódos e propriedades, mas caso não esteja, recomendo dá uma olhada no padrão proposto pela Zend: http://framework.zend.com/manual/en/coding-standard.naming-conventions.html e http://framework.zend.com/manual/en/coding-standard.coding-style.html

 

E parabéns por está se dedicando a aprender. Continue assim, que você vai lonje. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opá .. melhorou bem, mas ainda tem coisa que pode fazer melhor ! isso aí, continua estudando que você vai longe ! ... agora, só uma coisa

 

if($this->sql != NULL){

 

Troque isto aí, por um :

if ( is_resource ( $this -> sql ) ) 
	// ...

 

Fica bem melhor, você testa logo de vez, se é uma resource, no caso o mysql_query, retorna um resource ! ..

 

humm, vivendo e aprendendo mesmo

não sabia q existia essa função

 

muito obrigado

 

 

 

 

Não use constantes em minúsculas, é uma boa prática você utilizá-las em MAIÚSCULAS.

 

Há algum motivo especial pra se usar constantes em MAIÚSCULAS ?

 

E eu creio que criar constantes para a configuração do BD não seja o ideal, o melhor é você ter um arquivo de configuração, arquivo ini por exemplo, aí você pode utilizar a função nativa do php parse_ini_file.

 

Bem interessante isso, não conhecia. biggrin.gif

Mais qual a diferença entre o uso de constantes e o uso de um arquivo de configurações?

 

 

Eu não sei se você está seguindo algum padrão para nomear suas classes, metódos e propriedades, mas caso não esteja, recomendo dá uma olhada no padrão proposto pela Zend: http://framework.zen...onventions.html e http://framework.zen...ding-style.html

 

E parabéns por está se dedicando a aprender. Continue assim, que você vai lonje. :thumbsup:

 

Vou da uma lida sim no material, obrigado tongue.gif

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Há algum motivo especial pra se usar constantes em MAIÚSCULAS ?

 

É uma questão de boa prática de desenvolvimento. Já percebeu que as constantes do php são em maiúsculas?

 

Mais qual a diferença entre o uso de constantes e o uso de um arquivo de configurações

 

Vou falar o que penso. Com um arquivo de configuração fica mais fácil de você setar os dados da conexão. Imagine que em uma hospedagem o acesso ao banco é feito pelo usuário maria e com senha 123mudar e em outra hospedagem é joao com senha 321mudar.

 

Com essas constantes na classe você teria que alterar sempre seu arquivo mysql.class.php, já com uma configuração separada basta setar novos dados em um arquivo pré estabelecido sem precisar alterar sua classe.

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.