<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ApPHP DataValidator :: Getting Started</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
.req { color:#960096; }
.method { color:#009600; }
.comments { color:#7a7a7a; }
.comments_b { color:#575757; }
.code { color:#000096; }
BODY { padding:5px 10px; }
PRE { background-color:#f1f2f3; border:1px solid #cccccc; padding:3px 5px; }
</style>
</head>
<body>
<!-- last update 13.04.2012 -->
<div style="float:right;">
<div id="content-0">
<div class="post-0">
<h2 id="post-1">Getting Started of ApPHP DataValidator (version 1.0.0 or above)</h2>
<div class="storycontent">
<table>
<tbody>
<tr>
<td>
<ul>
<li><a href="GettingStarted.html#Common_Notices"><span>1.</span> <span>Common Notices</span></a><br /></li>
<li><a href="GettingStarted.html#Getting_Started"><span>2.</span> <span>Getting Started</span></a><br /><br />
<ul>
<li> <a href="GettingStarted.html#Step_1._Creating_Validator_Object."><span>Step 1. Creating Validator object.</span></a> </li>
<li> <a href="GettingStarted.html#Step_2._General_Settings."><span>Step 2. General Settings.</span></a> </li>
<li> <a href="GettingStarted.html#Step_3._Creating_ValidatorDataContainer_Object."><span>Step 3. Creating ValidatorDataContainer object.</span></a> </li>
<li> <a href="GettingStarted.html#Step_4._Creating_ValidationType_Objects."><span>Step 4. Creating ValidationType objects.</span></a> </li>
<li> <a href="GettingStarted.html#Step_5._Error_handling."><span>Step 5. Error handling.</span></a> </li>
</ul>
<br />
</li>
</ul>
</td>
</tr>
</tbody>
</table>
<a name="Common_Notices"></a>
<h3>Common Notices</h3>
<p>
<font color="darkred">• <b>Use standard opening and closing tags <html>...</html>. Enclose everything else in these otherwise your page may display incorrectly. </b></font><br />
<font color="darkred">• <b>Do not put ApPHP DataValidator code into another HTML Form: <form>...</form> </b></font>
</p>
<a name="Getting_Started"></a>
<h3><b>Getting Started</b></h3>
<div style="FLOAT: right; MARGIN-LEFT: 5px">[<a title="Step 1. Creating Validator object." href="GettingStarted.html#top">top</a>]</div>
<a name="Step_1._Creating_Validator_Object."></a>
<h4>Step 1. Creating Validator object.<br />
---------------------------------------------------------------------------</h4>
<p>
Make sure you define a valid relative (virtual) path to the <b>Validator.class.php</b> file.
</p>
<pre>
<span class="comments">## *** include Validator class
</span><span class="code">define('VALIDATOR_DIR', '');
require_once(VALIDATOR_DIR.'validator.class.php');</span>
</pre>
<p>
There are two basic validator classes: Validator and ValidatorDataContainer.
Class Validator manages a validation process. Class ValidatorDataContainer keeps the data
you want to validate. First you have to create an object of Validator class.
</p>
<pre>
<span class="comments">## *** create Validator object</span>
<span class="code">$validator = new Validator();</span>
</pre>
<p><br/></p>
<div style="FLOAT: right; MARGIN-LEFT: 5px">[<a title="Go to top" href="GettingStarted.html#top">top</a>]</div>
<a name="Step_2._General_Settings."></a>
<h4>Step 2. General Settings.<br />
---------------------------------------------------------------------------</h4>
<p>
You can specify some options for your validator class: if you want validation to be stopped after the first error comes up call
<i><b>$validator->SetStopIfErrorFlag(1);</b></i> otherwise leave it as a default. By default validator collects all
errors and stops only when there are no more data to validate.
</p>
<pre>
<span class="code">$validator->SetStopIfErrorFlag(1);</span>
</pre>
<p><br/></p>
<div style="FLOAT: right; MARGIN-LEFT: 5px">[<a title="Step 1. Creating ValidatorDataContainer object." href="GettingStarted.html#top">top</a>]</div>
<a name="Step_3._Creating_ValidatorDataContainer_Object."></a>
<h4>Step 3. Creating ValidatorDataContainer object.<br />
---------------------------------------------------------------------------</h4>
<p>
Now you need to create an object of ValidatorDataContainer class. If you want to use a <i><b>$_REQUEST</b></i> array
as source for your data (data from a form), you don't need to pass any parameters to ValidatorDataContainer
constructor:
</p>
<pre>
<span class="code">$dataContainer = new ValidatorDataContainer();</span>
</pre>
<p>
If you want to use an array <i><b>$someDataArray => array($key0 => $value0, $key1 => $value1);</b></i> as a source
for your data, pass it as a parameter: <i><b>$dataContainer = new ValidatorDataContainer($someDataArray);</b></i>
Now you have a container with a data and a validator where you put your data.
</p>
<pre>
<span class="code">$someDataArray => array($key0 => $value0, $key1 => $value1);</span>
<span class="code">$dataContainer = new ValidatorDataContainer($someDataArray);</span>
</pre>
<p><br/></p>
<div style="FLOAT: right; MARGIN-LEFT: 5px">[<a title="Step 1. Creating ValidatorDataContainer object." href="GettingStarted.html#top">top</a>]</div>
<a name="Step_4._Creating_ValidationType_Objects."></a>
<h4>Step 4. Creating ValidationType objects.<br />
---------------------------------------------------------------------------</h4>
<p>
You are ready now to create ValidationType objects - the entities which contains
data about each validating value. These values could be: a number, a string, an
email and a URL. Consequently you create an object of a class inheriting from
<i><b>ValidatorType</b></i> such as <i><b>ValidatorTypeString</b></i> or
<i><b>ValidatorTypeUrl</b></i> which matches the data type you want to validate.
Every Validation Type has additional options for a agile and accurate validation.
<br /><br />
To set these options, simply call a setter method for those you want to use.
For example, if there is a key-value pair ["age" => 12] in <i><b>$dataContainer</b></i>
it can be validated as follows:
</p>
<pre>
<span class="comments">/* constructor gets for parameters:
1. a container object to look for data
2. a key matching the value you validate
3. a subtype (one of possible, they are public static properties whos names are started from "subtype")
4. optional friendly user name ('user age'), which is used to generate an error message
*/</span>
<span class="code">$validatorType = new ValidatorTypeNumeric(
$dataContainer, 'age', ValidatorTypeNumeric::$subtypeInt, 'user age'
);</span>
<span class="comments">// set a validation for minimum value</span>
<span class="code">$validatorType->SetMin(16);</span>
<span class="comments">// set a validation for maximum value</span>
<span class="code">$validatorType->SetMax(90);</span>
<span class="comments">// now the ValidatorType is ready and is added</span>
<span class="code">$validator->AddType($validatorType);</span>
<span class="comments">// after you add all values you want you can start the validation</span>
<span class="code">$validator->Validate();</span>
</pre>
<p>
That's all! Validation is done.
</p>
<p><br/></p>
<div style="FLOAT: right; MARGIN-LEFT: 5px">[<a title="Step 1. Creating ValidatorDataContainer object." href="GettingStarted.html#top">top</a>]</div>
<a name="Step_5._Error_handling."></a>
<h4>Step 5. Error handling.<br />
---------------------------------------------------------------------------</h4>
<p>
Once validation is finished you need to understand if there where any errors. Call a method:
</p>
<pre>
<span class="code">$check = $validator->GetHasErrorStatus();</span>
</pre>
<p>
<b><i>$check</i></b> is a boolean value that contains a 'true' if there where any errors, or a 'false' if there where none.
If any errors have occurred, you can get them using another method:
</p>
<pre>
<span class="code">$errors = $validator->GetErrorArray();</span>
</pre>
<p>
<b><i>$errors</i></b> is an array of ValidatorError objects. By using them, you can either get a user friendly messages for every error:
</p>
<pre><span class="code">foreach($errors as $error){
echo $error->ToString();
}
</span></pre>
<p>
Or use following another way to get the error type and additional data (container array key, minimum value etc.) to do whatever you want it for.
</p>
<pre><span class="code">$errorData = array();
foreach($errors as $error){
$errorData[$error->GetErrType()] = $error->GetErrData();
}
</span></pre>
In this way you will receive all validation results.
<p><br/></p>
</div>
</div>
</div>
</body>
</html>
|