ID:               24286
 Comment by:       tony2001 at phpclub dot net
 Reported By:      terjeto at stud dot ntnu dot no
 Status:           Verified
 Bug Type:         Zend Engine 2 problem
 Operating System: RedHat 9.0
 PHP Version:      5CVS-2003-06-22 (dev)
 New Comment:

I expect that using attribute of the object as method name it will work
as it's already working with PHP4.

That is:
$object->attribute = 'method_name';
and with
$object->attribute();
$object->method_name(); should be called.
Maybe I'm wrong, but in case of $object->obj_attribute->attribute(); we
have the same situation - we're calling
$object->obj_attribite->{method, which name contains
$object->obj_attribute->attribute }();

Am I wrong?


Previous Comments:
------------------------------------------------------------------------

[2003-07-10 07:19:37] [EMAIL PROTECTED]

What is expected to be result of $test_obj->array_var[0][0][0]("simple
test") call?

Which function or method of which object should be called? What with
$test_obj->foo->array_var[0][0][0]("simple test") - should the calling
object be $test_obj and function name array_var[0][0][0] (should it be
global $array_var[0][0][0]? global $foo->array_var[0][0][0]? or
property foo->array_var[0][0][0] of $test_obj?) or the calling object
should be $test_obj->foo and array_var[0][0][0] should be the method
name?

------------------------------------------------------------------------

[2003-07-10 06:25:06] tony2001 at phpclub dot net

There is no matter what Smarty version do you use.
PHP complains on this syntax:
<?
class Test {
    var $array_var = Array();
    function test() {
        $this->array_var[0][0][0] = "test_method";
    }
    function test_method($echo_var) {
        echo $echo_var;
    }
}

$test_obj = new test;
$test_obj->array_var[0][0][0]("simple test"); //line 15
?>
Fatal error: Method name must be a string in /www/index.php on line 15

Guys, please, fix this very annoying bug at least in beta2.
On 10 Jul 2003 this bug still exists in CVS.

------------------------------------------------------------------------

[2003-07-09 08:09:13] bloso at mailbr dot com dot br

I've got the same error message:

Fatal error: Method name must be a string in
/var/www/htdocs/scorphus/phplab/countracker/tpl/templates_c/%%200/%%2001463753/index.html.php
on line 28

index.html.php line 28:
<br><?php echo $this->_plugins['function']['eval'][0](array('var' =>
$this->_config[0]['vars']['credits']), $this) ; ?>

PHP Version: 5.0.0b2-dev (php5-200307071930.tar.gz)
Configure Command: './configure' '--with-mysql' '--with-apxs'
System: Slackware 9 (2.4.20) and Debian 3.0 r1 (2.4.20)
Also unsing: Smarty 2.4.2

Hope it helps,
Pablo.

------------------------------------------------------------------------

[2003-06-29 10:55:12] [EMAIL PROTECTED]

Works fine in php 4.3.3, so this appears to be a BC issue.

------------------------------------------------------------------------

[2003-06-22 10:54:07] terjeto at stud dot ntnu dot no

Description:
------------
When using a string from an array inside an class for 
calling a function it results in a fatal error.

Reproduce code:
---------------
<?php

class Foo {
        var $_array = array( 'function' => array ( 'spacer' => array( 0 =>
'_funk' ) ) );
}

function _funk( $arg ) {
        print( $arg );
}

$_out = array( 'function' => array ( 'spacer' => array( 0 => '_funk' )
) );

_funk( "Test string 1<br>" );

$foo = new Foo();

$foofunk = $foo->_array['function']['spacer'][0];

$foofunk( "Test string 2<br>" );

$_out['function']['spacer'][0]( "Test string 3<br>" );
$foo->_array['function']['spacer'][0]( "Test string 4<br>" );
?>

Expected result:
----------------
Test string 1
Test string 2
Test string 3
Test string 4

Actual result:
--------------
Test string 1
Test string 2
Test string 3

 Fatal error:  Method name must be a string in /var/
www/html/test.php on line 22


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=24286&edit=1

Reply via email to