I wrote about real properies a few days ago but no one seems to be
interested in it.
I think that it would be nice to have real properties present in PHP. I
mean properties like those in C# but a little more flexible by allowing
getter and setter to have different visibility. See sample code below:
Sample code:
class person {
public $firstName, $lastName;
public getter fullName { // may also have ()
return "{$this->firstName} {$this->lastName}";
}
public setter fullName ($value) { // may also not have ($value) but
a special var.
list ($this->firstName, $this->lastName) = explode (' ', $value, 2);
}
}
$p = new person;
$p->fullName = "Foo bar";
echo $p->firstName . "\n";
echo $p->lastName . "\n";
echo $p->fullName . "\n";
Sample result:
Foo
bar
Foo bar
Marian Kostadinov wrote:
public getter fullName { // may also have ()
return "{$this->firstName} {$this->lastName}";
}public setter fullName ($value) { // may also not have ($value) but
a special var.
list ($this->firstName, $this->lastName) = explode (' ', $value, 2);
}
This can be easily done with
function _get($name)
{
$get = "get$name";
return $this->$get();
}
function _set($name, $value)
{
$set = "set$name";
$this->$set($value);
}
in your base class (the function names are then get_fullName/set_fullName.
- Chris
Marian Kostadinov wrote:
public getter fullName { // may also have ()
return "{$this->firstName} {$this->lastName}";
}public setter fullName ($value) { // may also not have ($value) but
a special var.
list ($this->firstName, $this->lastName) = explode (' ', $value, 2);
}This can be easily done with
function _get($name)
{
$get = "get$name";return $this->$get();
}
function _set($name, $value)
{
$set = "set$name";$this->$set($value);
}
in your base class (the function names are then get_fullName/set_fullName.
- Chris
I know this solutions but it does not solve the property visibility
issues and good overloading rules like in common methods. Let's say
you have about 6-7 suche proterties which you expect to overload and
some of the are private e.t.c
This can be easily done with
function _get($name)
{
$get = "get$name";return $this->$get();
}
function _set($name, $value)
{
$set = "set$name";$this->$set($value);
}
in your base class (the function names are then get_fullName/set_fullName.
But that has plenty of problems, like I described here:
http://news.php.net/php.internals/17491
Derick
Derick Rethans
http://derickrethans.nl | http://ez.no | http://xdebug.org
I very much like your idea and syntax. I come from a Delphi background (when
it comes to properties) and I must say I like your solution. It's easy and
effective. Yes, it can be done with __set() and __get(), but it sure is
uglier when you have a wide and constant range of properties.
+1 (with 0 karma anyway).
Ron
"Marian Kostadinov" manchokapitancho@gmail.com wrote in message
news:bec76cf9050825032978cd308d@mail.gmail.com...
I wrote about real properies a few days ago but no one seems to be
interested in it.
I think that it would be nice to have real properties present in PHP. I
mean properties like those in C# but a little more flexible by allowing
getter and setter to have different visibility. See sample code below:
Sample code:
class person {
public $firstName, $lastName;
public getter fullName { // may also have ()
return "{$this->firstName} {$this->lastName}";
}
public setter fullName ($value) { // may also not have ($value) but
a special var.
list ($this->firstName, $this->lastName) = explode (' ', $value, 2);
}
}
$p = new person;
$p->fullName = "Foo bar";
echo $p->firstName . "\n";
echo $p->lastName . "\n";
echo $p->fullName . "\n";
Sample result:
Foo
bar
Foo bar