Reply to Why do I have to declare __set if I declare __get for read-only properties?

Your name:

Reply:


Posted by C Drozdowski on 04/05/05 03:16

Howdy,

I'd like to access some of the private members of my classes as
read-only properties without resorting to function calls to access
them. (e.g. $testClass->privateMember instead of
$testClass->privateMember(), etc)

Based on my research and testing, using the __get and __set overloading
methods appears to be the only way to do so. It also, based on testing,
appears that these private members must be in an array.

What I do not understand is that if I declare a __get method I MUST
also declare a "do nothing" __set method to prevent the read-only
properties from being modified in code that uses the class.

For example, the code below allows me to have read-only properties.
However, if I remove the "do nothing" __set method completely, then the
properties are no longer read-only.

I'm curious as to why I HAVE to implement the __set method?

Example:

<?php

class testClass
{
private $varArray = array('one'=>'ONE', 'two'=>'TWO');

public function __get($name)
{
if (array_key_exists($name, $this->varArray)) {
return $this->varArray[$name];
}
}

public function __set($name, $value)
{
}

}

$test = new testClass();

$test->one = 'TWO'; // doesn't work
echo $test->one; // echo s 'ONE'

?>

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация