[英]access another class protected variable in PHP
我用php寫了一個足球經理模擬器,[困難的算法!]
我有3節課:
播放器
class Player {
protected $name;
public function addAttr($name) {
$this->name = $name;
}
}
球隊
class Team {
protected $name;
protected $players = array();
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
public function addPlayer($player) {
$this->players[] = $player;
}
public function getPlayers() {
print_r($this->players);
}
public function getOpponetsPosition() {
GAME::getOpponetPlayersPosition();
}
和游戲
class Game {
protected $t1;
protected $t2;
function setTeams($team1,$team2) {
$this->t1 = $team1;
$this->t2 = $team2;
}
function getOpponetPlayersPosition() {
$this->t1->getPlayers();
}
}
和主腳本
require_once 'classes/CPlayer.php';
require_once 'classes/CTeam.php';
require_once 'classes/CGame.php';
$game = new Game;
$team1 = new Team;
$team1->setName("PO-1");
$team2 = new Team;
$team2->setName("PO-2");
$p1 = new Player;
$p2 = new Player;
$p1->addAttr("payam babaiy");
$p2->addAttr("parsa babaiy");
$team1->addPlayer($p1);
$team2->addplayer($p2);
$game->setTeams($team1,$team2);
$team1->getOpponetsPosition();
我需要使用Team類中的getOpponetsPosition()函數獲取游戲中所有玩家的位置
但是它不返回我在主腳本中輸入的值。 我這樣做對嗎? 這是應用程序即時寫作的好方法嗎?
您的方法很好,有幾點:
class Player {
protected $name;
public function __construct($name) { $this->name = $name; }
public function addAttr($name) {
$this->name = $name;
}
}
接着
new Player("Lionel Messi");
構造函數還可以確保您不會讓空缺的球員/隊伍! 您可以更好地控制班級所學內容!
您的getOpponentsPosition函數不正確
public function getOpponetsPosition() {
GAME::getOpponetPlayersPosition();
}
實際上,甚至都不應該在這里,獲取另一個團隊的位置不是Team
的工作,而是游戲的工作,因為它包含了兩者。
不,您正在調用靜態函數GAME::getOpponetPlayersPosition();
因此該函數中的$this
未定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.