Visibilidade OOP

1 view
Skip to first unread message

Allisson Brito

unread,
Jun 22, 2009, 7:02:55 AM6/22/09
to PHP-AL
Bom pessoal nas reinações aqui fiz a seguinte classe:
http://pastebin.com/m1d71136f

Só que dá este erro: Fatal error: Cannot access protected property bd::
$host in /var/www/classes/Bd.class.php on line 18

Eu estudei mas ainda nao entendo como funciona a tal da "visibilidade"
=D ja tentei com private deu erro tbm..

Alguém pode me ajudar? valeu!

Klevison Matias

unread,
Jun 22, 2009, 7:22:02 AM6/22/09
to php...@googlegroups.com
Justamente pelo conceito de Encapsulamento que você não consegue acessar as variáveis como protected e private. Para clarear tua mente faz o seguinte:

Usa métodos gets e sets, tipo:

public setHost ($h){
   $this->host = $h;
}

public getHost(){
  return $this->host;
}

Note que os métodos setHost() e getHost() são públicos, daí você pode acessar de qualquer quer classe ou script PHP. Porém o atributo $host é private, ou seja, apenas métodos da mesma classe acessa(nesse caso, setHost() e getHost() estão na mesma classe que $host), sacou?

2009/6/22 Allisson Brito <alliss...@hotmail.com>

Allisson.brito

unread,
Jun 22, 2009, 7:25:29 AM6/22/09
to PHP-AL
Klevison pode me passar o msn ta mal a situação aqui. =[

On 22 jun, 08:22, Klevison Matias <klevi...@gmail.com> wrote:
> Justamente pelo conceito de Encapsulamento que você não consegue acessar as
> variáveis como protected e private. Para clarear tua mente faz o seguinte:
> Usa métodos gets e sets, tipo:
>
> public setHost ($h){
>    $this->host = $h;
>
> }
>
> public getHost(){
>   return $this->host;
>
> }
>
> Note que os métodos setHost() e getHost() são públicos, daí você pode
> acessar de qualquer quer classe ou script PHP. Porém o atributo $host é
> private, ou seja, apenas métodos da mesma classe acessa(nesse
> caso, setHost() e getHost() estão na mesma classe que $host), sacou?
>
> 2009/6/22 Allisson Brito <allissonc...@hotmail.com>

Klevison Matias

unread,
Jun 22, 2009, 7:31:25 AM6/22/09
to php...@googlegroups.com
klev...@gmail.com

2009/6/22 Allisson.brito <alliss...@hotmail.com>

Klevison Matias

unread,
Jun 22, 2009, 7:34:03 AM6/22/09
to php...@googlegroups.com
<?php
class bd{
protected $usuario; //Variável onde será armazenado o nome do usuário
protected $host; //Variável onde será armazenado o nome do host
protected $senha; //Variável onde será armazenado a senha
protected $banco; // Variável onde será armazenado o nome do banco de dados

function conecta(){
mysql_connect($this->host, $this->usuario, $this->senha) or die ("Algum erro aconteceu ao tentar conectar ao banco de dados");
mysql_select_db($this->banco) or die ("O banco de dados não existe");
}

public function setHost ($h){
$this->host = $h;
}

public function getHost(){
return $this->host;
}

}

$teste =  new bd();
$teste->setHost("localhost");
$test-> conecta();
?>

Clareou mais?

2009/6/22 Klevison Matias <klev...@gmail.com>

Allisson.brito

unread,
Jun 22, 2009, 7:37:17 AM6/22/09
to PHP-AL
sim spobre o que vc falou eu saquei sim, seria assim o atributo $host
ta protegido mas ae eu crio um metodo dentro da função para setar um
valor a ele assim posso colocar um valor dentro dele pelo método
getHost correto sem ter problemas com a proteção (encapsulamento)?

On 22 jun, 08:31, Klevison Matias <klevi...@gmail.com> wrote:
> klevi...@gmail.com
>
> 2009/6/22 Allisson.brito <allissonc...@hotmail.com>

Klevison Matias

unread,
Jun 22, 2009, 7:40:31 AM6/22/09
to php...@googlegroups.com
Exatamente. Você cria um método dentro da Classe e seta um valor para uma variável protegida ou privada. Porém quem 'bota' o valor na variável é o setHost e quem 'tira'(recupera) o valor é o getHost.

2009/6/22 Allisson.brito <alliss...@hotmail.com>

Allisson.brito

unread,
Jun 22, 2009, 7:43:35 AM6/22/09
to PHP-AL
Então para todos os atributos tenho que criar metodos para setar e
tirar os valores correto?

On 22 jun, 08:40, Klevison Matias <klevi...@gmail.com> wrote:
> Exatamente. Você cria um método dentro da Classe e seta um valor para uma
> variável protegida ou privada. Porém quem 'bota' o valor na variável é o
> setHost e quem 'tira'(recupera) o valor é o getHost.
>
> 2009/6/22 Allisson.brito <allissonc...@hotmail.com>

Klevison Matias

unread,
Jun 22, 2009, 7:55:16 AM6/22/09
to php...@googlegroups.com
Dependendo da sua necessidade, sim. Cada classe tem uma particularidade. Pode ser que uma determinada classe você possa não encapsular nada. Quem diz isso é o programador.

2009/6/22 Allisson.brito <alliss...@hotmail.com>

Allisson.brito

unread,
Jun 22, 2009, 8:01:43 AM6/22/09
to PHP-AL
Tou ligado , Klevison Muito obrigado viu? qualquer coisa volto aqui
para pertubar a todos uahuahsuas valew brother add no msn fui!!

On 22 jun, 08:55, Klevison Matias <klevi...@gmail.com> wrote:
> Dependendo da sua necessidade, sim. Cada classe tem uma particularidade.
> Pode ser que uma determinada classe você possa não encapsular nada. Quem diz
> isso é o programador.
>
> 2009/6/22 Allisson.brito <allissonc...@hotmail.com>

Filippi da Silva Rizzi

unread,
Jun 22, 2009, 8:04:12 AM6/22/09
to php...@googlegroups.com
Uma boa pratica é na hora de vc setar as variaveis fazer as verificações, por exemplo a restrição é q a variavel nome tenha no minimo 5 caracteres ai vc faria eles só setar se tiver ok,
 
class pessoa{
 
 protected $nome;
 
  public function setNome($_nome)
  {
    if(strlen($_nome)>=5)
     $this->nome = $_nome;
    else
     return false;
  }
}
ficaria mais ou menos assim!!
2009/6/22 Klevison Matias <klev...@gmail.com>

Allisson.brito

unread,
Jun 22, 2009, 2:24:04 PM6/22/09
to PHP-AL
Um massa =D aos poucos tou me adaptando e aprendendo mais sobre oop ,
tou gostando muito do assunto ainda penso em criar alguma besteirinha
em oop. Valew!

On 22 jun, 09:04, Filippi da Silva Rizzi <filippi.ri...@gmail.com>
wrote:
> Uma boa pratica é na hora de vc setar as variaveis fazer as verificações,
> por exemplo a restrição é q a variavel nome tenha no minimo 5 caracteres ai
> vc faria eles só setar se tiver ok,
>
> class pessoa{
>
>  protected $nome;
>
>   public function setNome($_nome)
>   {
>     if(strlen($_nome)>=5)
>      $this->nome = $_nome;
>     else
>      return false;
>   }}
>
> ficaria mais ou menos assim!!
> 2009/6/22 Klevison Matias <klevi...@gmail.com>
>
> > Dependendo da sua necessidade, sim. Cada classe tem uma particularidade.
> > Pode ser que uma determinada classe você possa não encapsular nada. Quem diz
> > isso é o programador.
>
> > 2009/6/22 Allisson.brito <allissonc...@hotmail.com>

Allisson.brito

unread,
Jun 22, 2009, 8:01:21 PM6/22/09
to PHP-AL
Bom pessoal , criei uma classe para validar os campos de um formulario
com e ao termino enviar para um e-mail setado no momento que a classe
for chamada.

O código fonte é o seguinte:
http://pastebin.com/m1d9aea30

Será que funcionaria?

Obrigado a todos!
> > >> > > > > > > Alguém pode me ajudar? valeu!- Ocultar texto das mensagens anteriores -
>
> - Mostrar texto das mensagens anteriores -

Jarbas Segundo

unread,
Jun 22, 2009, 8:05:44 PM6/22/09
to php...@googlegroups.com
cara pelo que conheço OOP, não se faz necessário vc criar uma classe
só pra validar algo. Tipo se você tá validando algo referente a um
cadastro de Fornecedor, na classe fornecedor vc cria um método pra
validar o OBJETO Fornecedor e foi.

Tipo claro que no php eu não sei se as coisas funcionam bem assim,
porém em outras linguagens sim.

Abração.

Em 22/06/09, Allisson.brito<alliss...@hotmail.com> escreveu:
--
Jarbas B. M. Segundo
Desenvolvedor .NET
Celular: +55(82)9964-2950
Messenger : jbmsegundo[AT]hotmail.co.uk
Skype : jbmsegundo
Blog : http://blog.madeinpbit.com.br

Allisson.brito

unread,
Jun 22, 2009, 8:13:12 PM6/22/09
to PHP-AL
Podes crer , mas essas classes são para testes , e gostaria de saber
se na teoria funcionaria a mesma. entende?

On 22 jun, 21:05, Jarbas Segundo <jbmsegu...@gmail.com> wrote:
> cara pelo que conheço OOP, não se faz necessário vc criar uma classe
> só pra validar algo. Tipo se você tá validando algo referente a um
> cadastro de Fornecedor, na classe fornecedor  vc cria um método pra
> validar o OBJETO Fornecedor e foi.
>
> Tipo claro que no php eu não sei se as coisas funcionam bem assim,
> porém em outras linguagens sim.
>
> Abração.
>
> Em 22/06/09, Allisson.brito<allissonc...@hotmail.com> escreveu:
> Blog :http://blog.madeinpbit.com.br- Ocultar texto das mensagens anteriores -

Jarbas Segundo

unread,
Jun 22, 2009, 8:21:09 PM6/22/09
to php...@googlegroups.com
Cara tipo assim de acordo com oop e numa definição barata minha a
classe é algo que possa ser representado( Cão, Gato, Fornecedor,
Cliente), algo que possua caracteristicas(Atributos). E os métodos
seriam as ações(no seu exemplo a validação). então ao meu ver sua
implementação de OOP estaria fora, pois tu estarias definindo uma
classe pra validação, onde poderia ser um simples método.

Não sei se deu pra entender heaueuahe.... mas eu tentei explicar! ;D

Abração

Em 22/06/09, Allisson.brito<alliss...@hotmail.com> escreveu:
>

Allisson.brito

unread,
Jun 22, 2009, 8:53:01 PM6/22/09
to PHP-AL
Deu sim pow =D eu etendi o que tu quis dizer, em palavras claras
( Para validação poderia ser criada uma simples função e nao uma
classe) . Mas como já frizei é so um teste =D .

On 22 jun, 21:21, Jarbas Segundo <jbmsegu...@gmail.com> wrote:
> Cara tipo assim de acordo com oop e numa definição barata minha a
> classe é algo que possa ser representado( Cão, Gato, Fornecedor,
> Cliente), algo que possua caracteristicas(Atributos). E os métodos
> seriam as ações(no seu exemplo a validação). então ao meu ver sua
> implementação de OOP estaria fora, pois tu estarias definindo uma
> classe pra validação, onde poderia ser um simples método.
>
> Não sei se deu pra entender heaueuahe.... mas eu tentei explicar! ;D
>
> Abração
>
> Em 22/06/09, Allisson.brito<allissonc...@hotmail.com> escreveu:
> >> Blog :http://blog.madeinpbit.com.br-Ocultar texto das mensagens

Beto

unread,
Jun 22, 2009, 10:39:14 PM6/22/09
to php...@googlegroups.com
Sobre OOP o conceito e o mesmo p/ todas a linguagem Jarbas ( nunca tomou um corote! kkkkkk )

E Alisson, vc pode ir fazendo e testando seus arquivos localmente, e so intalar o apache e o php na sua maquina, esse software ja instala tudo p vc e te disponibiliza um ambiente de testes bem bacana:

http://www.apachefriends.org/en/xampp.html

Isso nao quer dizer que vc nao deve postar suas duvidas na lista, pelo contrario, mas e uma dica de vc ver seus arquivos funcionando de maneira real :D

[]s



- - - - - - - - - - - - - - - - - - - - -
Luiz Alberto S. Ribeiro [ Beto ]
http://beto.euqueroserummacaco.com

Jarbas Segundo

unread,
Jun 22, 2009, 10:49:31 PM6/22/09
to php...@googlegroups.com
Não, nunca mesmo! kkkkkkk
Eu tava olhando aqui e iria até postar um exemplo com php, mas a
questão de php ser totalmente dinamico, eu me passei nos retornos dos
Métodos(function).

Mas em se tratando de validação, vc não necessáriamente faz com o
valor do campo do formulário, vc pode passar o objeto como argumento e
validar! ;DDD

[]s

Em 22/06/09, Beto<madeinn...@gmail.com> escreveu:

Beto

unread,
Jun 22, 2009, 10:51:43 PM6/22/09
to php...@googlegroups.com
Q parte tu se atraplahou com o retorno ?
POsta tua duvida ai , quem sabe a gente pode ajudar ;)


[]s

- - - - - - - - - - - - - - - - - - - - -
Luiz Alberto S. Ribeiro [ Beto ]
http://beto.euqueroserummacaco.com


2009/6/22 Jarbas Segundo <jbmse...@gmail.com>

Jarbas Segundo

unread,
Jun 22, 2009, 10:52:47 PM6/22/09
to php...@googlegroups.com
Vejo que a galera tem uma certa dificuldade em usar OOP, seria
interessante uma palestra nesse evento sobre OOP + PHP! ;D. E também
outro assunto interessante seria sobre PHP Rodando sobre .NET(leia-se
Phalanger) ;D

[]s

Em 22/06/09, Jarbas Segundo<jbmse...@gmail.com> escreveu:

Beto

unread,
Jun 22, 2009, 10:54:53 PM6/22/09
to php...@googlegroups.com
O Espaco ta aberto p vc se candidatar a da uma canjinha ;), principalmente sobre o Phalanger que eu confesso que nunca ouvi falar.


[]s



- - - - - - - - - - - - - - - - - - - - -
Luiz Alberto S. Ribeiro [ Beto ]
http://beto.euqueroserummacaco.com


2009/6/22 Jarbas Segundo <jbmse...@gmail.com>

Jarbas Segundo

unread,
Jun 22, 2009, 10:56:55 PM6/22/09
to php...@googlegroups.com
Tipo assim Beto, numa linguagem tipada(C#/Java) seu método seria

private string RetiraSimbolos(string s){

s.Replace("/", "");
s.Replace("\", "");

return s;
}

no php como seria basicamente isso, o retorno do método, como tratarei?

Jarbas Segundo

unread,
Jun 22, 2009, 11:06:17 PM6/22/09
to php...@googlegroups.com
Sim, eu me candidato aí a falar sobre o PHP no .NET ;D . Preciso saber
dos detalhes neh de quanto tempo de palestra e talz.. hehee


e você velho, não vai falar sobre nada no evento não?

Allisson.brito

unread,
Jun 23, 2009, 2:25:49 AM6/23/09
to PHP-AL
1blz Beto, =D entendi o que vc disse! vlw

On 23 jun, 00:06, Jarbas Segundo <jbmsegu...@gmail.com> wrote:
> Sim, eu me candidato aí a falar sobre o PHP no .NET ;D . Preciso saber
> dos detalhes neh de quanto tempo de palestra e talz.. hehee
>
> e você velho, não vai falar sobre nada no evento não?
>
> []s
>
> Em 22/06/09, Jarbas Segundo<jbmsegu...@gmail.com> escreveu:
>
>
>
> > Tipo assim Beto, numa linguagem tipada(C#/Java) seu método seria
>
> > private string RetiraSimbolos(string s){
>
> > s.Replace("/", "");
> > s.Replace("\", "");
>
> > return s;
> > }
>
> > no php como seria basicamente isso, o retorno do método, como tratarei?
>
> > Em 22/06/09, Jarbas Segundo<jbmsegu...@gmail.com> escreveu:
> >> Vejo que a galera tem uma certa dificuldade em usar OOP, seria
> >> interessante uma palestra nesse evento sobre OOP + PHP! ;D. E também
> >> outro assunto interessante seria sobre PHP Rodando sobre .NET(leia-se
> >> Phalanger) ;D
>
> >> []s
>
> >> Em 22/06/09, Jarbas Segundo<jbmsegu...@gmail.com> escreveu:
> >>> Não, nunca mesmo! kkkkkkk
> >>> Eu tava olhando aqui e iria até postar um exemplo com php, mas a
> >>> questão de php ser totalmente dinamico, eu me passei nos retornos dos
> >>> Métodos(function).
>
> >>> Mas em se tratando de validação, vc não necessáriamente faz com o
> >>> valor do campo do formulário, vc pode passar o objeto como argumento e
> >>> validar! ;DDD
>
> >>> []s
>
> >>> Em 22/06/09, Beto<madeinnorde...@gmail.com> escreveu:

Beto

unread,
Jun 23, 2009, 7:22:49 AM6/23/09
to php...@googlegroups.com
Jarbas em php poderia ser:

private RetiraSimbolos($string){
    $string = str_replace('\', '', $string);
    $string = str_replace('/', '', $string);
    return $string;
}


ou pode se usar a ereg_replace no local de str_replace, mais informacoes:
http://www.php.net/manual/pt_BR/function.ereg-replace.php

[]´s



- - - - - - - - - - - - - - - - - - - - -
Luiz Alberto S. Ribeiro [ Beto ]
http://beto.euqueroserummacaco.com


2009/6/23 Allisson.brito <alliss...@hotmail.com>

Jarbas Segundo

unread,
Jun 23, 2009, 7:44:59 AM6/23/09
to php...@googlegroups.com
hááá beleza, o método também não tem um tipo determinado... é
dinâmico! Nós que nos viremos pra controlar o código ;DD hehehe


[]s



Em 23/06/09, Beto<madeinn...@gmail.com> escreveu:

Beto

unread,
Jun 23, 2009, 8:27:40 AM6/23/09
to php...@googlegroups.com
Nós não ... as maquinas huauhahua!

:P



- - - - - - - - - - - - - - - - - - - - -
Luiz Alberto S. Ribeiro [ Beto ]
http://beto.euqueroserummacaco.com


2009/6/23 Jarbas Segundo <jbmse...@gmail.com>

Filippi da Silva Rizzi

unread,
Jun 23, 2009, 1:28:43 PM6/23/09
to php...@googlegroups.com
exite uma forma de vc controlar qual o tipo q a variavel vai ser quando vc atribui um valor a ela, por exemplo
 
$var = "10202"; // ela aqui seria uma string com um numero dentro
$var2 = (integer) $var; //aqui a var continua com sua strring mas a var2 será um inteiro;
 
bom eu ja precisei usar isso 1x, trabalhando com o xml ele dava uns sinistros quando eu comparava um valor com o outro. Mas o resto da minha vida toda o php fez o papel dele de converter automaticamente os tipos perfeitamente!


 
2009/6/23 Beto <madeinn...@gmail.com>
Reply all
Reply to author
Forward
0 new messages