-
-
Notifications
You must be signed in to change notification settings - Fork 827
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
php8.2 fix undeclared properties on backoffice contribution form #27829
Conversation
🤖 Thank you for contributing to CiviCRM! ❤️ We will need to test and review this PR. 👷 Introduction for new contributors...
Quick links for reviewers...
|
a1a12d4
to
71df269
Compare
There are just 2 properties _payNow is distinctly internal, and easily searched in universe so I made it private - _contributionID is specifically set for the purposes of hooks - although I expect that was more relevant when the code was shared with the front end form. However, I have set it up to still work for now, albeit with a deprecation notice
71df269
to
0246fe6
Compare
/** | ||
* Explicitly declare the form context. | ||
*/ | ||
public function getDefaultContext() { | ||
return 'create'; | ||
} | ||
|
||
public function __get($name) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like this way of throwing the deprecation warning, but just noting this could cause issues if anyone is doing property_exists($form, '_contributionID');
, as property_exists
won't run __get()
.
Difficult to judge how likely that is. If we wanted to fix it we could declare private $_contributionID;
without giving it a value. This would make property_exists
return true, but the __get()
would still be called as the property would be private.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@braders yeah good point - I think it's possible to implement __isset
for that - but for undeclared properties it would have already returned FALSE I think?
Overview
php8.2 fix undeclared properties on backoffice contribution form - fixing a bunch of tests
Before
php8.2 fails on the setting of
_contributionID
- this property is unused in core but there was intent when added that it could be accessed from hooksCRM_Contribute_Form_ContributionTest::testSubmitCreditCardWithBillingAddress
Creation of dynamic property CRM_Contribute_Form_Contribution::$_contributionID is deprecated
/home/homer/buildkit/build/build-3/web/sites/all/modules/civicrm/CRM/Contribute/Form/Contribution.php:1473
/home/homer/buildkit/build/build-3/web/sites/all/modules/civicrm/CRM/Contribute/Form/Contribution.php:1282
/home/homer/buildkit/build/build-3/web/sites/all/modules/civicrm/CRM/Contribute/Form/Contribution.php:1815
/home/homer/buildkit/build/build-3/web/sites/all/modules/civicrm/CRM/Contribute/Form/Contribution.php:1117
/home/homer/buildkit/build/build-3/web/sites/all/modules/civicrm/tests/phpunit/CRM/Contribute/Form/ContributionTest.php:2220
/home/homer/buildkit/build/build-3/web/sites/all/modules/civicrm/tests/phpunit/CRM/Contribute/Form/ContributionTest.php:525
/home/homer/buildkit/build/build-3/web/sites/all/modules/civicrm/tests/phpunit/CiviTest/CiviUnitTestCase.php:242
/home/homer/buildkit/extern/phpunit9/phpunit9.phar:2307
After
Property is not set - but is still transitionally available with a deprecation notice
Technical Details
php8.2 fix undeclared properties on backoffice contribution form
Comments