#32379 [Bgs]: type hinting doesn't inforce encapsulation

From: Date: Sun, 20 Mar 2005 22:03:19 +0000
Subject: #32379 [Bgs]: type hinting doesn't inforce encapsulation
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-75625@lists.php.net to get a copy of this message
ID: 32379 User updated by: freebsd at dds dot nl Reported By: freebsd at dds dot nl Status: Bogus -Bug Type: Class/Object related +Bug Type: Feature/Change Request Operating System: FreeBSD PHP Version: 5.0.3 New Comment: If this isn't a bug I would like it to become a feature. Previous Comments: ------------------------------------------------------------------------ [2005-03-20 00:55:05] johannes@php.net 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

« previous php.bugs (#75625) next »