-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5be0c1b
commit 53c645e
Showing
11 changed files
with
587 additions
and
49 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
<?php | ||
|
||
namespace p2; | ||
|
||
class Food | ||
{ | ||
# Properties | ||
private $meal; | ||
private $drink; | ||
|
||
# Methods | ||
public function __construct($mealJson1, $drinkJson1) | ||
{ | ||
# Load Food data | ||
$mealJson = file_get_contents($mealJson1); | ||
$drinkJson = file_get_contents($drinkJson1); | ||
$this->meal = json_decode($mealJson, true); | ||
$this->drink = json_decode($drinkJson, true); | ||
} | ||
|
||
public function getMeal() | ||
{ | ||
return $this->meal; | ||
} | ||
|
||
public function getDrink() | ||
{ | ||
return $this->drink; | ||
} | ||
|
||
public function getMealCalorie($mealChosenInForm) | ||
{ | ||
return $this->meal[$mealChosenInForm]['calorie']; | ||
} | ||
|
||
public function getDrinkCalorie($drinkChosenInForm) | ||
{ | ||
return $this->drink[$drinkChosenInForm]['calorie']; | ||
} | ||
|
||
public function getTotalCalorie($mealChosenInForm, $drinkChosenInForm) | ||
{ | ||
return $this->drink[$drinkChosenInForm]['calorie'] + $this->meal[$mealChosenInForm]['calorie']; | ||
} | ||
|
||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,251 @@ | ||
<?php | ||
namespace DWA; | ||
|
||
class Form | ||
{ | ||
/** | ||
* Properties | ||
*/ | ||
private $request; | ||
public $hasErrors = false; | ||
|
||
/** | ||
* Form constructor | ||
*/ | ||
public function __construct(array $request) | ||
{ | ||
# Store form data (POST or GET) in a class property called $request | ||
$this->request = $request; | ||
} | ||
|
||
/** | ||
* Returns true if *either* GET or POST have been submitted. | ||
*/ | ||
public function isSubmitted() | ||
{ | ||
return $_SERVER['REQUEST_METHOD'] == 'POST' || !empty($_GET); | ||
} | ||
|
||
/** | ||
* Get a value from the request, with the option of including a default | ||
* if the value is not set. | ||
*/ | ||
public function get(string $name, string $default = null) | ||
{ | ||
return $this->request[$name] ?? $default; | ||
} | ||
|
||
/** | ||
* Returns boolean as to whether a value is present in the request | ||
*/ | ||
public function has(string $name) | ||
{ | ||
return isset($this->request[$name]); | ||
} | ||
|
||
/** | ||
* Given an array of fields => validation rules | ||
* Will loop through each field's rules | ||
* Returns an array of error messages | ||
* Stops after the first error for a given field | ||
* Available rules: | ||
* required, alpha, alphaNumeric, digit, numeric, | ||
* email, url, min:x, max:x, minLength:x, maxLength:x | ||
*/ | ||
public function validate(array $fieldsToValidate) | ||
{ | ||
$errors = []; | ||
|
||
foreach ($fieldsToValidate as $fieldName => $rules) { | ||
# Each rule is separated by a | | ||
$rules = explode('|', $rules); | ||
|
||
foreach ($rules as $rule) { | ||
# Get the value for this field from the request | ||
$value = $this->get($fieldName); | ||
|
||
# Handle any parameters with the rule, e.g. max:99 | ||
$parameter = null; | ||
if (strstr($rule, ':')) { | ||
list($rule, $parameter) = explode(':', $rule); | ||
} | ||
|
||
# Run the validation test with the given rule | ||
$test = $this->$rule($value, $parameter); | ||
|
||
# Test failed | ||
if (!$test) { | ||
$method = $rule . 'Message'; | ||
$errors[] = 'The value for ' . $fieldName . ' ' . $this->$method($parameter); | ||
|
||
# Only indicate one error per field | ||
break; | ||
} | ||
} | ||
} | ||
|
||
# Set public property hasErrors as Boolean | ||
$this->hasErrors = !empty($errors); | ||
|
||
return $errors; | ||
} | ||
|
||
### VALIDATION METHODS FOUND BELOW HERE ### | ||
|
||
/** | ||
* The value can not be blank | ||
*/ | ||
protected function required($value) | ||
{ | ||
$value = trim($value); | ||
|
||
return $value != '' && $value != 'choose' && isset($value) && !is_null($value); | ||
} | ||
|
||
protected function requiredMessage() | ||
{ | ||
return 'can not be blank'; | ||
} | ||
|
||
/** | ||
* The value can only contain letters or spaces | ||
*/ | ||
protected function alpha($value) | ||
{ | ||
return ctype_alpha(str_replace(' ', '', $value)); | ||
} | ||
|
||
protected function alphaMessage() | ||
{ | ||
return 'can only contain letters'; | ||
} | ||
|
||
/** | ||
* The value can only contain alpha-numeric characters | ||
*/ | ||
protected function alphaNumeric($value) | ||
{ | ||
return ctype_alnum(str_replace(' ', '', $value)); | ||
} | ||
|
||
protected function alphaNumericMessage() | ||
{ | ||
return 'can only contain letters or numbers'; | ||
} | ||
|
||
/** | ||
* The value can only contain digits (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) | ||
*/ | ||
protected function digit($value) | ||
{ | ||
return ctype_digit(str_replace(' ', '', $value)); | ||
} | ||
|
||
protected function digitMessage() | ||
{ | ||
return 'can only contain digits'; | ||
} | ||
|
||
/** | ||
* The value can only contain numbers | ||
*/ | ||
protected function numeric($value) | ||
{ | ||
return is_numeric(str_replace(' ', '', $value)); | ||
} | ||
|
||
protected function numericMessage() | ||
{ | ||
return 'can only contain numerical values'; | ||
} | ||
|
||
/** | ||
* The value must be a properly formatted email address | ||
*/ | ||
protected function email($value) | ||
{ | ||
return filter_var($value, FILTER_VALIDATE_EMAIL); | ||
} | ||
|
||
protected function emailMessage() | ||
{ | ||
return 'must contain a correctly formatted email address'; | ||
} | ||
|
||
/** | ||
* The value must be a properly formatted URL | ||
*/ | ||
protected function url($value) | ||
{ | ||
return filter_var($value, FILTER_VALIDATE_URL); | ||
} | ||
|
||
protected function urlMessage() | ||
{ | ||
return 'must contain a correctly formatted URL'; | ||
} | ||
|
||
/** | ||
* The character count of the value must be LESS THAN (non-inclusive) the given parameter | ||
* Fails if value is non-numeric | ||
*/ | ||
protected function minLength($value, $parameter) | ||
{ | ||
return strlen($value) >= $parameter; | ||
} | ||
|
||
protected function minLengthMessage($parameter) | ||
{ | ||
return 'must be at least ' . $parameter . ' character(s) long'; | ||
} | ||
|
||
/** | ||
* The character count of the value must be LESS THAN (inclusive) the given parameter | ||
* Fails if value is non-numeric | ||
*/ | ||
protected function maxLength($value, $parameter) | ||
{ | ||
return strlen($value) <= $parameter; | ||
} | ||
|
||
protected function maxLengthMessage($parameter) | ||
{ | ||
return 'must be less than ' . $parameter . ' character(s) long'; | ||
} | ||
|
||
/** | ||
* The value must be GREATER THAN (inclusive) the given parameter | ||
* Fails if value is non-numeric | ||
*/ | ||
protected function min($value, $parameter) | ||
{ | ||
if (!$this->numeric($value)) { | ||
return false; | ||
} | ||
|
||
return floatval($value) >= floatval($parameter); | ||
} | ||
|
||
protected function minMessage($parameter) | ||
{ | ||
return 'must be greater than or equal to ' . $parameter; | ||
} | ||
|
||
/** | ||
* The value must be LESS THAN (inclusive) the given parameter | ||
* Fails if value is non-numeric | ||
*/ | ||
protected function max($value, $parameter) | ||
{ | ||
if (!$this->numeric($value)) { | ||
return false; | ||
} | ||
|
||
return floatval($value) <= floatval($parameter); | ||
} | ||
|
||
protected function maxMessage($parameter) | ||
{ | ||
return 'must be less than or equal to ' . $parameter; | ||
} | ||
} |
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
{ | ||
"milk": { | ||
"calorie" : 103 | ||
}, | ||
"chocolate milk": { | ||
"calorie" : 209 | ||
}, | ||
"soy milk": { | ||
"calorie" : 131 | ||
}, | ||
"orange juice": { | ||
"calorie" : 111 | ||
}, | ||
"apple juice": { | ||
"calorie" : 113 | ||
} | ||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
{ | ||
"banana": { | ||
"calorie" : 1 | ||
}, | ||
"strawberry": { | ||
"calorie" : 2 | ||
}, | ||
"blueberry": { | ||
"calorie" : 3 | ||
}, | ||
"mango": { | ||
"calorie" : 4 | ||
}, | ||
"kiwi": { | ||
"calorie" : 5 | ||
} | ||
} |
This file contains 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
Oops, something went wrong.