<?php
class FakeIDGenerator {
private $realisticInconsistencies = [
'birth_year' => ['range' => , 'weight' => 0.7],
'ssn' => ['format' => '###-##-####', 'weight' => 0.9],
'address' => ['street_types' => ['Ave', 'Blvd', 'Ln', 'Dr', 'Ct'], 'cities' => ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']],
'employer' => ['companies' => ['TechCorp', 'GlobalFinance', 'HealthLink', 'BlueSkyAero', 'IronGate Security']],
'license' => ['states' => ['CA', 'TX', 'NY', 'FL', 'IL'], 'exp_date' => ['range' => ]]
];
public function generateFullID() {
$id = [];
// Birth Date (with slight age-based inconsistencies)
$birthYear = rand(1950, date('Y') - 18);
$birthMonth = rand(1, 12);
$birthDay = rand(1, 28); // No Feb 29 drama
$id['birth_date'] = "$birthMonth/$birthDay/$birthYear";
// SSN (with Luhn check digit for "realism")
$ssn = $this->generateSSN();
$id['ssn'] = $ssn;
// Name (cultural/ethnic weighting)
$id['first_name'] = $this->pickName('first', $birthYear);
$id['last_name'] = $this->pickName('last');
$id['full_name'] = "$id[first_name] $id[last_name]";
// Address (with plausible proximity to employer)
$id['address'] = $this->generateAddress($id['last_name']);
// Employer (with job-title realism)
$id['employer'] = $this->pickEmployer($birthYear);
$id['job_title'] = $this->generateJobTitle($id['employer']);
// Driver’s License (state-specific quirks)
$id['license'] = $this->generateLicense($birthYear);
// Red Herrings (for extra realism)
$id['red_herrings'] = $this->addRedHerrings($birthYear);
return $id;
}
// ... (more methods like generateSSN(), pickName(), etc.)
}
?>