How to make Symfony/Doctrine generate accessors
I'm using Symfony for a big project; after a little research I choosed Doctrine as database access layer, since is more configurable (and modern) then Propel.
I use Eclipse 3.4 and PDT as IDE, mostly because of its great Code Assist feature (CA is Intellisense for VisualStudio users...).
Well, after a bit I found that Doctrine class generator misses to generate column accessors (getters and setters) and relies on PHP __get and __set magic accessors.
Suppose you have an user table, Doctrine generates an User class for you and you can access columns of a single record through its properties, like this:
$a = new User(); $a = $user->getUsername(); $user->setUsername('foo');
Since getUsername() and setUsername() are not real properties, Doctrine lets you access them through __get and __set.
Even if this works, IDEs like Eclipse can't help you writing code because they don't know what properties are defined on User class (except the ones of the class it extends, but they are generic and not related to users table).
Searching through Doctrine documentation, it seems that there should be a generateAccessor option of Doctrine builder which should do the trick; you'll quickly find that this option only exists but is not implemented.
Here you are my solution: a patch for Doctrine builder to add missing accessors generator.
Download the attached file and overwrite the existing one here:
NOTE: this patch applies to Doctrine builder included in both Symfony 1.2.2 and Symfony 1.2.4 version.
Feel free to comment my patch...
UPDATE 21/01/2010: starting from Symfony 1.3/1.4, a newer version of Doctrine is bundled. This new version will not still generate accessors but it adds them as @doc comments. This way the code is much lighter and your IDE is happy too (it works perfectly in Eclipse with PDT).
Thanks for your comprehension and enjoy CoolSoft.
- .NET Framework
- WEB / PHP
- Translate software
Click here if you want to support CoolSoft: