On DZone.com today there's a new interview by Lyndsey Clevesy with Jason Gilmore looking at the Zend Framework and some of the general things to expect in coming versions.
In this second part of a four-part series, I rebuild the example application developed in the previous tutorial. As you'll recall, it used a protected constructor to prevent the instantiation of the base array iterator class. In this case, a better result will be achieved by declaring the iterator abstract; still, the example demonstrates a simple utilization of a restrictive constructor in a concrete situation.
- Unquestionably, the introduction of a more robust object model in PHP 5 has provided developers with additional features that allow them to build efficient and thorough object-oriented applications without the need to appeal to the ugly programming hacks used frequently in the bad old days of PHP ...
This third part of a seven-part series explores the methods of the PHP Reflection API. You will learn how to take advantage of their functionality to retrieve useful information about the methods defined by a reflected class.
- One of today's most powerful approaches for retrieving information about the internal structure of classes and interfaces in PHP 5 is via the language's native reflection API. What's more, not only does this API comes packaged with a huge variety of methods that let developers perform all sorts of ...

Symfony 2 development got a boost this week with lots of chagesets, mostly related with the upcoming Doctrine 2 bundle.

Development mailing list

Development highlights

Symfony 1.X branch:

  • r28347: [1.2, 1.3, 1.4] removed cookies from Response objects serialization as it does not make any sense and can cause weird behaviors
  • r28348: [1.3, 1.4] added a check for the php_posix extension as some distrib disable it
  • r28365: [1.3, 1.4] added a way to change the default max forward in the controller for edge cases
  • r28366: [1.3, 1.4] fixed sfGeneratorConfigHandler.class.php doesn't work with Windows path

Symfony 2.X branch:

  • 3671..e0a4: [DependencyInjection] made a small performance enhancement (no need to lowercase three times the same)
  • 0c3a..c731: [DoctrineBundle] cloned cache driver service for each usage so we can set a prefix to avoid caching conflicts
  • 165b..fb76: [Console] added hasOption and hasArgument to Input
  • b3d8..660f: [Symfony] added isBooted() method so that I can pass an existing kernel to a Console application
  • 1a45..f5a3: [DoctrineBundle] enhanced the Doctrine 2 integration further to better handle multiple connections/entity managers
  • 85ed..8970: [DoctrineBundle] made mapping information more flexible to allow different metadata mapping files for each bundle
  • 1be4..87e7: [DoctrineBundle] added doctrine:import-mapping command to allow you to easily import the mapping information from an existing database connection to a bundle
  • 2db0..f579: [DoctrineBundle] Fixes for building when you have multiple bundles which mixes mapping information types
  • 6ead..a392: [DoctrineBundle, WebBundle] enhanced API for retrieving database connections and entity managers from controllers to allow for specifying the name of the connection or entity manager
  • 42ad..41d1: [DoctrineBundle] improvements for building entities and getting started
  • 47ae..d3eb: [DoctrineBundle] integrated the new Doctrine 2.0 entity alias feature for the query language
  • 3fbe..bc81: [DoctrineBundle] removed the need to pass the container to the extension (which is dangerous)
  • 2e42..5aba: [ProfiledBundle] moved debug tools from WebBundle to ProfilerBundle
  • 17d4..80bb: [DependencyInjection] stored references to shared services as soon as possible to avoid circular references on legal code
  • e811..9ec2: [OutputEscaper] renamed Safe to SafeDecorator
  • 4505..14f4: [ProfilerBundle] fixed storage read() method and unpack/pack data to avoid weird character in the data stream
  • 8ed1..2311: [DoctrineBundle] fixed alias support to be in sync with the latest version of Doctrine

sfDoctrinePlugin:

  • r28353: [1.3, 1.4] fixed escaping of Doctrine query parameters in WDT

sfPropelPlugin:

  • r28393: [1.2, 1.3] removed unneeded code (which breaks the separation of concerns)

...and many other changes

Development digest: 90 changesets, 18 bugs reported, 16 bugs fixed, 2 enhancements suggested, 3 enhancements closed, 8 documentation defects reported, 25 documentation defects fixed, and 16 documentation edits.

Documentation

New developers for hire

  • Cristiano G. Betta (cristiano [at] cgbdigital [dot] com): Developer, UX designer and devoted geek from London, UK. Experience with Facebook and other social media development in Symfony and Kohana. Likes to tinker with data visualisations and craves a good user experience.

Plugins

  • New plugins
  • Updated plugins
    • sfEasyAuthPlugin: created a compact log in form for sidebars, added a method to the Security User to retrieve the url users should be redirected to after logging in, profiles are now correctly retrieved by doctrine
    • swBaseApplicationPlugin: added colorbox and jquery 1.4.2, removed jNice.css reference
    • csDoctrineCommentsPlugin: created the initial directory structure
    • sfDoctrineDynamicFormRelationsPlugin: initial import, updated README
    • fcDbBackupPlugin: first commit, cleaned up syntax
    • sfTrafficCMSPlugin: unbroken the updating of embedded models, fixed the bug with deleting embedded models and not getting an error message about it
    • sfDoctrineJCroppablePlugin: fixed fatal bug when uploading new image
    • sfExtjsThemePlugin: added edit_combo for non foreign edit fields, fixed the jsonCombo action to not show is null marker for edit combos, fixed a notice in jsonCombo with edit combos
    • sfDoctrineSimpleForumPlugin: cleaned schema.yml (removed some useless 'performance enhancers'), updated and cleaned fixtures.yml, updated CSS and added some images, created admin features such as lock topic, sticky topic, delete, etc. (integrated into sfGuard permissions group of sf_doctrine_simple_forum_moderator_group), updated feed, updated routing.yml, tidied templates
    • dcPropelReportsPlugin: updated event handling
    • sfDoctrine2Plugin: updated form class to use D2 style reflection instead of ActiveEntity, moved isNew check out of constructor for better performance
    • sfEasyGMapPlugin: added reverse geocoding an fix some bugs
    • sfAmfPlugin: updated typo in amfBrowser link, updated secure flag for symfony 1.3-1-4 versions
    • mgI18nPlugin: removed Doctrine dependency, merged lib, ajax and application tabs to one tab named 'Files', added a new database tab, the user can now lookup the database for messages, the import task now update target if the target is already in the database, fixed utf8 errors
    • swCrossLinkApplicationPlugin: created the 1.2 and 1.3 branches, compile method is now public
    • sfSympalPlugin: allowing for a lot rendering method to also be on the content type, setting proper project config instance when context is loaded, cleaned up some config options related to slot types, moved icons into CSS, rearranged the order of where we look for the getXXXSlotValue method when rendering a slot, changed the unpublished slot value to something more helpful
    • sfSympalAdminPlugin: changed admin menu labels
    • sfSympalEditorPlugin: re-established an "edit" mode with save and cancel buttons that save all content slots
    • apostropheBlogPlugin: put titles on category admin generator pages, you can now properly attach media to events again, changes to index view of blog engine, created rss feeds for all blog filters, csrf and 1.4 compatibility fix for admin theme, changes to post and upcoming events partials
    • apostrophePlugin: initial commit of minify module, made some private methods protected for easier overrides, renamed to lib/base to lib/action for consistency with the symfony standard, fixed apostophe logo in admin bar to link to the proper controller, added autocomplete plugin to assets because the Rich Time Picker uses autocomplete, added a new PDF slot (the default setting shows a basic PDF icon on the left, with the title, description and a download link on the right), significant progress on I18N, search markup was invalid with a strict doctype, wrapped aSlideshowSlot JS in CDATA tag to help with Strict DocType validation
    • apostropheFormBuilderPlugin: slot type for rendering charts from form data

New symfony powered websites

  • New gallery: (English, and Russian) website of art exhibition called "New gallery" located in Kiev

They talked about us


Be trained by symfony experts - Mar 24 Paris - Apr 12 Paris - Apr 21 Paris
Ben Scholzen has started a serial about modern appication design on his blog. As base of this serial he is using his blog source for demonstration.
Continuing on from his previous articles on working with REST in Zend Framework applications (and making the endpoints for a web service) Matthew Weier O'Phinney has a new tutorial with the next logical step in the series, automatically responding to different content types in your application based on the content-type the client sends.
There has been a lot of talk over the past several years about the difference between performance and scalability. Never mind that the difference between the two will probably not really affect most developers. Never mind that the “difference between performance and scalability” argument is often used when someone’s code performs poorly and their best argument is “Yeah, but my code scales”. Yeah, sure it does.
The Scalable Vector Graphics (SVG) specification provides a way to programmatically generate images using vector paths expressed in XML. This makes it ideal for generating images that need to be scaled to different resolutions without losing fidelity. A common requirement in Web applications is to dynamically generate charts and graphs from numerical data. If these graphs are expressed using SVG, they can be blown up to different sizes without any deterioration in quality, and they are also typically smaller in size as compared to their GIF or JPEG counterparts. With this in mind, this article examines various open source PHP libraries that allow you to add SVG charting capabilities to your PHP application.
Michael Kimsal has a new post today looking at using Doctrine models in a Zend Framework application and how to get them to autoload when you need them with the help of Zend's Zend_Loader_Autoloader.
If you've been using the Zend Framework on a Windows platform (running IIS as the web server) and have been getting some 500 errors and have been left lacking the detail you need on the problem, you should read this new post from Rob Allen about an IIS setting that can help you out.