Connecting Tech Pros Worldwide Forums | Help | Site Map

Can I instantiate a new object within an if statement?

Phil Latio
Guest
 
Posts: n/a
#1: Jul 6 '07
Here is some basic example code:

$newUser = new User();
if ($newUser->SaveNewUser())
{
echo "success";
}
else
{
echo "failure";
}

Question. Can I modify the above so I instantiate a new object within an if
statement and apply a method all on one line?

Cheers

Phil





Joe Scylla
Guest
 
Posts: n/a
#2: Jul 6 '07

re: Can I instantiate a new object within an if statement?


Phil Latio wrote:
Quote:
Here is some basic example code:
>
$newUser = new User();
if ($newUser->SaveNewUser())
{
echo "success";
}
else
{
echo "failure";
}
>
Question. Can I modify the above so I instantiate a new object within an if
statement and apply a method all on one line?
>
Cheers
>
Phil
Not if you want to use the *new* statement.

But you can add a static method to the class returning the object, so
you can use following code:

<code>
if (User::instance()->saveNewUser())
{
echo "success";
}
else
{
echo "failed";
}
</code>

the static method may look like this:

<code>
public static function &instance()
{
static $instance = null;
if (is_null($instance))
{
$instance = new User();
//some more code to create the object
}
return $instance;
}
</code>
Rik
Guest
 
Posts: n/a
#3: Jul 6 '07

re: Can I instantiate a new object within an if statement?


On Fri, 06 Jul 2007 09:38:05 +0200, Joe Scylla <joe.scylla@gmail.com
wrote:
Quote:
Phil Latio wrote:
Quote:
>Here is some basic example code:
> $newUser = new User();
>if ($newUser->SaveNewUser())
>{
> echo "success";
>}
>else
>{
> echo "failure";
>}
> Question. Can I modify the above so I instantiate a new object within
>an if statement and apply a method all on one line?
> Cheers
> Phil
>
Not if you want to use the *new* statement.
>
But you can add a static method to the class returning the object, so
you can use following code:
>
<code>
if (User::instance()->saveNewUser())
{
echo "success";
}
else
{
echo "failed";
}
</code>
>
the static method may look like this:
>
<code>
public static function &instance()
{
static $instance = null;
if (is_null($instance))
{
$instance = new User();
//some more code to create the object
}
return $instance;
}
</code>
While this can certainly be done, this is a way to create a Singleton.
Unless that's what the OP wants, forget about the static $instance.


--
Rik Wasmus
Joe Scylla
Guest
 
Posts: n/a
#4: Jul 6 '07

re: Can I instantiate a new object within an if statement?


Rik wrote:
Quote:
On Fri, 06 Jul 2007 09:38:05 +0200, Joe Scylla <joe.scylla@gmail.com>
wrote:
>
Quote:
>Phil Latio wrote:
Quote:
>>Here is some basic example code:
>> $newUser = new User();
>>if ($newUser->SaveNewUser())
>>{
>> echo "success";
>>}
>>else
>>{
>> echo "failure";
>>}
>> Question. Can I modify the above so I instantiate a new object
>>within an if statement and apply a method all on one line?
>> Cheers
>> Phil
>>
>Not if you want to use the *new* statement.
>>
>But you can add a static method to the class returning the object, so
>you can use following code:
>>
><code>
>if (User::instance()->saveNewUser())
> {
> echo "success";
> }
>else
> {
> echo "failed";
> }
></code>
>>
>the static method may look like this:
>>
><code>
>public static function &instance()
> {
> static $instance = null;
> if (is_null($instance))
> {
> $instance = new User();
> //some more code to create the object
> }
> return $instance;
> }
></code>
>
While this can certainly be done, this is a way to create a Singleton.
Unless that's what the OP wants, forget about the static $instance.
>
You are right. The instance method dont have to be a static:

<code>
//class
class test
{
private $Id = 0;
public function __construct($id = 0)
{
$this->Id = $id;
}
public function instance($id)
{
$r = new test($id);
//do some more stuff
return $r;
}
public function getId()
{
return ($this->Id 0) ? $this->Id : false;
}
}

//test
if (test::instance(1)->getId())
{
echo "success";
}
else
{
echo "failed";
}
</code>


gosha bine
Guest
 
Posts: n/a
#5: Jul 6 '07

re: Can I instantiate a new object within an if statement?


On 06.07.2007 08:27 Phil Latio wrote:
Quote:
Here is some basic example code:
>
$newUser = new User();
if ($newUser->SaveNewUser())
{
echo "success";
}
else
{
echo "failure";
}
>
Question. Can I modify the above so I instantiate a new object within an if
statement and apply a method all on one line?
>
Cheers
>
Phil
>
>
>
>
No, this is a limitation of php parser

(new Object)->method()

is not possible. Don't ask why. ;)


--
gosha bine

extended php parser ~ http://code.google.com/p/pihipi
blok ~ http://www.tagarga.com/blok
Closed Thread