Hi Greg, thanks for the example. I think i now understand a bit more. I just need a confirmation on this
$table->FirstName = 'Greg'; $table->LastName = 'Beaver'; This will actually call __set and it will create a member variable named FristName with the value Greg. And if you call $table->FirstName and it is not set it will return false right ? Honestly i find this way of coding no so clean. Maybe it is because i am used to do all my sets by hand $this->SetFirstName($first_name){ $this->first_name= $first_name; } $this->GetFirstName(){ if(!isset($this->first_name)){ return false; }else{ return $this->first_name; } } SO what are the advantages to use __get, __set. Aviously the way i do it, i do it i have to re have to redoit for all my variables. But also i was told to never access a variable directly so i have the feeling like i am doing a capital sin :D Yann On Wed, 2003-07-09 at 02:59, Yann Larrivee wrote: > -----Forwarded Message----- > > From: Greg Beaver <[EMAIL PROTECTED]> > To: Yann Larrivee <[EMAIL PROTECTED]> > Cc: [EMAIL PROTECTED] <[EMAIL PROTECTED]> > Subject: Re: __get, __set, __clone > Date: 08 Jul 2003 22:13:37 -0400 > > Hi Yann, > > What you are trying to do is possible in PHP 4, actually: > > <?php > class MyTester { > function MyTester() > { > $this->var_name1 = "value1"; > $this->var_name2 = "value2"; > } > } > > $test = new MyTester; > var_dump($test); // shows two variables, $var_name1 and $var_name2 > ?> > > Here is sample code that uses __set to allow you to transparently > declare an object that allows you to set database values just by setting > properties. > > <?php > class UsesSetForMysql { > private $_db; > private $_table; > private $_row; > private $_keyname; > function __construct($server, $user, $password, $database, $table, > $keyname, $keyvalue) > { > $this->_db = mysql_connect($server, $user, $password); > $this->_keyname = $keyname; > $this->_table = $table; > if ($this->_db) { > $test = mysql_select_db($this->_db, $database); > if ($test) { > $a = mysql_query('SELECT * FROM ' . $this->_table . ' > WHERE ' . $this->_keyname . ' = "' . $keyvalue . '"'); > if ($a) { > $this->_row = mysql_fetch_array($a, MYSQL_ASSOC); > } > } else { > mysql_close($this->_db); > $this->_db = false; > } > } > } > > function __destruct() > { > if ($this->_db) { > mysql_close($this->_db); > $this->_db = false; > } > } > > function __set($name, $value) > { > if (isset($this->_row) && $this->_row) { > $this->_row[$name] = $value; > $a = mysql_query('UPDATE ' . $this->_table . " SET $name = > \"$value\" WHERE " . $this->_keyname . ' = "' . > $this->_row[$this->_keyname] . '"'); > if ($a) { > $keyvalue = $this->_row[$name]; > if ($name == $this->_keyname) { > $keyvalue = $value; > } > $a = mysql_query('SELECT * FROM ' . $this->_table . ' > WHERE ' . $this->_keyname . ' = "' . $keyvalue . '"'); > $this->_row = mysql_fetch_array($a, MYSQL_ASSOC); > } > } > } > > function __get($name, &$value) > { > if (isset($this->_row) && is_array($this->_row)) { > if (isset($this->_row[$name])) { > $value = $this->_row[$name]; > return true; > } else { > return false; > } > } > } > } > > $table = new UsesSetForMysql('localhost', 'dummy', 'madeup', 'mytable', > 'mykey', 6); > $table->FirstName = 'Greg'; > $table->LastName = 'Beaver'; > // etc. > ?> > > :) > Greg > > Yann Larrivee wrote: > > Hi, in the past 2 days i have been looking into php5 and it's new > > features. > > > > I am not a psecialiste of OOP (only been OOPing for 2 month) > > > > For a moment i tought that __set would allow me not to have to define a > > methode __set that would set a value to a member variable. > > > > It seems like we have to define the class __set and __get. > > > > for example i tought i would be able to do. > > > > class a{ > > function __construct(){ > > $this->__set("var_name1","value1"); > > $this->__set("var_name2","value2"); > > } > > } > > > > I read these 2 tutorial > > http://www.phpbuilder.com/columns/argerich20030411.php3?page=5 (the > > explanation seems really bad to me and does not show any usefull way to > > use these functions) > > > > http://talks.php.net/show/php5intro/25 > > This one well i comes back to the same thing as if i code it my self. > > > > So my big question is why , when , how do we use these features > > (__get,__set) > > For a moment i tought i would save me time, but if i have to redefine > > them what is the point ? > > > > I guess i am somewhat confuse on this issue, any explanation would be > > appreciated. > > > > Thanks > > > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php