ID: 32379 User updated by: freebsd at dds dot nl Reported By: freebsd at dds dot nl Status: Bogus Bug Type: Feature/Change Request Operating System: * PHP Version: 5.* New Comment:
>From reading the code the compile or interpater knows or could know that $y is of type X. It can not be something else. It could therefore check if the functions that are used in that functions are defined The reason I request a warning is to prevent errors later. These error could be accuring years later. To solve the error one need to read the code in the class where the error happens. Then decides how to solve this. Options are: to include the function defintion in the interface, define a new interface or just define the function in the class. All these option involve breaking code or setting oneself up to repeat history. Suppose I add a new class years later. I then would read the interface I'm going to implement. So I have: class Z implements X { punction function fa() {} } But when I use it it complains it wants fb(); I then read the interface again. Why does php have interfaces? Previous Comments: ------------------------------------------------------------------------ [2005-03-20 23:21:13] [EMAIL PROTECTED] PHP is loosely typed. What you request would change the nature of PHP completley. Thus this will never happen. ------------------------------------------------------------------------ [2005-03-20 23:05:33] freebsd at dds dot nl My email is wrong it should be freebsd at akruijff dot nl. It seems I can nott change this. ------------------------------------------------------------------------ [2005-03-20 23:03:18] freebsd at dds dot nl If this isn't a bug I would like it to become a feature. ------------------------------------------------------------------------ [2005-03-20 00:55:05] [EMAIL PROTECTED] Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Type hints don\'t check what you are doing with your object, they just help you to know what you have... ------------------------------------------------------------------------ [2005-03-20 00:40:59] freebsd at dds dot nl Description: ------------ Type hinting doesn't prevent you from calling functions of children that are not defined in the interface or (abstract) class. This mean you could call a function of object x, then create a new class (y) that doesn't implement this function, resulting in an error later on. Basicaly the principle of encapsulation (on class level) isn't enforced. Reproduce code: --------------- <?php interface X { public function fa(); } class Y implements X { public function fa() {} public function fb() { echo "no error / warning?"; } } function f(X $y) { $y->fb(); } f(new Y()); ?> Expected result: ---------------- An error (or at least a warning). Actual result: -------------- n/a ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=32379&edit=1