Beste,

Ik ben dus nog altijd bezig met mijn OOP logica. Ik heb weer een nieuw vraagstuk.

Ik ben dus bezig met een poker class.. Nu wil ik dat de gebruiker van de class, een aparte speler zijn hand kan opvragen.

Nu heb ik 2 manieren bedacht om dit te doen.

de eerste, is met een 'scope'


<?
$game = new poker();
//Setscope(speler), hiermee zet ik een bepaalde speler in de spotlights in mijn class.
$game->setScope(3); 
//Hiermee pak ik de speler in de scope, zijn hand.
$hand = $game->get('hand');
$game->unScope();


Dit leek mij de beste manier. En ook het netste. Maar nu, kan het ook anders, weer korter in gebruik, maar meer class code.


<?
$game = new poker();
$hand = $game->get('hand[3]');


hiermee moet ik dan weer een regex gaan gebruiken.

Welke methode, of misschien een andere manier, is het beste?
Waarom niet gewoon:


<?php
$game = new poker();
$hand = $game->getHand(3);
?>
Omdat ik via de get ook andere dingen wil regelen. Zoals de flop, turn, river etc.
Dus je wil dit matchen 'woord[123]' ?

<?php
$sString = 'woord[123]';

if( preg_match('/^([a-z_]+)\[(\d+)]$/Di', $sString, $aMatch) )
{
print_r($aMatch);
}
?>

Als je puur voor snelheid gaat en ook dingen als 'woord[[123]' accepteert dan zou ik strpos() (of strrpos()) en substr() gebruiken.
Ik weet wel hoe een preg_match werkt ondertussen, maar toch nog niet zo heel goed... :P

En het gaat mij meer om gebruiks vriendelijkheid op de class.
ok, probeer ik het nog eens:

<?php
$game = new poker();
$hand = $game->setScope(3)->get('hand');
$game->unScope();
?>
Ja, dan moet je $this of whatever je wilt returnen. Een andere class kan dus ook.
wesley schreef op 28.01.2010 15:39
Omdat ik via de get ook andere dingen wil regelen. Zoals de flop, turn, river etc.


Dan doe je toch:


<?php
$game = new poker();

$flop = $game->getFlop();
$river = $game->getRiver();

$hand = $game->getHand(3);
?>
Wesley. dat is hetzelfde als:


<?php
$game = new Poker();
$scope = $game->setScope(3);
$hand = $scope->get('hand');


Je verwijst in principe alleen maar door.
Kan je bijvoorbeeld uit de hand ook nog een kaart pakken, en daarvan een kleur kun je gewoon door gaan:

<?php
$game = new Poker();
$color = $game->setScope(3)->get('hand')->getCard(1)->getColor();


Zolang de plek waar je bent (setScope(3)) maar weer de functie get('hand') enz. ondersteund

edit: te veel met winkelwagens bezig blijkbaar. overigens wat Karl zegt is waarheid

Reageren