2012年11月5日星期一

Community News: Latest PECL Releases for 11.05.2012

Latest PECL Releases:

Community News: Packagist Latest Releases for 11.05.2012

Recent releases from the Packagist:

QaFoo: Code Review Tool


On the QaFoo site they've shared a tool they use for doing code reviews in a new post to their blog. The tool, just called review, lets you run several different metrics on the code including the PHP "mess detector", PDepend and PHPCPD (copy & paste detector).



We, at Qafoo, do Code Reviews quite often together with our customers. This often focusses on dicussing metrics, browsing the associated code and discussing solutions for the issues found. We started using a bunch of shell scripts for that, like everyone else, but at some point we came up with a webinterface to do this in a more comfortable way. Now we want to share this tool with you.


Included in the post are several screenshots showing the results of the different types of evaluations - the ones mentioned above as well as things like "methods per class", cyclomatic complexity and NPath complexity. There's also a source code browser and a visual class structure generation tool (UML). It's under a AGPLv3 license and can be found on their site.

Wojciech Sznapka: Is Symfony2 a MVC framework?


In his latest post Wojciech Sznapka wonders if Symfony2 is actually MVC or if it's just the "C" and "V" in the equation with the "M" (Model) layer being left wide open.



The question is: where is Model layer in Symfony2? My answer is: there's ain't one and it's good.. Symfony2 isn't hardly bounded with Model layer, as it could have been seen in first version. We can see many Active Record model implementations in modern web frameworks such as Ruby on Rails, Django and symfony 1. I'm not saying those solutions are bad. The main problem was, that big systems maintained by plenty of developers changing over time tends to have a messy codebase. The common place to locate business logic were Model layer. The result of that approach were huge model classes, randomly structured Table/Peer classes full of static method and general feeling that system is hardly impossible to maintain anymore.


He talks about the main problem that comes from this style of coding - overly complex systems - and one possible way to help mitigate them using domain-driven design practices. He lists a few of the things that Symfony2 comes with that could be helpful for this method including the dependency injection container, the use of entities, repositories and value objects.