PageRenderTime 82ms CodeModel.GetById 35ms RepoModel.GetById 2ms app.codeStats 0ms

/src/Faker/ORM/Propel2/ColumnTypeGuesser.php

http://github.com/fzaninotto/Faker
PHP | 107 lines | 90 code | 9 blank | 8 comment | 6 complexity | 05191e2bf91a08e48f8468682c59f7c8 MD5 | raw file
  1. <?php
  2. namespace Faker\ORM\Propel2;
  3. use \Propel\Generator\Model\PropelTypes;
  4. use \Propel\Runtime\Map\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->getType() == PropelTypes::BU_DATE || $column->getType() == PropelTypes::BU_TIMESTAMP) {
  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 PropelTypes::BOOLEAN:
  35. case PropelTypes::BOOLEAN_EMU:
  36. return function () use ($generator) {
  37. return $generator->boolean;
  38. };
  39. case PropelTypes::NUMERIC:
  40. case PropelTypes::DECIMAL:
  41. $size = $column->getSize();
  42. return function () use ($generator, $size) {
  43. return $generator->randomNumber($size + 2) / 100;
  44. };
  45. case PropelTypes::TINYINT:
  46. return function () {
  47. return mt_rand(0, 127);
  48. };
  49. case PropelTypes::SMALLINT:
  50. return function () {
  51. return mt_rand(0, 32767);
  52. };
  53. case PropelTypes::INTEGER:
  54. return function () {
  55. return mt_rand(0, intval('2147483647'));
  56. };
  57. case PropelTypes::BIGINT:
  58. return function () {
  59. return mt_rand(0, intval('9223372036854775807'));
  60. };
  61. case PropelTypes::FLOAT:
  62. return function () {
  63. return mt_rand(0, intval('2147483647'))/mt_rand(1, intval('2147483647'));
  64. };
  65. case PropelTypes::DOUBLE:
  66. case PropelTypes::REAL:
  67. return function () {
  68. return mt_rand(0, intval('9223372036854775807'))/mt_rand(1, intval('9223372036854775807'));
  69. };
  70. case PropelTypes::CHAR:
  71. case PropelTypes::VARCHAR:
  72. case PropelTypes::BINARY:
  73. case PropelTypes::VARBINARY:
  74. $size = $column->getSize();
  75. return function () use ($generator, $size) {
  76. return $generator->text($size);
  77. };
  78. case PropelTypes::LONGVARCHAR:
  79. case PropelTypes::LONGVARBINARY:
  80. case PropelTypes::CLOB:
  81. case PropelTypes::CLOB_EMU:
  82. case PropelTypes::BLOB:
  83. return function () use ($generator) {
  84. return $generator->text;
  85. };
  86. case PropelTypes::ENUM:
  87. $valueSet = $column->getValueSet();
  88. return function () use ($generator, $valueSet) {
  89. return $generator->randomElement($valueSet);
  90. };
  91. case PropelTypes::OBJECT:
  92. case PropelTypes::PHP_ARRAY:
  93. default:
  94. // no smart way to guess what the user expects here
  95. return null;
  96. }
  97. }
  98. }