Julian, thanks for the post.
It's definitely a good idea, but it's likely something that won't necessarily make it back to the core distribution, for a couple of reasons:
As a standard, Qcodo has decided on using actual properties via the PHP magic _get and _set construct instead of explicitly defined getX() and setX() method calls. There aren't necessarily huge pros and cons with either approach... except that in my experience and in my opinion (which folks can obviously be more than free to disagree with =) the direct property access is a bit cleaner than a get() and set() method call:
$objFoo = new Foo();
$objFoo->FirstName = 'Mike';
$objFoo->LastName = 'Ho';
$objFoo->Phone = '650-555-1212';
$objFoo->Save();
as opposed to
$objFoo = new Foo();
$objFoo->SetFirstName('Mike');
$objFoo->SetLastName('Ho');
$objFoo->SetPhone('650-555-1212');
$objFoo->Save();
I feel the former has a more natural look and feel in that setting properties feels more like setting variables. While with the latter, the various set method calls and the save method call all look like method calls, making it less clear at quick glance which lines are property accessors and which lines are meant to be traditional method calls.
Again, not a big deal, and of course, folks are more then welcome to disagree with me here. =) But it's just the way that was decided from early on for Qcodo.
Second, since the magic methods in and of themselves are methods that can be called directly, we have an added benefit of being able to programmatically setting and getting properties without having to have to use reflection or PHP func_call type functionality:
$objFoo = new Foo();
$strPropertyName = 'FirstName';
$objFoo->__set($strPropertyName, 'Mike');
Also, since all the classes (not just the codegen generated ones) use this same construct, it made sense to just be consistent, so that properties for generated data classes match the properties every where else (e.g. QControl classes, other framework classes, etc.). To move away from _get and _set magic method-based properties and to go to explicit getX() and setX() method declarations everywhere would be quite a monumental task.
But you're right, getters and setters are definitely a great and recommended design pattern -- so I definitely encourage everyone to continue using them via the property accessors.
But for folks/teams/projects that actually prefer explicit getX() and setX() method declarations, I think it would actually be pretty easy and straightforward to do that by simply overriding one or two of the codegen templates to add the code snippets for you getX() and setX() calls. I think if you really did want to go with that approach, there is no reason to go ahead and generate it as actual code (e.g. not as comments) within the Generated data classes, so that they'll all automatically be available to you as you code generate your classes.