PageRenderTime 49ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/src/Faker/ORM/CakePHP/ColumnTypeGuesser.php

http://github.com/fzaninotto/Faker
PHP | 71 lines | 62 code | 6 blank | 3 comment | 3 complexity | da447079bd03d566ec81ab2cb519f132 MD5 | raw file
  1. <?php
  2. namespace Faker\ORM\CakePHP;
  3. class ColumnTypeGuesser
  4. {
  5. protected $generator;
  6. public function __construct(\Faker\Generator $generator)
  7. {
  8. $this->generator = $generator;
  9. }
  10. /**
  11. * @return \Closure|null
  12. */
  13. public function guessFormat($column, $table)
  14. {
  15. $generator = $this->generator;
  16. $schema = $table->schema();
  17. switch ($schema->columnType($column)) {
  18. case 'boolean':
  19. return function () use ($generator) {
  20. return $generator->boolean;
  21. };
  22. case 'integer':
  23. return function () {
  24. return mt_rand(0, intval('2147483647'));
  25. };
  26. case 'biginteger':
  27. return function () {
  28. return mt_rand(0, intval('9223372036854775807'));
  29. };
  30. case 'decimal':
  31. case 'float':
  32. return function () use ($generator) {
  33. return $generator->randomFloat();
  34. };
  35. case 'uuid':
  36. return function () use ($generator) {
  37. return $generator->uuid();
  38. };
  39. case 'string':
  40. if (method_exists($schema, 'getColumn')) {
  41. $columnData = $schema->getColumn($column);
  42. } else {
  43. $columnData = $schema->column($column);
  44. }
  45. $length = $columnData['length'];
  46. return function () use ($generator, $length) {
  47. return $generator->text($length);
  48. };
  49. case 'text':
  50. return function () use ($generator) {
  51. return $generator->text();
  52. };
  53. case 'date':
  54. case 'datetime':
  55. case 'timestamp':
  56. case 'time':
  57. return function () use ($generator) {
  58. return $generator->datetime();
  59. };
  60. case 'binary':
  61. default:
  62. return null;
  63. }
  64. }
  65. }