onPHP / onphp-framework

onPHP is the mature GPL'ed multi-purpose object-oriented PHP framework.
85 stars 52 forks source link

InternalType не реализует getSuffixList() #185

Open zlex opened 11 years ago

zlex commented 11 years ago

В MetaClassProperty::getRelationColumnName() есть вызов метода getSuffixList(). Такой метод нигде не реализован, и если собирать мету с объектами, наследующими InternalType (например, DateRange), сборщик падает.

Подразумеваю, что не все объекты InternalType должны иметь метод getSuffixList(). В onPHP я вообще не нашёл, где это может использоваться. Забыли выпилить?

Что думаете, коллеги?

dovg commented 11 years ago

Тест бы )

zlex commented 11 years ago

Воспроизвести очень легко, добавив property в test/meta/config.meta.xml в любой объект:

<property name="range" type="DateRange" />

Если запустить тесты, то результат такой:

PHP Fatal error:  Call to undefined method DateRangeType::getSuffixList() in /var/www/libs/onphp-dev/meta/classes/MetaClassProperty.class.php on line 271
PHP Stack trace:
PHP   1. {main}() /usr/bin/phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:49
PHP   3. PHPUnit_TextUI_Command->run() /usr/share/php5/PEAR/PHPUnit/TextUI/Command.php:129
PHP   4. PHPUnit_Runner_BaseTestRunner->getTest() /usr/share/php5/PEAR/PHPUnit/TextUI/Command.php:150
PHP   5. ReflectionMethod->invoke() /usr/share/php5/PEAR/PHPUnit/Runner/BaseTestRunner.php:124
PHP   6. AllTests::suite() /var/www/libs/onphp-dev/test/AllTests.php:124
PHP   7. include() /var/www/libs/onphp-dev/test/AllTests.php:84
PHP   8. MetaConfiguration->buildClasses() /var/www/libs/onphp-dev/meta/bin/build.php:306
PHP   9. MetaClass->dump() /var/www/libs/onphp-dev/meta/classes/MetaConfiguration.class.php:236
PHP  10. BasePattern->build() /var/www/libs/onphp-dev/meta/classes/MetaClass.class.php:364
PHP  11. BasePattern->fullBuild() /var/www/libs/onphp-dev/meta/patterns/BasePattern.class.php:72
PHP  12. BasePattern->buildProto() /var/www/libs/onphp-dev/meta/patterns/BasePattern.class.php:81
PHP  13. AutoProtoClassBuilder::build() /var/www/libs/onphp-dev/meta/patterns/BasePattern.class.php:93
PHP  14. AutoProtoClassBuilder::dumpMetaClass() /var/www/libs/onphp-dev/meta/builders/AutoProtoClassBuilder.class.php:32
PHP  15. MetaClassProperty->toLightProperty() /var/www/libs/onphp-dev/meta/builders/AutoProtoClassBuilder.class.php:78
PHP  16. MetaClassProperty->getRelationColumnName() /var/www/libs/onphp-dev/meta/classes/MetaClassProperty.class.php:416
AlexeyDsov commented 11 years ago

Вот так вот сходу не понятно почему оно так. Либо недопилили, либо недовыпилили. В тестах DateRange вроде как упоминается.