mirror of
https://github.com/fzaninotto/Faker.git
synced 2025-03-24 09:19:50 +01:00
introducing locales
This commit is contained in:
parent
aa6f9386d9
commit
0d1ee8c09d
@ -3,23 +3,54 @@
|
||||
namespace Faker;
|
||||
|
||||
require_once __DIR__ . '/Generator.php';
|
||||
require_once __DIR__ . '/Provider/Name.php';
|
||||
require_once __DIR__ . '/Provider/Address.php';
|
||||
require_once __DIR__ . '/Provider/PhoneNumber.php';
|
||||
require_once __DIR__ . '/Provider/Company.php';
|
||||
require_once __DIR__ . '/Provider/Lorem.php';
|
||||
|
||||
class Factory
|
||||
{
|
||||
public static function create()
|
||||
const DEFAULT_LOCALE = 'en_US';
|
||||
|
||||
protected static $defaultProviders = array('Name', 'Address', 'PhoneNumber', 'Company', 'Lorem');
|
||||
|
||||
public static function create($locale = self::DEFAULT_LOCALE)
|
||||
{
|
||||
$generator = new Generator();
|
||||
$generator->addProvider(new Provider\Name($generator));
|
||||
$generator->addProvider(new Provider\Address($generator));
|
||||
$generator->addProvider(new Provider\PhoneNumber($generator));
|
||||
$generator->addProvider(new Provider\Company($generator));
|
||||
$generator->addProvider(new Provider\Lorem($generator));
|
||||
foreach (static::$defaultProviders as $provider) {
|
||||
$providerClassName = self::getProviderClassname($provider, $locale);
|
||||
$generator->addProvider(new $providerClassName($generator));
|
||||
}
|
||||
|
||||
return $generator;
|
||||
}
|
||||
|
||||
protected function getProviderClassname($provider, $locale = '')
|
||||
{
|
||||
if ($providerClass = self::findProviderClassname($provider, $locale)) {
|
||||
return $providerClass;
|
||||
}
|
||||
// fallback to default locale
|
||||
if ($providerClass = self::findProviderClassname($provider, static::DEFAULT_LOCALE)) {
|
||||
return $providerClass;
|
||||
}
|
||||
// fallback to no locale
|
||||
$providerClass = self::findProviderClassname($provider);
|
||||
if (class_exists($providerClass)) {
|
||||
return $providerClass;
|
||||
}
|
||||
throw new \InvalidArgumentException(sprintf('Unable to find provider "%s" with locale "%s"', $provider, $locale));
|
||||
}
|
||||
|
||||
protected static function findProviderClassname($provider, $locale = '')
|
||||
{
|
||||
$providerName = $locale ? sprintf('Provider\%s\%s', $locale, $provider) : sprintf('Provider\%s', $provider);
|
||||
$providerClass = 'Faker\\' . $providerName;
|
||||
echo $providerClass, "\n";
|
||||
if (class_exists($providerClass)) {
|
||||
return $providerClass;
|
||||
}
|
||||
$providerClassPath = __DIR__ . '/' . str_replace('\\', '/', $providerName) . '.php';
|
||||
echo $providerClassPath, "\n";
|
||||
if (file_exists($providerClassPath)) {
|
||||
require $providerClassPath;
|
||||
return $providerClass;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Faker\Provider;
|
||||
namespace Faker\Provider\en_US;
|
||||
|
||||
class Address
|
||||
{
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Faker\Provider;
|
||||
namespace Faker\Provider\en_US;
|
||||
|
||||
class Company
|
||||
{
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Faker\Provider;
|
||||
namespace Faker\Provider\en_US;
|
||||
|
||||
class Name
|
||||
{
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Faker\Provider;
|
||||
namespace Faker\Provider\en_US;
|
||||
|
||||
class PhoneNumber
|
||||
{
|
Loading…
x
Reference in New Issue
Block a user