Ir para conteúdo

Arquivado

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

Lady01

Getters e Setters de classe não funcionam adequadamente

Recommended Posts

Estou tentando manipular uma classe com seus getters e setters e não estou conseguindo. Tentando explicar melhor: Eu setto cada atributo do objeto dessa classe, depois dou echo neles e não imprime o esperado, também não exibe erro nenhum. Alguém já passou por isso? Ou será que mudou algo dessa parte e eu não estou sabendo?

A classe:

<?php
class Paciente
{
    private $id;
    private $id_plano;
    private $nome;
    private $email;
    private $data_nascimento;
    private $status;
    private $endereco;
     public function Paciente() {
         }
    
     public function getId(){
        return $this->id;
    }
    public function setId($id){
        $this->id = $id;
    }
     public function getId_Plano(){
        return $this->id_plano;
    }
    public function setId_Plano($id_plano){
        $this->id = $id_plano;
    }
     
    public function getNome(){
        return $this->nome;
    }
    public function setNome($nome){
        $this->nome = $nome;
    }
     public function getEmail(){
        return $this->email;
    }
    public function setEmail($email){
        $this->nome = $email;
    }
     public function getData_nascimento(){
        return $this->data_nascimento;
    }
    public function setData_nascimento($data_nascimento){
        $this->nome = $data_nascimento;
    }
    public function getStatus(){
        return $this->status;
    }
    public function setStatus($status){
        $this->nome = $status;
    }
    public function getEndereco(){
        return $this->endereco;
    }
    public function setEndereco($endereco){
        $this->nome = $endereco;
    }
    
    
}
?>

O teste:

include('Paciente.class.php');
$paciente = new Paciente();
$paciente->setId(1);
$paciente->setId_Plano(2);
$paciente->setNome('clarice');
$paciente->setEmail('clarice@gmail.com');
$paciente->setData_nascimento('04/12/2016');
$paciente->setStatus(1);
$paciente->setEndereco('Rua xcfgvhbjnkm,fgvhbjnkm');
echo "<br>id ".$paciente->getId();
echo "<br>idPlano ".$paciente->getId_Plano();
echo "<br>nome ".$paciente->getNome();
echo "<br>email ".$paciente->getEmail();
echo "<br>data ".$paciente->getData_nascimento();
echo "<br>status ".$paciente->getStatus();
echo "<br>endereco ".$paciente->getEndereco();
var_dump($paciente);

O que imprime:

id 2
idPlano 
nome Rua xcfgvhbjnkm,fgvhbjnkm
email 
data 
status 
endereco

object(Paciente)[1]
  private 'id'   
  private 'id_plano'  
  private 'nome'    (length=25)
  private 'email'  
  private 'data_nascimento'  
  private 'status'  
  private 'endereco'  

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, washalbano disse:

Olá!

Em setEndereco() e vários outros methods você está alterando a variável $this->nome

Já matou a questão. O famoso ctrl c + ctrl v sem atenção...

No próprio var_dump daria para perceber "Nome: Rua xkxkxkxkkxkfkkgkgk"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse  comando      include('Paciente.class.php');

 

deveria ser   include('Paciente-class.php');

 

porque o sistema operacional Windows e Linux identificam tudo depois do PONTO como sendo a extensão final de arquivo, ou seja: tudo depois do PONTO é o que identififica que tipo de arquivo ele é (no sistema operacional).

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 horas atrás, Ana Gauna disse:

porque o sistema operacional Windows e Linux identificam tudo depois do PONTO como sendo a extensão final de arquivo, ou seja: tudo depois do PONTO é o que identififica que tipo de arquivo ele é (no sistema operacional).

Neste caso quem processa o arquivo php é o servidor, apache/nginx etc. Se você quiser, você pode até usar extensões falsas para coibir ataques, mas é uma das maneiras mais fracas de segurança.

 

Não sou usuário do RuinWindows, e nem tenho servidores usando esta plataforma, mas a identificação do arquivo, é sempre pelo ultimo ponto + extensão, tanto é que você pegar este arquivo Paciente.class.php e colocar um .docx no final

 

Citar

Paciente.class.php.docx

Vai abrir o LibreOffice no linux, acredito que no Windows o Word

Compartilhar este post


Link para o post
Compartilhar em outros sites
35 minutos atrás, Williams Duarte disse:

Neste caso quem processa o arquivo php é o servidor, apache/nginx etc. Se você quiser, você pode até usar extensões falsas para coibir ataques, mas é uma das maneiras mais fracas de segurança.

 

Não sou usuário do RuinWindows, e nem tenho servidores usando esta plataforma, mas a identificação do arquivo, é sempre pelo ultimo ponto + extensão, tanto é que você pegar este arquivo Paciente.class.php e colocar um .docx no final

 

Vai abrir o LibreOffice no linux, acredito que no Windows o Word

 
 

 

Eu já usei Linux, eu já comprei máquina com Linux instalado anos atrás, eu sei entrar no Linux, excluir a partição dele, formatar o disco rígido e instalar o Windows que eu adoro já tem dezenas de anos, no lugar do Linux...

 

Tanto o Windows como o Linux são sistema operacional. O sistema operacional entende que depois do PONTO se identifica a extensão de um arquivo, se identifica que tipo de arquivo ele é, e a qual software esse arquivo pertence.

 

Quando um arquivo tem o nome muito grande, ou quando o nome do arquivo tem muitos PONTOS, ou quando o nome do arquivo tem muita separação feita com espaços em branco, algumas vezes isso dá problemas, e esse arquivo para de funcionar.

 

No caso de nomes de diretório muito grandes e com muitos espaços em branco dentro do nome do diretório, algumas vezes um diretório também para de funcionar.

 

Esse problema de um nome de arquivo ou nome de diretório parar de funcionar, algumas vezes ocorre por problemas no disco rígido ou por problemas de falha de energia elétrica ou por problemas de falha causada por energia instável com variação.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
52 minutos atrás, Ana Gauna disse:

 

Tanto o Windows como o Linux são sistema operacional. O sistema operacional entende que depois do PONTO se identifica a extensão de um arquivo, se identifica que tipo de arquivo ele é, e a qual software esse arquivo pertence.

 

As coisas mudaram muito nos últimos tempos. rsrsrs

 

Programas interpretados, é independente de sistemas operacionais. Como o próprio nome já diz "interpretados", depende de interpretadores, queira você ou não. E seja em Ambiente Windows, Linux ou Unix.

 

52 minutos atrás, Ana Gauna disse:

Quando um arquivo tem o nome muito grande, ou quando o nome do arquivo tem muitos PONTOS, ou quando o nome do arquivo tem muita separação feita com espaços em branco, algumas vezes isso dá problemas, e esse arquivo para de funcionar.

 

No caso de nomes de diretório muito grandes e com muitos espaços em branco dentro do nome do diretório, algumas vezes um diretório também para de funcionar.

 

Esse problema de um nome de arquivo ou nome de diretório parar de funcionar, algumas vezes ocorre por problemas no disco rígido ou por problemas de falha de energia elétrica ou por problemas de falha causada por energia instável com variação.

 

 

Neste caso concordo.

 

Mas onde discordei, foi na questão dos includes.

 

10 horas atrás, Ana Gauna disse:

Esse  comando      include('Paciente.class.php');

 

deveria ser   include('Paciente-class.php');

 

porque o sistema operacional Windows e Linux identificam tudo depois do PONTO como sendo a extensão final de arquivo, ou seja: tudo depois do PONTO é o que identififica que tipo de arquivo ele é (no sistema operacional).

Neste caso tanto faz, com ponto ou com traço, a questão que essa nomenclatura .class era usada para determinar em uma pasta, que o arquivo era uma classe. Hoje em dia nem se usa mais isso, mas o que vale é o .php no final do arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 horas atrás, Williams Duarte disse:

As coisas mudaram muito nos últimos tempos. rsrsrs

 

Programas interpretados, é independente de sistemas operacionais. Como o próprio nome já diz "interpretados", depende de interpretadores, queira você ou não. E seja em Ambiente Windows, Linux ou Unix.

 

Neste caso concordo.

 

Mas onde discordei, foi na questão dos includes.

 

Neste caso tanto faz, com ponto ou com traço, a questão que essa nomenclatura .class era usada para determinar em uma pasta, que o arquivo era uma classe. Hoje em dia nem se usa mais isso, mas o que vale é o .php no final do arquivo.

 
 
 

 

Sei que as coisas mudaram nos últimos 20 anos, eu vi, eu uso a internet desde 1995.

Continuo discordando.  Nome de arquivo é nome de arquivo.  Para não ter problemas depois o nome de um arquivo sempre tem que ter traço e não espaço e não ponto, idem nome de pastas, isso não sofreu nenhuma alteração nos ultimos 20 anos. Pessoas leigas em computação é quem mais tem o costume de deixar espaços ou pontos, que depois dão problema no diretório onde os arquivos estão gravados. 

Eu li a sintaxe desse comando include do PHP, ali dentro do parentese se coloca o nome do arquivo a ser chamado para ser executado.  Nome de arquivo o padrão é igual ha mais de 20 anos e não sofreu alteração.  Nome de arquivo e nome de diretório não pode conter acentos, não pode conter o til, não pode conter espaços, não pode conter PONTO. O PONTO identifica que o que vem depois é a identificação de que tipo de arquivo ele é.  Isso não sofreu alteração nenhuma nos últimos 20 anos. 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
28 minutos atrás, Ana Gauna disse:

Nome de arquivo é nome de arquivo.  Para não ter problemas depois o nome de um arquivo sempre tem que ter traço e não espaço e não ponto.

Desculpe, mas a maioria dos usuários aqui não são leigos, e muitos menos tem subserviência aos que acham que tem o gold hammer. Aconselho que use o fórum para se atualizar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nome de arquivo é nome de arquivo.  Para não ter problemas depois o nome de um arquivo sempre tem que ter traço e não espaço e não ponto.

Desculpe, mas a maioria dos usuários aqui não são leigos, e muitos menos tem subserviência aos que acham que tem o gold hammer. Aconselho que use o fórum para se atualizar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já dei suporte técnico a muito usuário leigo nos últimos 20 anos.  Eu já vi muita coisa que usuário leigo costuma fazer.

Nos últimos 20 anos a minha atenção o foco tem sido no hardware de servidor Windows, e no suporte a usuário de área de advocacia, contabilidade, administração e engenharia.  Mudei meu foco. Atualmente voltei a estudar programação.

Bom dia.  Bom domingo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse comando INCLUDE do PHP parece que ele sofreu alguma alteração com o HTML5 olha o que eu achei:

Ao que parece, pelo que eu entendi, o uso do parêntese no PHP é até o HTML4 

No HTML5 o código do PHP parou de usar o parêntese no comando INCLUDE.

 

http://php.net/manual/pt_BR/function.include.php

 

https://www.w3schools.com/php/php_includes.asp

 

http://www.phpbrasil.com/artigo/N_uhBooNEMIE/usando-include-no-php

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha nomes muito longos podem dar problemas mas os pontos não. o que importa é só o que vem depois do último ponto. se tu observares verá que até os arquivos do próprio windows vem muitos com 'nome do arquivo.2.1.0.exe' por exemplo. praticamente todos os grandes desenvolvedores de programas botam os nomes dos instaladores de seus produtos nesse formato nome.1.1.0.exe ou nome.1.1.2.zip e por aí afora. isso não é problema. até acentuação não é problema pois temos os urlencodes, urldecodes, htmlentitites e por ai afora que lidam com isso. eu concordo que é melhor evitar quando se está colocando eles online. eu sempre coloco sem espaço, sem acentuação e tudo em minúsuculo, nem traço gosto de usar, prefiro underline e em poucas situação mas chegar a ser um problema não chega exatamente. já no que se fala de arquivos locais que não vai ser acessado pelo browser o unico problema é o nome se muito grande, o resto não interfere nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Interfere sim.  É só ter uma alteração de voltagem no computador, que a pasta de diretório ou o arquivo com a caracteristica de ter ponto demais, ou espaço ou acento ou cedilha ou o til, essa pasta especifica ou arquivo, ele pára de funcionar de vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois eu nunca vi isso acontecer sério e uso windows há bastante tempo. pode ser que alguma vez aconteceu de perderem pasta ou arquivo devido a erro do próprio disco e acabaram ligando com espaço ou pontos nos nomes das pastas e arquivos porque se fosse assim a própria criadora do windows não usava nomes com espaços e vários pontos como eles usam

Compartilhar este post


Link para o post
Compartilhar em outros sites
57 minutos atrás, Ana Gauna disse:

Interfere sim.  É só ter uma alteração de voltagem no computador, que a pasta de diretório ou o arquivo com a caracteristica de ter ponto demais, ou espaço ou acento ou cedilha ou o til, essa pasta especifica ou arquivo, ele pára de funcionar de vez.


Poderia colocar suas referências técnicas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ana Gauna Apesar que os padrões de Arquitetura de computadores serem os mesmos proposto pelo húngaro Von Neumann, até os dias de hoje, estamos na quinta geração de computadores com suporte a diversos unicode. Você está defendendo uma tese totalmente equivocada, sem base e sem fundamentos, e/ou com base no seu conhecimento em cima do WINDOWS. PHP é uma linguagem interpretada desenvolvida para vários ambientes UNIX/Linux/Windows etc. O que torna essa linguagem poderosa,  mesmo criticada por alguns Javazeiros e C++#eticistas. Mas ela não é default Windows.

Você esta querendo descer para baixo nível, C, e bater o martelo de ouro,  onde não se encaixa no fórum de PHP, pois isso já é outra linguagem, que realmente tem esses problemas de interpretação, mas não é o caso do PHP. 

Hoje estamos no PHP 7, Bem diferente do PHP/FI, há 20 anos atrás kkkkkkkkk
 

Compartilhar este post


Link para o post
Compartilhar em outros sites
30 minutos atrás, EdCesar disse:


Poderia colocar suas referências técnicas?

 

 

Esperiência, eu já vi acontecer, e com arquivo importante do setor de contabilidade.  Salvação, tinha backup.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha por experiência também posso dizer que isso nada tem a ver com espaços e nem pontos no nome dos arquivos. como falei pode ser que eles estavam num setor com problemas no hd e esses problema do hd que causou isso porque espaços e pontos em nomes de arquivos e pastas não causa esse tipo de problemas. e a própria desenvolvedora do windows não usaria espaços e pontos se isso fosse problema, como falei antes hehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 minutos atrás, Williams Duarte disse:

@Ana Gauna Apesar que os padrões de Arquitetura de computadores serem os mesmos proposto pelo húngaro Von Neumann, até os dias de hoje, estamos na quinta geração de computadores com suporte a diversos unicode. Você está defendendo uma tese totalmente equivocada, sem base e sem fundamentos, e/ou com base no seu conhecimento em cima do WINDOWS. PHP é uma linguagem interpretada desenvolvida para vários ambientes UNIX/Linux/Windows etc. O que torna essa linguagem poderosa,  mesmo criticados por alguns Javazeiros e Ceticistas. Mas ela não é default Windows.

Você esta querendo descer para baixo nível, C, e bater o martelo de ouro,  onde não se encaixa no fórum de PHP, pois isso já é outra linguagem, que realmente tem esses problemas de interpretação, mas não é o caso do PHP. 

Hoje estamos no PHP 7, Bem diferente do PHP/FI, há 20 anos atrás kkkkkkkkk
 

 

 

@Williams Duarte  Eu estudei C, estudei Cobol, estudei Pascal na década de 80.  Na década de 90 eu estudei o SQL.  Eu nunca estudei o PHP.   Mas eu achei as rotinas PHP de IF THEM ELSE e as rotinas de WHILE o modo delas funcionar, quase igual ao PASCAL que eu estudei. Eu já fiz o download do PHP versão 7, mas eu ainda não instalei ele.  Comprei vários livros, ainda não terminei de ler.  Já tem anos que eu não uso este site do iMasters, não consegui fazer login no meu perfil mais velho que este.

Eu estou enferrujada para programar. Já tem muitos anos que eu não programo absolutamente nada.  Até o SQL eu sabia programar ele, mas eu já esqueci, estou relembrando tudo.  Eu já instalei o Microsoft SQL Express no meu computador e o IIS.

Eu não transformei a minha máquina em servidor, tenho que comprar em breve um computador novo para conseguir instalar uma coisa que eu quero experimentar e requer processador XEON de 4 ou 8 núcleos para poder funcionar direito.  Vou tentar criar algo com PHP durante a semana.  E vou testar alguns códigos que eu achei aqui no iMasters.  Eu me esqueci de muita coisa do que se refere a programação, mas eu tenho meus livros, eu tenho minhas apostilas, eu vou me lembrar de novo.

O senhor gosta do Linux.  Eu adoro retirar o Linux dos meus computadores, e colocar o Windows. Mas, tudo bem, tá?

Bom dia.  Bom domingo.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.