PageRenderTime 47ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/src/Faker/ORM/Propel/ColumnTypeGuesser.php

http://github.com/fzaninotto/Faker
PHP | 107 lines | 90 code | 9 blank | 8 comment | 3 complexity | d66b7cfc6c2f73e3549dec1ff4847929 MD5 | raw file
  1. <?php
  2. namespace Faker\ORM\Propel;
  3. use \PropelColumnTypes;
  4. use \ColumnMap;
  5. class ColumnTypeGuesser
  6. {
  7. protected $generator;
  8. /**
  9. * @param \Faker\Generator $generator
  10. */
  11. public function __construct(\Faker\Generator $generator)
  12. {
  13. $this->generator = $generator;
  14. }
  15. /**
  16. * @param ColumnMap $column
  17. * @return \Closure|null
  18. */
  19. public function guessFormat(ColumnMap $column)
  20. {
  21. $generator = $this->generator;
  22. if ($column->isTemporal()) {
  23. if ($column->isEpochTemporal()) {
  24. return function () use ($generator) {
  25. return $generator->dateTime;
  26. };
  27. }
  28. return function () use ($generator) {
  29. return $generator->dateTimeAD;
  30. };
  31. }
  32. $type = $column->getType();
  33. switch ($type) {
  34. case PropelColumnTypes::BOOLEAN:
  35. case PropelColumnTypes::BOOLEAN_EMU:
  36. return function () use ($generator) {
  37. return $generator->boolean;
  38. };
  39. case PropelColumnTypes::NUMERIC:
  40. case PropelColumnTypes::DECIMAL:
  41. $size = $column->getSize();
  42. return function () use ($generator, $size) {
  43. return $generator->randomNumber($size + 2) / 100;
  44. };
  45. case PropelColumnTypes::TINYINT:
  46. return function () {
  47. return mt_rand(0, 127);
  48. };
  49. case PropelColumnTypes::SMALLINT:
  50. return function () {
  51. return mt_rand(0, 32767);
  52. };
  53. case PropelColumnTypes::INTEGER:
  54. return function () {
  55. return mt_rand(0, intval('2147483647'));
  56. };
  57. case PropelColumnTypes::BIGINT:
  58. return function () {
  59. return mt_rand(0, intval('9223372036854775807'));
  60. };
  61. case PropelColumnTypes::FLOAT:
  62. return function () {
  63. return mt_rand(0, intval('2147483647'))/mt_rand(1, intval('2147483647'));
  64. };
  65. case PropelColumnTypes::DOUBLE:
  66. case PropelColumnTypes::REAL:
  67. return function () {
  68. return mt_rand(0, intval('9223372036854775807'))/mt_rand(1, intval('9223372036854775807'));
  69. };
  70. case PropelColumnTypes::CHAR:
  71. case PropelColumnTypes::VARCHAR:
  72. case PropelColumnTypes::BINARY:
  73. case PropelColumnTypes::VARBINARY:
  74. $size = $column->getSize();
  75. return function () use ($generator, $size) {
  76. return $generator->text($size);
  77. };
  78. case PropelColumnTypes::LONGVARCHAR:
  79. case PropelColumnTypes::LONGVARBINARY:
  80. case PropelColumnTypes::CLOB:
  81. case PropelColumnTypes::CLOB_EMU:
  82. case PropelColumnTypes::BLOB:
  83. return function () use ($generator) {
  84. return $generator->text;
  85. };
  86. case PropelColumnTypes::ENUM:
  87. $valueSet = $column->getValueSet();
  88. return function () use ($generator, $valueSet) {
  89. return $generator->randomElement($valueSet);
  90. };
  91. case PropelColumnTypes::OBJECT:
  92. case PropelColumnTypes::PHP_ARRAY:
  93. default:
  94. // no smart way to guess what the user expects here
  95. return null;
  96. }
  97. }
  98. }