I’d recommend a folder convention. Not only for models, views and controllers, but also for widgets, behaviors, static function helper classes, 3rd party classes like swiftmailer etc.
So the default folder structure could look like this:
There could also be path shortcuts like ‘ext.’ for application.extension (e.g. ‘behavior.’, ‘helper.’, ‘validator.’, ‘vendor.’, ‘widget.’)
The "Helpers" folder contains global static helper classes, the "Validators" folder contains custom model validations.
Since a widget consists of a php file and some libs and views you don’t want to drop everything into the components folder. I recommend a separate file and a same named folder containing all the widget related stuff (like mentioned above)
It looks cleaner, but it comes with a drawback: You would have to import more directories (which Yii adds to PHPs include path). So more directories need to get scanned when a class file is missing. That’s why i don’t think, Yii should use this structure for generated apps by default.