Jump to content
Fórum Script Brasil
  • 0

Duvida sobre instanciamento de classes


vini_loock
 Share

Question

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 to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.8k
    • Total Posts
      648.7k
×
×
  • Create New...