PageRenderTime 50ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 1ms

/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php

http://github.com/fzaninotto/Faker
PHP | 81 lines | 66 code | 7 blank | 8 comment | 1 complexity | cc3fc6201cb7aea018b5fdf712306281 MD5 | raw file
  1. <?php
  2. namespace Faker\ORM\Doctrine;
  3. use Doctrine\Common\Persistence\Mapping\ClassMetadata;
  4. class ColumnTypeGuesser
  5. {
  6. protected $generator;
  7. /**
  8. * @param \Faker\Generator $generator
  9. */
  10. public function __construct(\Faker\Generator $generator)
  11. {
  12. $this->generator = $generator;
  13. }
  14. /**
  15. * @param ClassMetadata $class
  16. * @return \Closure|null
  17. */
  18. public function guessFormat($fieldName, ClassMetadata $class)
  19. {
  20. $generator = $this->generator;
  21. $type = $class->getTypeOfField($fieldName);
  22. switch ($type) {
  23. case 'boolean':
  24. return function () use ($generator) {
  25. return $generator->boolean;
  26. };
  27. case 'decimal':
  28. $size = isset($class->fieldMappings[$fieldName]['precision']) ? $class->fieldMappings[$fieldName]['precision'] : 2;
  29. return function () use ($generator, $size) {
  30. return $generator->randomNumber($size + 2) / 100;
  31. };
  32. case 'smallint':
  33. return function () {
  34. return mt_rand(0, 65535);
  35. };
  36. case 'integer':
  37. return function () {
  38. return mt_rand(0, intval('2147483647'));
  39. };
  40. case 'bigint':
  41. return function () {
  42. return mt_rand(0, intval('18446744073709551615'));
  43. };
  44. case 'float':
  45. return function () {
  46. return mt_rand(0, intval('4294967295'))/mt_rand(1, intval('4294967295'));
  47. };
  48. case 'string':
  49. $size = isset($class->fieldMappings[$fieldName]['length']) ? $class->fieldMappings[$fieldName]['length'] : 255;
  50. return function () use ($generator, $size) {
  51. return $generator->text($size);
  52. };
  53. case 'text':
  54. return function () use ($generator) {
  55. return $generator->text;
  56. };
  57. case 'datetime':
  58. case 'date':
  59. case 'time':
  60. return function () use ($generator) {
  61. return $generator->datetime;
  62. };
  63. case 'datetime_immutable':
  64. case 'date_immutable':
  65. case 'time_immutable':
  66. return function () use ($generator) {
  67. return \DateTimeImmutable::createFromMutable($generator->datetime);
  68. };
  69. default:
  70. // no smart way to guess what the user expects here
  71. return null;
  72. }
  73. }
  74. }