Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] OOP funkcja __toStrng()
Forum PHP.pl > Forum > Przedszkole
Zajac1982
Witajcie! Obecnie raczkuję w programowaniu OOP w PHP i mam problem: mój program powinien wypisywać na ekranie sumę dwóch liczb, np. 2+3=5. Problem w tym, że otrzymuję ciągle wynik 0 i nie wiem, czemu. W programie użyłem funkcji __toString by wyświetlić na ekranie pola klasy Test4.

Program wygląda tak:

<?php
class Test4
{

var $a;
var $b;

public function __toString($zmienna)
{
$zmienna=$this->a.'+'.$this->b.'='.$a+$b;

return $zmienna;
}

public function ustawZmienne($a, $b)
{
if (is_numeric($element)) {
$a->$this->a=$a;
$b->$this->b=$b;
return true;
}
else
return false;
}

}
$test=new Test4();
$test->ustawZmienne(4,2);

echo $test->__toString($zmienna);

?>
konrados
  1. if (is_numeric($element)) {
  2. $a->$this->a=$a;
  3. $b->$this->b=$b;
  4. return true;
  5. }


Jakiś chyba nowy PHP wyszedłsmile.gif

Co robi $a->$this ? Chciałeś chyba $this->a=$a;
Plus - gdzie masz zdefiniowaną zmienną $element, którą używasz?

Update: $zmienna=$this->a.'+'.$this->b.'='.$a+$b
Tak się łączy łańcuchy (tekst), Ty chcesz po prostu:
return $this->a+$this->b;

Zanim zabierzesz się za OOP powinieneś poznać podstawy (zmienne, zasięg, operatory, funkcje).
d3ut3r
Wstawiając kod na forum użyj tagów będzie bardziej czytelne. Druga rzecz to metoda __toString to metoda magiczna więc jej wywoływanie jest kontrolowane przez php ty tylko musisz zrobić:

  1. echo $object;

Zajac1982
Dzięki za pomoc. Poprawiłem program i teraz działa jak chcę.

<?php
class Test4
{

var $a;
var $b;

public function __toString($a, $b)
{
$suma=$this->a+$this->b;

return $suma;
}

public function ustawZmienne($a, $b)
{
if (is_numeric($a) and is_numeric($b)) {
$this->a=$a;
$this->b=$b;
echo $a."+".$b."=";
return true;
}
else
return false;
}

}
$test=new Test4();
$test->ustawZmienne(4,5);

echo $test->__toString(4,3);

?>
Crozin
__toString() jest metodą, która nie przyjmuje żadnych argumentów.

PS. Używaj BBCode.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.