Bug #70208 [Opn->Ver]: Assert breaking access on objects

From: Date: Fri, 07 Aug 2015 21:57:57 +0000
Subject: Bug #70208 [Opn->Ver]: Assert breaking access on objects
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-195008@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=70208&edit=1 ID: 70208 Updated by: cmb@php.net Reported by: neclimdul at gmail dot com Summary: Assert breaking access on objects -Status: Open +Status: Verified Type: Bug Package: Class/Object related Operating System: linux PHP Version: 7.0Git-2015-08-07 (Git) Block user comment: N Private report: N New Comment: <http://3v4l.org/7cQNm> confirms the behavior. Previous Comments: ------------------------------------------------------------------------ [2015-08-07 18:54:06] lucashedding at gmail dot com Cross posting with the d.o. issue link: https://www.drupal.org/node/2547715 ------------------------------------------------------------------------ [2015-08-07 18:31:21] neclimdul at gmail dot com Description: ------------ Recently some code adding assertions to code in Drupal caused some really weird failures when running tests. It seems you need a couple things to trigger this. 1) You have an object stored on a property 2) You call an assert that calls a method on an argument. 3) You reference the protected property after that assertion. Test script: --------------- <?php class class1 { protected $prop; public function __construct($prop) { $this->prop = $prop; } public function getThing($arg) { assert('$arg->isValid();'); $this->prop->method(); } } class class2 { public function method() { echo "here\n"; } } class class3 { public function isValid() { return false; } } $tmp = new class1(new class2()); $tmp->getThing(new class3()); Expected result: ---------------- the script outputs "here" Actual result: -------------- PHP Fatal error: Uncaught Error: Cannot access protected property class1::$prop in /home/jgilliland/public_html/d8_1/assert_protected_property.txt:8 Stack trace: #0 /home/jgilliland/public_html/d8_1/assert_protected_property.txt(21): class1->getThing(Object(class3)) #1 {main} thrown in /home/jgilliland/public_html/d8_1/assert_protected_property.txt on line 8 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=70208&edit=1

« previous php.bugs (#195008) next »