ID:               30453
 Updated by:       [EMAIL PROTECTED]
 Reported By:      guth at fiifo dot u-psud dot fr
-Status:           Assigned
+Status:           Wont fix
 Bug Type:         Scripting Engine problem
 Operating System: *
 PHP Version:      5CVS-2005-06-19
 Assigned To:      dmitry
 New Comment:

Interfaces and classes should be defined before they are used. PHP4
supported later declaration with classes, and PHP5 supports it for
backward compatibility, but we don't plan support for all compinations.


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

[2005-07-28 12:06:15] xuefer at 21cn dot com

"extends" a parent class is exactly same when you want to "new" a
class

module.php:
// compile time binding (but "include" is "runtime")
<?php class module {} ?>

Does not work:
<?php
include 'module.php';
// runtime binding: undefined GroupModule now
// if you do "$a = new GroupModule();", same error
class ClassGroupModule extends GroupModule {}
// runtime binding
class GroupModule extends Module {}
?>

But this works:
<?php
// compile time binding
class Module {} 
// runtime binding, GroupModule defined at compile time: OK
// you can "$a = new GroupModule();" here also
class ClassGroupModule extends GroupModule {}
// compile time binding
class GroupModule extends Module {}
?>

And this works:
<?php
include 'module.php';
// runtime binding
class GroupModule extends Module {}
// runtime binding
class ClassGroupModule extends GroupModule {}
?>


compile time -> runtime
this might be hard for php user to figure it out. improve document
should be enough, i guess

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

[2005-06-19 14:44:43] [EMAIL PROTECTED]

module.php:
<?php class module {} ?>

Does not work:
<?php
include 'module.php';
class ClassGroupModule extends GroupModule {}
class GroupModule extends Module {}
?>

But this works:
<?php
class Module {} 
class ClassGroupModule extends GroupModule {}
class GroupModule extends Module {}
?>

And this works:
<?php
include 'module.php';
class GroupModule extends Module {}
class ClassGroupModule extends GroupModule {}
?>



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

[2005-05-09 11:31:13] [EMAIL PROTECTED]

Andi, (or Dmitry maybe?) can you look into this?


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

[2004-10-16 02:06:37] guth at fiifo dot u-psud dot fr

Description:
------------
Look at the following code...

Note that there is no difference between the first case and the third
case. I just add an include in the first case.

Reproduce code:
---------------
test3.php :

<?php

include "test4.php";

class ClassGroupModule extends GroupModule implements GroupInterface {
}

abstract class GroupModule extends Module { }

?>


<?php

include "test4.php";

class ClassGroupModule extends GroupModule implements GroupInterface {
}

abstract class GroupModule { }

?>

<?php

abstract class Module { }

interface GroupInterface { }

class ClassGroupModule extends GroupModule implements GroupInterface {
}

abstract class GroupModule extends Module { }

?>

test4.php

<?php
abstract class Module { }

interface GroupInterface { }
?>

Expected result:
----------------
Case 1 :
- Should work

Case 2 :
- Should work

Case 3 :
- Should work

Actual result:
--------------
Case 1 :
Fatal error: Class 'GroupModule' not found in /www/test3.php on line 4

Case 2 :
- Works fine

Case 3 :
- Works fine


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


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

Reply via email to