|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2008-03-08 15:47 UTC] felipe@php.net
[2008-03-09 00:49 UTC] aldo at armiento dot com
|
|||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Dec 16 21:00:02 2025 UTC |
Description: ------------ Magic methods __set, __get, __isset, __unset are triggered also if a member exists if accessing member from a method used in a cURL callback function. From the documentation instead "These methods will only be triggered when your object or inherited object doesn't contain the member or method you're trying to access". Reproduce code: --------------- <?php class Test { public $member; public function __set($sName, $mValue) { echo "__set() called\n"; } public function __get($sName) { echo "__get() called\n"; } public function __isset($sName) { echo "__isset() called\n"; } public function __unset($sName) { echo "__unset() called\n"; } public function headerCallBack($hCurl, $sHeader) { $this->member = 'value'; strtolower($this->member); isset($this->member); unset($this->member); return strlen($sHeader); } public function httpGet() { $hCurl = curl_init(); curl_setopt($hCurl, CURLOPT_URL, 'http://www.php.net/'); curl_setopt($hCurl, CURLOPT_RETURNTRANSFER, true); curl_setopt($hCurl, CURLOPT_HEADERFUNCTION, array($this, 'headerCallBack')); curl_exec($hCurl); } } $C = new Test(); $C->httpGet(); Expected result: ---------------- Nothing. Actual result: -------------- __set() called __get() called __isset() called __unset() called __set() called __get() called __isset() called __unset() called __set() called __get() called __isset() called __unset() called __set() called __get() called __isset() called __unset() called __set() called __get() called __isset() called __unset() called __set() called __get() called __isset() called __unset() called __set() called __get() called __isset() called __unset() called __set() called __get() called __isset() called __unset() called __set() called __get() called __isset() called __unset() called __set() called __get() called __isset() called __unset() called