Miért változott az érték a függvényen belül?
$product = new Product();
$product->setPrice(100);
echo $product->getPrice(); // 100;
teszt($product);
echo $product->getPrice(); // 150
function teszt(Product $product) {
$product->setPrice(150);
}
--------------------------------
Ezt eddig nem tudtam, neten láttam. Tehát adott a fenti kis példa.
Miért változott a 2. echo után az érték 150-re? Nem lokálisként kezeli a függvény ha átadunk neki egy értéket?
Ez egy változó átadásával nem működik, szükséges a & szimbólum, vagy a $GLOBALS kifejezéssel lehet módosítani egy külső változót. Vagy ezek nélkül de akkor visszatér a függvény a belső változó értékével, de itt az osztálynál egyik sem szükséges.
Kösznöm a segítséget!
Javaslom, nézz utána az érték és referencia szerinti paraméterátadásnak.
Egy sima string vagy szám esetén az értéket adod át, tehát az eredeti nem fog változni. Itt viszont egy objektumot adsz át referenciaként, tehát ha azon belül hívsz egy metódust, az az objektumon belül dolgozik.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!