I think this question is ridiculous, always have. If an employer is looking for a weakness then they should ask the question straight don't beat around the bush.
If someone does ask this of you, don't give a cliched or cheesy response.
I would say.....
There isn't a reason why you shouldn't hire me as I feel I'm an ideal fit for this job. However like all people I do have weakness and it is php programming/time management/emarketing/whatever but I have done this this and this to deal with it and since I have done that I have seen my levels of understanding increase as demonstrated by blah blah blah and will continue to explore these areas as I'm keen to expand my knowledge further with in that feild.
If you own up to a potential employer an area that isn't a strength and show you have identified it, taken action to remedy it and can give examples how you have improved it is much more useful for the employer when comparing candidates than some cheesy job pick-up line.