Re: overloading members. aghhh!!!

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

 



Ok, this is a great solution
Thanks ;)

"Robert Cummings" <robert@xxxxxxxxxxxxx> escribió en el mensaje 
news:1195471647.1702.40.camel@xxxxxxxxxx
> On Mon, 2007-11-19 at 11:25 +0100, Kiketom wrote:
>> Hi all.
>> Yesterday i have looking for the overloading members
>>
>> Member overloading
>> void __set ( string name, mixed value )
>> mixed __get ( string name )
>>
>> As an example i put this code:
>>
>> class foo
>> {
>>     private $ID;
>>     private $Name;
>>     private $LastName;
>>
>>     private function __get($var)
>>     {
>>         return $var;
>>     }
>>
>>     private function __set($var,$value)
>>     {
>>         $var = $value;
>>     }
>> }
>>
>>
>> $foo = new foo();
>> $foo->ID = 1;
>> $foo->Name = "Henry";
>> $foo->LastName = "Ford",
>> ....
>>
>> that's horrible!!!
>>
>> And if i want to validate that ID > 0??
>>
>> i have to put this validation in the function __set for each property??
>>     private function __set($var,$value)
>>     {
>>         if ($var = 'ID')
>>         {
>>             //validate that ID is > 0
>>         }
>>         $var = $value;
>>     }
>>
>>
>> Not exists a better method to manage the properties in a class?
>>
>> Like in C#
>>
>> private int _ID;
>>
>> public int ID
>> {
>>     get { return _ID;}
>>     set
>>     {
>>         if (value > 0)
>>         {
>>             _ID = value;
>>         }
>>  else
>>  {
>>      //Exception
>>  }
>>     }
>> }
>
> Well, if you really want to, you can do the following:
>
> <?php
>
> class foo
> {
>    private $ID;
>    private $Name;
>    private $LastName;
>
>    private function __get( $var )
>    {
>        if( method_exists( $this, '___get_'.$var ) )
>        {
>            return $this->{'___get_'.$var}();
>        }
>        else
>        {
>            return $this->{$var};
>        }
>    }
>
>    private function __set( $var, $value )
>    {
>        if( method_exists( $this, '___get_'.$var ) )
>        {
>            return $this->{'___set_'.$var}( $value );
>        }
>        else
>        {
>            return ($this->{$var} = $value);
>        }
>    }
>
>    private function ___get_ID()
>    {
>    }
>
>    private function ___set_ID( $value )
>    {
>    }
> }
>
> ?>
>
> But I wouldn't.
>
> Cheers,
> Rob.
> -- 
> ...........................................................
> SwarmBuy.com - http://www.swarmbuy.com
>
>    Leveraging the buying power of the masses!
> ........................................................... 

-- 
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