Symfony 2.0 vs Agile Toolkit 3.8 – part 5 – Architecture and beyond

Wednesday, May 19th, 2010|Misc|by Romans

This post continues comparison of Agile Toolkit and Symfony 2.0. This post is based on features described in Quick tour – page 5

Directory structure

I have already reviewed directory structure in my first post. Probably I should have mentioned that My_Super_Class is mapped into {php}/My/Super/Class.php by auto-include.

Web directory

We leave it up to developer to decide if they want to keep everything inside webroot or outside. Framework supports both approaches. When you define locations, you also have to specify basePath. If certain location is outside the webroot, but you need to make some parts available (such as templates), you will have to provide a valid basePath. We ourselves tend to use .htaccess to block access to locations where user shouldn’t go.

In your main.php file you only include a single file ‘amodules3/loader.php’. All the other includes are done by the Agile Toolkit.

Interactions

Agile Toolkit properly determines 3 components of the URL:

  • $this->api->pm->base_url = ‘http://yoursitte.com:81′
  • $this->api->pm->base_path = ‘/admin/’
  • $this->api->pm->page (or api->page) = ‘user/add’

This pretty much gets inputted into $this->api->pathfinder->base_location. Additionally you have $this->api->pathfinder->atk_location which describes resources provided by Agile Toolkit.

Some function equivalents:

  • addLocation()
  • readConfig() – is called by API, reads file ‘config.php’. You can access it through $this->api->getConfig(‘db/dsn’,$optional_default_value);

Vendors

Currently there are no support for vendors, but we are looking to have it by Agile Toolkit 4.

Cache and Logs

Oddly enough – Agile Toolkit 4 never needed a caching system. The way it is it works incredibly fast. Therefore there are no native caching available.

By default APIs do not provide any logs. However class ‘Logger’ severely improves collection of error information, debug-display on-screen and writes pretty log files with 3 severity levels. There is also support for logging into database and other extensions are possible.

Command line

Agile Toolkit provides a specific API – ApiCLI which is a bare-bones for you to use in command-line or cron.

This is only a start.

Those 5 posts were comparing the frameworks of Agile Toolkit and Symfony. Agile Toolkit have it’s pros and cons but overall it’s have a very powerful framework. But it’s not framework alone. It’s a toolkit.

That means – it’s only a foundation for what Agile Toolkit really offers. Agile Toolkit comes bundled with many things such as:

  • default templates you can use right away and skin with jQuery UI CSS framework
  • lister – show your blog posts, news, history
  • grid – structured tables with addons to sort, edit, order, paginate
  • form – standard and forms with custom layout, validators, multiple error reporting options
  • wizards – sequental pages
  • tabs – jquery UI native
  • js integration – transparent function calls, json arguments
  • instant support of any 3rd party jquery plugins
  • js – a number of js-widgets and kits included
    • system level, extended ajax: atk4-start.js
    • atk4_loader – universal loadable region widget, native atk4 integration with dynamic JS parsing and JS/CSS inclusion on demand
    • atk4_form – enhances form to use ajax submission, error display, field reloading and more
    • atk4_grid – enhance grids to be clickable, reloadable fields
    • akt4_checkbox – places checkboxes on default grid and pontenially uses selectable(), binds selectables with form field
    • atk4_expander – enhances grid to contain expanders (accordions) buttons
    • atk4_menu – support for ajax page loading, URL hash
    • combo box / autocomplete support
    • univ – extensible utility library, handles dialogs(frames), ajax functions, field enhancements, growl-style notifications
  • database versioning control
  • relational database abstraction (fields, types, related entities)
  • cloud (amazon) integration (limited but planned to expand)
  • framework-level security practices
  • portal features, cms
  • object-to-object relational model support
  • file uploads

All of the above components are bundled and properly integrated with each-other and into framework.

3 Comments

point
Posted May 19, 20109:51 am

> database versioning control

What did you mean ? Could you give more info on this ?

romaninsh
Posted May 20, 201012:51 am

VersionControl

it executes series of db upgrade scripts. See it here: http://firefly.activestate.com/romaninsh/atk4/browser/trunk/lib/VersionControl.php

Randolph Fink
Posted May 27, 201011:43 am

Incredibly great writing! Really!