|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2015-08-07 18:54 UTC] lucashedding at gmail dot com
[2015-08-07 21:57 UTC] cmb@php.net
-Status: Open
+Status: Verified
[2015-08-07 21:57 UTC] cmb@php.net
[2015-08-07 22:02 UTC] bwoebi@php.net
[2015-08-07 22:02 UTC] bwoebi@php.net
-Status: Verified
+Status: Closed
[2015-08-18 16:24 UTC] ab@php.net
[2016-07-20 11:37 UTC] davey@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 21:00:01 2025 UTC |
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