<?php
class FormTracker {
private $form_data = [];
private $dry_run = false;
public function __construct($dry_run = false) {
$this->dry_run = $dry_run;
}
public function setFieldValue(string $field_name, string $value): void {
$this->form_data[$field_name] = $value;
}
public function getFieldValue(string $field_name): ?string {
return isset($this->form_data[$field_name]) ? $this->form_data[$field_name] : null;
}
public function getFormData(): array {
return $this->form_data;
}
public function isDryRun(): bool {
return $this->dry_run;
}
public function enableDryRun(): void {
$this->dry_run = true;
}
public function disableDryRun(): void {
$this->dry_run = false;
}
/**
* Simulates form processing based on the current data.
* If in dry run mode, it only returns the data.
* Otherwise, it performs actions.
*/
public function processForm(): array {
if ($this->dry_run) {
return $this->form_data; // Return data in dry run mode
}
// Simulate form processing logic
$processed_data = $this->form_data;
// Example: Validate email format
if (isset($processed_data['email']) && filter_var($processed_data['email'], FILTER_VALIDATE_EMAIL) === false) {
error_log("Invalid email format.");
$processed_data['email_error'] = "Invalid email address.";
}
// Example: Sanitize a field
if(isset($processed_data['name'])){
$processed_data['name'] = htmlspecialchars($processed_data['name'], ENT_QUOTES, 'UTF-8');
}
return $processed_data;
}
}
// Example usage:
$tracker = new FormTracker(); //default is not dry run
// Set form field values
$tracker->setFieldValue('name', 'John Doe');
$tracker->setFieldValue('email', 'john.doe@example.com');
$tracker->setFieldValue('message', 'This is a test message.');
// Check if in dry run mode
echo "Dry run mode: " . ($tracker->isDryRun() ? 'true' : 'false') . "\n";
// Process the form (without dry run)
$processed_data = $tracker->processForm();
echo "Processed data:\n";
print_r($processed_data);
// Enable dry run mode
$tracker->enableDryRun();
echo "Dry run mode: " . ($tracker->isDryRun() ? 'true' : 'false') . "\n";
// Process the form (in dry run mode)
$dry_run_data = $tracker->processForm();
echo "Dry run data:\n";
print_r($dry_run_data);
// Disable dry run mode
$tracker->disableDryRun();
echo "Dry run mode: " . ($tracker->isDryRun() ? 'true' : 'false') . "\n";
?>
Add your comment