Re: Accessors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Feb 19, 2009, at 10:55 AM, Jochem Maas wrote:

please keep replies on list.

Sorry!

Philip Thompson schreef:
On Feb 19, 2009, at 2:59 AM, Jochem Maas wrote:

Philip Thompson schreef:
Hi all.

....


What are your thoughts? Does this seem like a reasonable implementation? Useful? Pointless? Hit me up - I can handle *constructive* criticism.
But for now, it's late and past my bedtime.

how do you set a property to null?

Oh sure, point that out! JK. I thought of that as well. For members
where 'null' is an option, you may just want to create a definitive
accessor or modify the __call() function. Use a string to represent null
- I'll use 'nil' from objective-c. Something like this...

yes but then someone might want to set the value to 'nil' or '__nil'
or any other magic value you might want to use.

what about capturing a method name prefix:

$person->unsetFirst();

Yes, that is quite a viable option. I thought about the same thing, except for setting the member. Modify the __call method to check for 'set' before the member name....

$person->setFirst('John');
$person->setFirst(null);

If you do it this way, there is no doubt that you are wanting to set the value. And it even allows null.

~Philip


<?php
public function __call ($member, $args)
{
   if (property_exists ('Person', $member)) {
       if (empty ($args)) {
           list ($value) = $this->$member;
           return $value;
       }

       // Test to see if value is 'nil'. If so, set to null.
       if (!is_array ($args[0]) && $args[0] == 'nil') {
           $args[0] = null;
       }

       $this->$member = $args;
   }
   else {
die ("Fatal Error: Call to undefined member: $member. Exiting...");
   }
}

$person = new Person();
$person->first('Billy');
$person->first('nil');
?>

I suppose it's a possibility that someone will assign 'nil' to a member
as an actual value, so put in some more checking or modify the null
keyword - maybe '__nil' or whatever? That a possibility?

Cheers,
~Phil

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux