It has a number of uses (primarily breaking large classes up, into smaller components..), and a clearer way to write code than using a huge inheritance tree.. - It may not be correct OO code, by the book, but it is usefull in certian situations.
It can be regarded as a feature, but if it is going to change at some point in the future, it's better to make that very clear now, rather than get a big backlash when we change it, and more people have worked out this little trick.... (and start to rely on it...)
Technically I guess overload is the real way it should be done in ZE2.....
Regards
Alan
Brad LaFountain wrote:
--- Bertrand Mansion <[EMAIL PROTECTED]> wrote:
<[EMAIL PROTECTED]> wrote :Where in the manual do you see this?
--- Bertrand Mansion <[EMAIL PROTECTED]> wrote:SHOULDN'T
<[EMAIL PROTECTED]> wrote?:This SHOULDN'T print 'out of this', This seems like a bug, and you
$classname::method() === call_user_func(array($classname,'method'));No. $classname::method() is illegal and is in no case === to
call_user_func(array($classname,'method')) as you state it.
Class foo {
function bar() {
echo $this->param;
}
}
Class MyObject {
var $param;
function MyObject($param) {
$this->param = $param;
foo::bar();
}
}
$obj = new MyObject('out of this');
will print 'from MyObject'.
depend on this functionality. The scope of $this inside class foo methodbar,
Should be to foo::bar NOT MyObject::MyObject. Which if my memory serves meHi Brad,
right $this inside a static method will just be the string of the current
class?
Are you sure about that ? The manual states that this is the normal
behaviour which I find very handy and useful in many cases. I see a lot of
possibilities with this feature, for instance a way to develop some kind of
plug-ins for existing classes without having to extend them.
This can probably lead to some dangerous code but this goes far beyond mybesides dangerous code if you find yourself doing this, you probally aren't
knowledge.
designing it correct. Your creating a static method of a class to access local
properties of another class thru the use of $this. If you want a way to access
member variables from a class in a static method, pass the object refrence into
the method.
Class foo {
function bar($obj) {
echo $obj->param;
/* $this should referr to the foo refrence, not another class refrence
*/
}
}
Class MyObject {
var $param;
function MyObject($param) {
$this->param = $param;
foo::bar($this);
}
}
- Brad
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com
--
Can you help out? Need Consulting Services or Know of a Job?
http://www.akbkhome.com
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php