#32379 [Bgs]: type hinting doesn't inforce encapsulation
| From: | helly@php.net | Date: | Sun, 20 Mar 2005 22:21:14 +0000 |
| Subject: | #32379 [Bgs]: type hinting doesn't inforce encapsulation | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-76851@lists.php.net to get a copy of this message | ||
ID: 32379
Updated by: helly@php.net
Reported By: freebsd at dds dot nl
Status: Bogus
Bug Type: Feature/Change Request
-Operating System: FreeBSD
+Operating System: *
-PHP Version: 5.0.3
+PHP Version: 5.*
New Comment:
PHP is loosely typed. What you request would change the nature of PHP
completley. Thus this will never happen.
Previous Comments:
------------------------------------------------------------------------
[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] 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