Symfony Resources Central

Web development made simple

The Roots - Part I - HTTP is the web's language

Everybody working in web development knows about this, right?

I realized recently that it was far from being true. While frameworks and ORMs make web developers' job easier and easier, more and more people comes to develop websites without knowing about the real basics. They use relational databases without knowing anything about SQL, and they develop websites without understanding how the client will talk with their website.

I don't pretend to make a revolution there, but if I bring my car to the car mechanic, I hope he will know a bit more about it than "engine makes power, and so the car is working". So are my exigences when I ask a specialist to work on a website.

To give a parallel with playing music, you can learn to play some songs without knowing anything about harmony and rhythm, but is you want to get serious about what you play, it will become an absolute requirement.

I so decided to make some short articles explaining in simple terms what those basis are, to my humble opinion. First one is about HTTP.

Continue reading...

sfDynamicsPlugin towards 1.0 release

It's been quite a while since the last big update, and after today's one, I decided to release 0.9.6 version (0.9.5 did not have symfony 1.4 support advertised in package.xml, so I created a new one for this).

Little sum up of new features:

  • Symfony cache is now used in debug mode too, but it checks assets modification timestamps to know if a recompilation is needed. This timestamp check is not done in non-debug mode, to avoid overhead.
  • An asset filter chain, fully configurable, extensible and backward compatible is now there. The process is pretty simple: you can write subclasses of sfDynamicsBaseAssetFilter to implement your last great idea about assets filtering. Then, just register it in your app.yml under the section sfDynamicsPlugin/concatenated_javascript_filter_chain (or the same with stylesheet). A full working example is available on the new application configuration page, that describe all app.yml configuration directives. By the way, the default asset filtair chain is exactly the same as before.
  • To demonstrate this new feature, a sfDynamicsExperimentalClosureAPIJavascriptFilter class has been added. It is an asset filter that calls the Google Closure Compiler API, via an HTTP POST request. Of course, it is not a good idea to do so on a «real» website, but this class is here for demonstration purpose.
  • Along with the new documentation page, a set of configuration values that were guessed depending on if you are in debug mode, or not, are now configurable via the app.yml of each applications. Of course, the default value is fully backward compatible.
  • Last feature, which is more polishing than a feature, is that your project won't show up if the sfDynamics module is disabled but required for some assets. Instead, an exception will explain what's missing.

All those features are tested since a few weeks, and a simple cache:clear after upgrading the plugin should keep your project in a nice state. Or at least, I hope so...

The global goal of this release is to tend towards 1.0, by making all existing features configurable and extensible, so that 1.0 branch will be able to remain stable and 100% backward compatible for a long time.

See you space symfonists!

All about backward compatibility...

Backward compatibility sounds nice, but it's not so easy to respect it in big projects. And the whole interest is on big projects: it's maybe not such a problem if your grand-ma's blog breaks its API on each release, but there would be a revolution (or not?) if win32 API was changing on each enslavement service pack microsoft releases.

Here is a real story case study of a BC break that happened on the PHP language itself.

Continue reading...

Some sfDynamics news...

Long time no see...

I'm very happy to get more and more comments and feedback about sfDynamics. I sure know it's not perfect, but seeing it's really usefull for other people than me and my colleagues is rewarding.

But I've also been so busy lately that I did very few writing and coding work around it, so I'll write about last months work, and about the future road-map.


  • I moved all my plug-ins ticketing from their different homes (lighthouse for sfDynamics, and symfony-project's trac for the others) to a brand new redmine instance I set up on trackeet.org. This will greatly enhance how I can see the issue list, prioritize and assign different stuff to people willing to help. Additionally, it helps cleaning up symfony-project's trac instance which suffers from plug-in issues since a long time.
  • I fixed the easiest issues, and they're packaged into the 0.9.4 release.
  • Since 0.9.2 release, we don't support anymore symfony 1.1, as the routing system was radically different and way less power-full.
  • After I released 0.9.4 this week, next step will be a documentation clean-up, and some tutorial writing. Yes, the fourth part is still missing, and it will come to life very soon.
  • Upcoming 1.0 release will support symfony 1.2, 1.3, and 1.4. The aim for this release is to fix all 0.9 tickets that are not radically new features. A refactoring session before the first 1.0 release will be planned.
  • Next 1.1 version will at least support symfony 1.4, and if it's possible 1.2 and 1.3 too. But the main goal will be to stick to the next LTS symfony version, which will be 1.4.

I know, no dates were given on this page, but the new roadmap page solves this.

Some more news soon...

The first sfDynamicsPlugin beta is out!

After a long alpha development stage, I released this morning the first BETA version of sfDynamicsPlugin. But... You may wonder, what is that?

sfDynamicsPlugin is a flexible assets manager for symfony which can be used to manage javascript libraries and their associated stylesheets. It supports packing, and CSS minifying, while keeping the full readable source in development environment.

Continue reading...

How to render a component in an action with symfony 1.1+

public function executeBarfoo(sfWebRequest $request)
{
  return $this->renderComponent('my_module', 'my_component', array());
}

This is an attempt to take over the first place on google for the query how to render component action symfony.

- page 1 of 4

© Copyright 2007-2009 daKrazy. All rights reserved.

Design, template and content by Romain Dorgueil