2011 m. gruodžio 5 d., pirmadienis

ReflectionException: Method PHPUnit_Framework_Warning::Warning() does not exist

If you ever got error like this:
ReflectionException: Method PHPUnit_Framework_Warning::Warning() does not exist
It means you have no tests defined in your unit test file.


2011 m. gegužės 10 d., antradienis

Thoughts about: PHP - CQRS - Axis2 - Java - Quercus - DDD

Year ago I have started to work on a small PHP framework that had to help me to implement CQRS architecture for a pretty large e-commerce system. It took me around 4-5 month but I did it and delivered first version which has been release in production. Next month it will celebrate one year birthday. And all I can tell you is that I was never happier than now. Why ?
We are able to manage complexity, we are able to be agile from business perspective, we are able to maintain and develop new features while being a pretty small team and in general - it is awesome :).

But there are things that still bother me and I believe could be improved. So this blog post is dedicated to discuss them.

Web Services

All our system is based on SOA principle, and that means that we are organising ourselves around services. Now what bugs me is that PHP was never meant to be used to create web services. It works, it will do the job for you. Our current implementation is running and partners are using it. But it does lack stuff. For example what about WS-* ? I found only one project that is trying to implement these specifications WSO/Oxygen Tank. But when I tried it, it just simple was not working.
Another thing is tools. You need tools to make your life easier while developing, deploying and testing. So I thought this is where I will draw a line and will try to replace it with something more suitable. My first candidate was Axis2 Java implementation. We got WS-*, we can create and deploy web services very easily and having features like "hot deployment" really helps you a lot. Also it's proven and tested technology.
Now because our application layer is really very thin I think that not only SOAP server engine could be replaced but application layer as well. Replacing it with Quercus, PHP implementation in Java, I would gain some performance and would make it easier to maintain application layer. Plus i would get access to all java libraries.

Tools

I am definitely missing tools to work with events. Custom scripts to load events, replay does the job but would be cool to have more time to improve them.