sonraki ilginç davranışlarını açıklayabilir misiniz?Dizisi - ilginç davranış
class test {
//Class *test* has two properties, public and private.
public $xpublic = 'x1';
private $xprivate = 'x2';
}
$testObj = new test();
Diziyi $testObj
dönüştürelım.
settype($testObj, 'array');
var_dump($testObj);
Sonuç:
array(2) { ["xpublic"]=> string(3) "x1" ["testxprivate"]=> string(4) "x2" }
Tamam, xprivate
mülkiyet
testxprivate
en bu dizi nesne dönüştürelim olur.
$newObj = (object)$testObj;
var_dump($newObj);
Sonuç:
object(stdClass)#1 (2) { ["xpublic"]=> string(3) "xxx" ["xprivate":"test":private]=> string(4) "xxx3" }
$newObj
bir stdClass
amacıdır.
Ve soru:
Neden yeni nesnenin bir özel mülkiyet xprivate
(değil testxprivate
) olmak testxprivate
gelir? PHP, $testObj
dizisinin bir nesne olduğunu nasıl biliyor?
Eşit dizi tanımlarsanız: o zaman
$testArray = array('xpublic'=>'x1', 'testxprivate'=>'x2');
ve dönüştürmek buna itiraz etmek: beklendiği gibi
var_dump((object)$testArray);
İki kamu özellikleri xpublic
ve testxprivate
nesneyi elde edersiniz:
object(stdClass)#2 (2) { ["xpublic"]=> string(2) "x1" ["testxprivate"]=> string(2) "x2" }