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

Odpowiedz Nowy wątek
2006-08-07 09:47
Misiu Miętowy
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.

Pozostało 580 znaków

2006-08-07 10:21
0

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


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-08-07 10:33
Misiu Miętowy
0

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

Pozostało 580 znaków

2006-08-07 11:51
MIsiu Miętowy
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 ?

Pozostało 580 znaków

2006-08-07 12:10
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 ;)


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-08-07 18:15
0

ales zamotal :P

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

Pozostało 580 znaków

2006-08-08 12:04
Misiu Miętowy
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.

Pozostało 580 znaków

2006-08-08 12:08
Misiu Miętowy
0

Spoko! Już są widoczne :-)

Pozostało 580 znaków

2006-08-09 10:12
Misiu Miętowy
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ć?

Pozostało 580 znaków

2006-08-09 12:11
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ę ...


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-08-09 13:29
Misiu Miętowy
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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