chamar metodos de metodos diretamente com php [RESOLVIDO]

1. chamar metodos de metodos diretamente com php [RESOLVIDO]

Victor Guimarães Nunes
nunesvictor

(usa Ubuntu)

Enviado em 06/09/2008 - 20:14h

eu sou novo em PHPOO e estava fazendo uns testes e não estou conseguindo fazer algo:

tipo em java:

String nome = "victor";
bool res = nome.toUpperCase().equals("VICTOR");

então:

toUpperCase é um metodo da classe String de java, e como ele retorna um String também eu posso chamar diretamente o metodo equals que também e da classe String. Como fazer isso em php? Algo do tipo...

$cadastro = new UserCadastro( "Victor", "00000000000" );
$cpf = $cadastro->getCpf()->maskCpf();

tem como?!


  


2. acho que não

thiago
iceoz

(usa Debian)

Enviado em 07/09/2008 - 10:38h

cara faz tempo que programo php. manjo de php OO mais nunca consegui faze isso. por mais que retorne uma variavel do msm tipo. não sei pq nun funfa. me bati pacas quando sai do java pro php ahuahau. mais nun dah não. talvez no php 6. no 5 vc tem que guarda o retorno em alguma variavel. pelo menos quando eu tentei faze algo semalhante ao que vc fez não deu tive que faze isso. é triste nun funfa igual a java economiza muito codigo =/


3. pow...

Victor Guimarães Nunes
nunesvictor

(usa Ubuntu)

Enviado em 07/09/2008 - 11:27h

q pena então...
=/

vou ter q fazer umas gambiarras. rsrs

flw


4. Re: chamar metodos de metodos diretamente com php [RESOLVIDO]

Júlio Ferreira de Souza Neto
juliofsn

(usa Fedora)

Enviado em 11/09/2008 - 23:26h

Bastaria você criar uma classe Cpf com o método maskCpf(), e garantir que getCpf() da classe UserCadastro vai retornar uma instância dessa classe. Sempre funcionou comigo, sem precisar guardar numa variável.


5. é, fiz isso

Victor Guimarães Nunes
nunesvictor

(usa Ubuntu)

Enviado em 12/09/2008 - 11:05h

então seria +/- assim?

na classe UserCadastro:

function getCpf() {
return( new StringWork( $this->getCpf() ) );
}

na classe StringWork:

class StringWork
{
private $string;

function __construct( $string ) {
$this->string = $string;
}

function maskCpf() {
$cpf = $this->string;

// procedimentos de mascaramento

return( $maskedCpf );
}
}


6. Re: chamar metodos de metodos diretamente com php [RESOLVIDO]

Júlio Ferreira de Souza Neto
juliofsn

(usa Fedora)

Enviado em 13/09/2008 - 11:06h

sim, é +/- isso, só não entendi essa chamada recursiva:

function getCpf() {
return( new StringWork( $this->getCpf() ) );
}

mas aí acho que é coisa do seu programa.


7. Re: chamar metodos de metodos diretamente com php [RESOLVIDO]

Júlio Ferreira de Souza Neto
juliofsn

(usa Fedora)

Enviado em 13/09/2008 - 11:13h

um exemplo rápido do que eu pensei que você queria:

class C1{
function getValor(){
return "valor";
}
}

class C2{
function getC1{
return new C1();
}
}

$c = new C2();
echo $c->getC1()->getValor(); //vai imprimir "valor" na tela


8. é, no final das contas...

Victor Guimarães Nunes
nunesvictor

(usa Ubuntu)

Enviado em 13/09/2008 - 17:13h

eu perguntei a um professor meu e ele me recomendou a fazer assim:

na classes cpf...

class CPF
{
private $value;

function __constructor( $string ) {
$this->setValue( $string );
}

function setValue( $cpf ) {
$this->value = $cpf;
}

function getValue() {
return( $this->value );
}

function maskCPF() {
$maskedcpf = $this->getValue();
// procedimentos para mascarar o cpf...
return( $maskedcpf );
}
}

na classe registroaluno...

class RegistroUsuario
{
function setCPF( $cpf ) {
$this->cpf = new CPF( $cpf );
}

function getCPF() {
return( $this->cpf );
}
}

e no uso...

$aluno = new RegistroAluno();
. . .
print $aluno->getCPF()->maskCPF();


9. Embora esteja resolvido, pode-se sempre melhorar

Gedalias Costa
gedalinux

(usa Slackware)

Enviado em 28/09/2008 - 22:32h

seria bom inclusive se o pessoal do VOL usasse no codigo
pre formato, poi sempre que enviamos um codigo, fica todo
ruim,kkkk

<?php
//como somente pode haver um cpf por entidade de pessoa
//o metodo setValue($cpf) é desnecessario se seguir OOP/UML
//e pode-se passar diretamente o $cpf no construtor

class CPF{
private $value;
public function __constructor($cpf) {
$this->value = $cpf;
}
//agora que o metodo "escritor" se faz desnecessario entao
//este metodo publicante deve receber um nome que tenha sentido para a classe
//e para o que ele faz.
public function getMaskedCPF() {
return $this->maskCPF();
}
//agora que sabemos que maskCpf tem um objetivo unico e sua caracteristica é intriseca
//do Objeto CPF nada mais justo que reduzir su visibilidade ao maximo
//tornado "private"
private function maskCPF() {
// seguem os procedimentos para mascarar o conteudo de $this->value...
//neste ponto o metodo maskCpf() realiza seu papel e retorna o
//o conteudo formatodo corretamente para a camada superior
return $this->value;
}
}

//A classe RegistroAluno tambem representa um unico aluno logo haverá um
//objeto RegistroAluno() para cada aluno passado para o SERVIDOR
//mesmo que seja um registro completo de alunos

//respeitando a OOP devemos tornar o nome da classe segundo su orientacao
//no mundo dos negocios e renomearemos simplesmente para Aluno
//Agora Sim ela representa um aluno e nao um registro de aluno o que para a
//analise é "outra coisa";
class Aluno{
private $cpf;
private $nome;
public function __construct($nome,$cpf) {
$this->nome = $nome;
//aqui vc tem uma associacao tipo composicao -FALANDO EM UML
$this->cpf = new CPF($cpf);
}
//metodo publicante
public function getCPF() {
return $this->cpf->getMaskedValue();
}
//metodo publicante
public function getNome(){
return $this->nome;
}
}

//e no uso ...

$aluno = new Aluno("Nome do aluno","12345678901");
//agora veja um uso limpo e claro do seu codigo para qualquer programador de
//verdade ler e entender e super desacoplado e coeso.
print "CPF: ".$aluno->getCPF() ."\n";
print "NOME: ". $aluno->getNome() ."\n";

?>






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts