w stanie z tym poradzić.
w metodzie public function getIDSignedToSubLeague($subLeagueID, $queueCount)
w wierszu echo "xxxx"
jakims cudem $this wskazuje na obiekt typu SubLeague.
Jak to mozliwe skoro subLeague i subLeagueteamsbuffer nie sa w zaden sposob ze soba zwiazane, nie dziedziczą ani nic..
problem pojawił się gdy zamienilem pare metod (min. tą) ze statycznych na dynamiczne. zmiana polegala na wykasowaniu slowka static i zamianie self:: na $this->. Jak to mozliwe ze $this wskazuje na inny obiekt niz obiekt w ktorym znajduje sie metoda skoro
10 0.2761 1071264 SubLeagueTeamsBuffer->getIDSignedToSubLeague( ) ..\SubLeague.php:158
nawet w stack trace jest wywolywana metoda z dobrego obiektu?
restartowalem kompa i nie pomoglo.
class SubLeagueTeamsBuffer extends ItemsBuffer implements Singleton { /* ID jest tylko dla kompatybilnosci */ "subLeagueID", "teamID", "lastPosition", "score", /** * Indeks */ /** * Zwraca ID druzyn (a nie wpisów) danej podligi w danej kolejce * @param unknown_type $subLeagueID * @param unknown_type $queueCount * @return Ambigous <multitype:, NULL, unknown> */ public function getIDSignedToSubLeague($subLeagueID, $queueCount) { /* Poniżej $this wskazuje na obiekt SubLeague (a nie jak mogłoby się wydawać SubLeagueTeamsBuffer */ $result = $this->executeNonBufferedQuery( "select teamID from SubLeagueTeam where subLeagueID=$subLeagueID AND queueCount=$queueCount"); return $result; } /** * Zwraca subLeagueTeam druzyn z danej podligi z danej kolejki * @param unknown_type $subLeagueID * @param unknown_type $queueCount */ public function getSignedToSubLeague($subLeagueID, $queueCount) { $result = $this->executeFilterQuery( "select * from SubLeagueTeam where subLeagueID=$subLeagueID AND queueCount=$queueCount"); return $result; } public function moveAllPlayersFromSubLeagueToSubLeague($subLeagueFrom, $subLeagueTo) { if (!($subLeagueTo && $subLeagueFrom)) { /* Puste ID podano, taka sytuacja nie powinna miec miejsca, moj blad */ throw new InternalException("SubLeagueTo lub SubLeagueFrom mają zerową wartosc."); } $result = $this->executeNonBufferedQuery( "update SubLeagueTeam set SubLeagueID=$subLeagueTo where (SubLeagueID=$subLeagueFrom)"); } }
/** * Metoda zwraca drużyny które są zapisane do tej subligi */ public function getSignedTeams() { /* Wystarczy zdobyć ID teamów które znajdują się w pierwszej kolejce i juz mamy liste zapisanych graczy */ $idArray = SubLeagueTeamsBuffer::getIDSignedToSubLeague($this->ID, 1); if ($idArray) { /* Są podwójnie zagniezdzone trzeba je przepisac */ foreach ($idArray as &$idItem) { $idItem = $idItem[0]; } $result = TeamsBuffer::get()->getItems($idArray); } return $result; }
Stack trace z xdebug:
Fatal error: Call to undefined method SubLeague::executeNonBufferedQuery() in D:\Apache\NowaWersja\Scripts\Models\Buffers\SubLeagueTeamsBuffer.php on line 68
8 0.2303 1054896 SubLeague->getSignedTeamsCount( ) ..\League.php:311
9 0.2303 1054896 SubLeague->getSignedTeams( ) ..\SubLeague.php:179
10 0.2761 1071264 SubLeagueTeamsBuffer->getIDSignedToSubLeague( ) ..\SubLeague.php:158