Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida sobre instanciamento de classes


vini_loock

Pergunta

Olá, estou estudando algumas coisas para um projeto que começarei em breve e estou com uma dificuldade, que na verdade não passa de frescura, mas seria legal se eu conseguisse.

Esse sistema trabalhará com muita manipulação de dados, independente dos tipos. Ai eu tava pensando em fazer algo menos PHP, para ficar mais bonito, amigavel...

A minha ideia seria criar uma classe para cada tipo(string, int, ..) e trabalhar com elas assim:

echo new String('myString')->isMail()
O problema é que o PHP exige que depois de instanciar, eu não chame nenhum metodo do objeto, apenas termine a linha. Para contornar isso, criei uma função com o mesmo nome da classe e nessa função eu instancio a classe, no modo de trabalhar ficou quase igual:
echo String('myString')->isMail()
Isso já até me serve, mas agora estou cismado nisso e quero por todo custo fazer da forma que eu tinha pensado no começo, logo, queria saber de vocês: é possivel fazer isso? Caso eu não tenha sido claro, aqui está um exemplo:
<?php
    
    class String
    {
        protected $_str;
        
        public function __construct($str)
        {
            $this->_str = (string) $str;
        }
        
        public function get()
        {
            return $this->_str;
        }
    }
    
    function String($str)
    {
        return new String($str);
    }
    
    /*
     * O que eu quero é utilizar assim:
     * echo new String('teste')->get();
     */
    
    echo String('teste')->get();
    
?>

At, Vinicius

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Amigo, o modo de instancia que eu conheço é o seguinte

$variavel_qualquer = new CLASSE (PARAMETRO_SE_QUISER); // o parametro serve para classe construtura ou variaveis globais

$variavel_qualquer -> METODO_QUE_EU_QUERO(PARAMETRO_SE_QUISER);

// posso chamar qualquer metodo da classe que instanciei emcima, e posso até passa um parametro pra ela, ai ela vai precisa de um RETURN para volta o valor :) creio que saiba

Espero ter ajudado

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, mas o que eu queria, é fazer algo diferente. Além de instanciar, quero poder chamar de imediato um método dessa classe.

Ex:

$myString = new String('teste').math();

Nada de mais, quero apenas instanciar a classe, salvar esta instancia em uma variável, mas já na hora de instanciar, chamar o método math

Link para o comentário
Compartilhar em outros sites

  • 0

Espero ajudar dessa vez, qualquer coisa manda ai denovo :D

você pode usar o metódo construtor da classes, quando a classe é instanciada, tudo que tiver la dentro é executado.

exemplo, funçoes e outros metodos;

o metódo contrutor é o primeiro metodo de cima sendo

//quando você instancia a classe esse é o primeiro metodo que ele lê e já executa no ato da instanciação.
public function __construct()
{
     //pode chamar ele aqui fazendo o seguinte
     self::math();
}

public function math()
{
     //seu metodo
}

Link para o comentário
Compartilhar em outros sites

  • 0

No PHP 5.4 você pode fazer o seguinte:

(new Foo())->bar();

Criar classes para os tipos primitivos não faz muito sentido. Além de adicionar mais complexidade ao código.

Outra coisa, uma classe String com um método isMail? Cada classe deve ter apenas uma responsabildade (responsabilidade = razão para mudar) Essa responsabilidade deve ser bem definida.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...