[php - beginner] Widoczność pól w klasie

0

Mam 2 klasy:

class CArmy
{
	
	var $PikemanCount;	
	var $ElfCount;
	
	function CArmy($uPikemanCount, $uElfCount)
	{		
		$PikemanCount = $uPikemanCount;
		$ElfCount = $uElfCount;
	}
}

class CPlayer
{
	var $Gold;
	var $Width;
	var $Content;
	var $Army;
	
	function init(){
		$this->Gold = 5000;
		$this->Army = new CArmy(10, 5);
		
	} 
	
	function PlayerInfo()
	{
	echo 'Zloto: '.$this->Gold.'<br>';
	}
}

Dlaczego po wydaniu poleceń:

$player1 = new CPlayer();
$player1->init(5000);
echo "Informacje o Playerze1<BR>";
echo 'Zloto: '.$player1->Gold.'<br>';
$player1->PlayerInfo();
echo 'Ilość elfów:'.$player1->Army->ElfCount.'<br>';

pojawia mi się

Informacje o Playerze1
Zloto: 5000
Zloto: 5000
Ilo?ć elfów:

?

Wygląda na to, że w ogóle nie wszedł do konstruktora klasy CArmy.

0

a czemu w drugiej klasie np do $gold przypisujesz $this->gold = a w pierwszej do $ElfCount przypisujesz normalnie ? :>

0

Dzięki. Podejrzewałem, że błąd jest banalny. :d

0

A może wiecie jeszcze jak overloadować konstruktory. Jak piszę:

function CPlayer($mGold){		
		$this->Gold = $mGold;
		$this->Army = new CArmy(4);		
	} 

function CPlayer($mGold, $mElf){		
		$this->Gold = $mGold;
		$this->Army = new CArmy(mElf);		
	}

to wywala błąd - powtórna deklaracja funkcji. Co mam zrobić? Wpisać gdzieś overload, albo override ?

0

nie ma takiej opcji - po co ci to ?
jak chcesz mieć opcjonalny parametr $mElf to zrób np:

ten kawałek kodu się nie nadawał i nie wiem co mnie skusiło do jego napisania ;)

możliwe że jest coś takiego w PHP 5 ale się tym nigdy nie interesowałem bo nigdy mi nie było potrzebne

ale jeszcze w miarę rozumiem zastosowanie tego np w delphi, chociaż też raz może dwa razy tego użyłem ale w php ?

// do poniższego: ano ;P no bo przepisywałem kod i dopiero potem zauważyłem że to jest ten sam kawałek kodu z innym parametrem, no ale tak jest bardziej uniwersalnie ;)

0

ales zamotal :P

function CPlayer($mGold, $mElf = 4){               
                $this->Gold = $mGold;
                $this->Army = new CArmy(mElf);               
        }
0

Kolejny mały problem....

Czy można przekazać wskaźnik (?) do danego obiektu jako wartość pola klasy?

Konkretnie:

class CArena{

        var $Player;

        function CArena($mPlayer = null){
	$this->Player = $mPlayer;
        ...
        }
...
}

$player1 = new CPlayer(5000);

...
$arena = new CArena($player1);

wygląda na to, że z obiektu $arena nie są widoczne wartości pól obiektu $player1.

0

Spoko! Już są widoczne :-)

0

Czy można pobierać parametr strony www, którego nazwa jest w zmiennej, tzn.

$zmienna1 = $_GET[$zmienna2]

jak próbowałem, to nie zadziałało. Czy są jakieś inne metody, żeby tak zrobić?

0

a na pewno $zmienna2 miała dobrą wartość, to jest prawidłowy sposób, żeby pobrać wartość GET - a wywala się jakiś błąd ? może $zmienna2 jest np pobierana z pliku i ma \r\n na końcu albo spację ...

0
Adamo napisał(a)

a na pewno $zmienna2 miała dobrą wartość, to jest prawidłowy sposób, żeby pobrać wartość GET - a wywala się jakiś błąd ? może $zmienna2 jest np pobierana z pliku i ma \r\n na końcu albo spację ...

OK. Poradziłem sobie :)

Nie działało, bo $zmienna2 jest w innym pliku i nie było łączności z tym plikiem.
Myślałem, że nie działa, bo do GET-a nie można wrzucać zmiennych - chciałem to zweryfikować i stąd mój post.
Dzięki za naprowadzenie na rozwiązanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1