[script at end]

Does it seem strange that although object members can
store functions, they can't be used as methods?

That is, we can have
  $TestObject->mTestMember = create_function('','echo "TestMember<br>";');
but we can't do
  $TestObject->mTestMember();

Can I get around this using clever placement of {}'s or ()'s?
Or do I have to make two separate calls, such as
  $temp = $TestObject->mTestMember;
  $temp();

At first glance, it seems like a parser problem.
But I couldn't get it to go away by placing ()'s
and {}'s...  Perhaps I wasn't being clever enough.

Can anyone help?  It seems odd that accessing members
as methods wouldn't be allowed, but variable functions
(http://www.php.net/manual/en/functions.variable-functions.php PHP Manual, Chap 12)
would be.

On the other hand, it's not safe to willy-nilly be
introducing methods to a class.  But then again,
I can still do
  $TestObject->mPreviouslyUndeclaredMember = 'Huh?';
so, I don't buy this line of reasoning.

Bug or language feature or other?

Thanks,
TSB


Here's a script which illustrates this problem...
<?php
class TestClass {
  function TestMethod() {
    echo "TestMethod<br>";
  }

  function Init() {
    $this->mTestMember = create_function('','echo "TestMember<br>";');
  }

  var $mTestMember;
}

$Tc = new TestClass;

//case 1: works (standard method invocation)
$Tc->TestMethod();

$Tc->Init();

//case 2: doesn't work (member as method)
//$Tc->mTestMember(); //doesn't work

//case 3: works (two-step)
$holder = $Tc->mTestMember;
$holder();

?>




-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to