Re: [PHP] new $foo->className(); Class name must be a valid object or a string

[email protected] (Stut)
Newsgroups php.general
Message-ID <[email protected]>
On 4 May 2008, at 00:46, Jack Bates wrote:
> I am trying to load PHP objects stored in a database, where the class
> name is stored in a column:
>
> $object = new $resultSet->getString(1);
>
> This fails for the same reason that the following fails:
>
> <?php
>
> class Foo
> {
>  public function className()
>  {
>    return 'Foo';
>  }
> }
>
> $foo = new Foo;
> $bar = new $foo->className();

I would rather have a factory method that returns a new instance of  
the class. There's no need for the outside world to know the class name.

<?php
   class Foo
   {
     public function newInstance()
     {
       return new self();
     }

     public function test($a)
     {
       echo 'test: '.$a."\n";
     }
   }

   $foo = new Foo;
   $foo->test('foo');
   $bar = $foo->newInstance();
   $bar->test('bar');
?>

However, if you insist on doing it your way can I make a small  
suggestion? It's better to spend your time on functionality rather  
than finding ways to save some typing. I see no reason to try to  
combine the two statements - saving typing and a pitiful amount of  
disk space are the only benefits.

-Stut

-- 
http://stut.net/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.