mikolaj1982
24.04.2011, 12:47:58
Witajcie! Potrzebuję pomocy w temacie przekazywania argumentów funkcji przez referencję. Mam projekt "System zarzadzania imprezami turystycznymi", który piszę w OOP PHP. Mam dwa pliki: pierwszy("Ustaw_pola.php") zawierający deklarację zmiennych i oraz funkcje get i set dotyczące tych zmiennych następującej treści:
<?php
class ustaw_pola
{
//deklaracje
private $id_imprezy;
//gettery i settery
public function setId_imprezy($id_imprezy, $new_value)
{ $this->$id_imprezy = &$new_value; }
public function getId_imprezy(&$id_imprezy)
{ return($this->$id_imprezy); }
}
?>
oraz drugi plik("testowa.php") następującej treści:
<?php
require("Ustaw_pola.php");
class testowa extends Ustaw_pola
{
}
$id_imprezy=1;
$new_value=24;
$test1=new Ustaw_pola();
echo "<html><head></head><body>";
$test1->getId_imprezy($id_imprezy);
$test1->setId_imprezy(&$id_imprezy, '24');
print $id_imprezy;
echo "</body></html>";
?>
W funkcji set chcę ustawić wartość $id_imprezy na 24, a ciągle wynik mi zwraca wartość 1. Dlaczego?? Byłbym wdzięczny za jakąś podpowiedź!
darko
24.04.2011, 12:53:28
nie
$this->$id_imprezy
ale
$this->id_imprezy
a referencja nie jest Ci tu to niczego potrzebna
mikolaj1982
24.04.2011, 20:11:07
<?php
require("Ustaw_pola.php");
class testowa extends Ustaw_pola
{
}
$id_imprezy=1;
$new_value=24;
$test1=new Ustaw_pola();
echo "<html><head></head><body>";
$test1->getId_imprezy($id_imprezy);
$test1->setId_imprezy(1, 24);
print $id_imprezy;
echo "</body></html>";
?>
oraz:
klasa "Ustaw_pola.php":
<?php
class ustaw_pola
{
private $id_imprezy;
public function setId_imprezy($id_imprezy, $new_value)
{ $this->id_imprezy = $new_value; }
public function getId_imprezy($id_imprezy)
{ return($this->id_imprezy); }
}
?>
ale nadal mam wynik zwracany jako 1, zamiast 24. Co jest jeszcze nie tak?
matx132
24.04.2011, 20:15:28
nie zwróci ci innego wyniku bo drukujesz zmienną zawarta w głównym pliku gdzie przypisujesz do niej wartość 1
a pro po najpierw powinieneś ustawiać id a potem chyba pobierać?
pozatym jak już chcesz to zmienić z private na public i daj
print $test1->id_imprezy;
edit//
@-mikolaj1982-
Używaj znaczników php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.