Kezdőoldal » Számítástechnika » Programozás » Miért változott az érték a...

Miért változott az érték a függvényen belül?

Figyelt kérdés

$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!



2022. aug. 19. 11:02
 1/3 anonim ***** válasza:
74%
2022. aug. 19. 11:21
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
74%

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.

2022. aug. 19. 14:11
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:
Azért, mert átírtad az értékét a teszt() fgv.-ben. Nem tűnik fel, hogy a két echo között ott van a meghívása?
2022. aug. 19. 14:14
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!