Created
August 14, 2014 19:49
-
-
Save gabrysiak/29cc627052a857fe4133 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @author Tom Gabrysiak | |
* @version 1.0 | |
* | |
* Compares 2 random generated numbers to see if they are equal | |
* | |
* Class needs to be initialized before chaining other methods | |
* | |
* Example: | |
* Contest::initialize(1)->determineWinner(); | |
* | |
*/ | |
class Contest | |
{ | |
/** | |
* Number of digits the random number should contain | |
* @var int | |
*/ | |
private static $_digits; | |
/** | |
* First random generated number | |
* @var mixed | |
*/ | |
private static $_firstRoll; | |
/** | |
* Second random generatednumber | |
* @var mixed | |
*/ | |
private static $_secondRoll; | |
/** | |
* Contains result of random number comparison | |
* @var bool | |
*/ | |
private static $_winner; | |
/** | |
* mySql formatted timestamp | |
* @var mixed | |
*/ | |
private static $_timestamp; | |
/** | |
* Generate our initial number which will be compared against to see if we won | |
* @param int $digits number of digits the random number should be | |
* @return mixed initial random number | |
*/ | |
private static function firstRoll() | |
{ | |
return static::$_firstRoll = str_pad(rand(0, pow(10, static::$_digits)-1), static::$_digits, '0', STR_PAD_LEFT); | |
} | |
/** | |
* Generate random number and then encrypt it | |
* @param int $digits number of digits the random number should be | |
* @return mixed encypted initial random number using mCrypt | |
*/ | |
public static function initialize($digits) | |
{ | |
static::$_digits = (int)$digits; | |
return new static; | |
} | |
/** | |
* Generate our random rolls | |
* @param int $total_rolls total number of rolls you wish to execute | |
* @return mixed Doesnt return anything at the moment but echos your results | |
*/ | |
private static function secondRoll() | |
{ | |
return static::$_secondRoll = str_pad(rand(0, pow(10, static::$_digits)-1), static::$_digits, '0', STR_PAD_LEFT); | |
} | |
/** | |
* Create timestamp incase we need to track time when winner occured | |
* @return mixed mysql ready timestamp | |
*/ | |
private static function createTimestamp() | |
{ | |
$time = new DateTime('NOW'); | |
return static::$_timestamp = $time->format('Y-m-d H:i:s'); | |
} | |
/** | |
* Compare 2 random numbers for equality | |
* @return bool if equal return true otherwise return false | |
*/ | |
private static function compareNumbers() | |
{ | |
return static::$_winner = (static::firstRoll() == static::secondRoll() ? true : false); | |
} | |
/** | |
* Generate 2 random numbers and determine if winner | |
*/ | |
public static function determineWinner() | |
{ | |
return static::compareNumbers(); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment