FuelPHP v1.4发布啦



Important fixes or changes

  • fixed DB class error about missing PDO::MYSQL_ATTR_COMPRESS constant
  • you are now REQUIRED to set a correct php timezone. The FuelPHP default value of 'UTC' has been removed, as it would cause date conversion errors that are difficult to find. Most notable, you will have issues with session and cookie expiration.
  • ALL default configuration has been moved to core/config. Only use the app/config folder for application specific overrides of default values, or for custom configuration.

Backward compability notes

This release features a new Pagination class that isn't completely backward compatible with the API from previous versions. We have put a lot of effort in emulating the old behaviour of the class, but as PHP doesn't support magic getters/setters for static properties, you'll have to replace those in your code manually when you upgrade to v1.4. The required changes can be found in thedocumentation.

Removed code (because it was deprecated in v1.3)

  • Removed "auto_encode_view_data" config key, deprecated in v1.2
  • Fuel: Removed Fuel::add_module(), deprecated in v1.2. Use Module::load() instead.
  • Fuel: Removed Fuel::module_exists(), deprecated in v1.2. Use Module::exists() instead.
  • Theme: Removed $theme->asset(), deprecated in v1.2. Use $theme->asset_path() instead.
  • Theme: Removed $theme->info(), deprecated in v1.2. Use $theme->get_info() instead.
  • Theme: Removed $theme->all_info(), deprecated in v1.2. Use $theme->load_info() instead.
  • Orm\Model : Removed $model->values(), deprecated in v1.3. Use $model->set() instead.

Code deprecated in v1.4 (to be removed in the next release)

  • RedisRedis::instance() will no longer create new objects. Use Redis::forge() for that.
  • Orm\Model: Using the find() method without parameters is deprecated. Use query() instead.

Security related

  • tbd

System changes

  • Config and Lang loading with forced reload now bypasses the file cache and always reload.
  • Controller_Hybrid: Is now fully hybrid, with support for get/post methods, and no longer restricted to ajax calls when returning json.
  • Fieldset, Form and Validation now have full support for input tags using array notation.
  • Input and Route now support a new configuration key routing.strip_extension to control wether or not the extension must be stripped from the URI.
  • Lang: fixed double loading of language files when the active and fallback language are the same.
  • Pagination: Class completely rewritten, now with instance and template support.
  • Uri: Has improved extension processing, and now handles dots in URI parameters correctly.
  • The active language is now a per-request setting instead of a global setting. Changing it in an HMVC request will no longer affect the language setting of the parent request.

Specific classes

  • Arr: New filter_suffixed() method to filter an array on key suffix.
  • Arr: New remove_suffixed() method to remove keys from an array based on key suffix.
  • Asset: DOCROOT can now be specified as the asset root path (by using "").
  • Controller_Rest: Now allows you to specify a basenode when returning XML.
  • DB: select() now has an option to reset previous selects.
  • DB: Added error_info() to return information about the last error that occurred.
  • DB: join() can now be used without conditions for a full join.
  • DB: group_by() now supports passing an array of columns.
  • Fieldset: New enable()/disable() methods to control which fields will be build.
  • Fieldset: New get_name() method allows retrieval of the fieldset object name.
  • Fieldset: set_config() and get_config() now support dot-notation for accessing config values.
  • Finder: Fixed PHP notices after removing a finder search path.
  • Format: Added JSONP support.
  • FTP: Now supports a timeout on the connect.
  • Image: Fixed forcing an image extension when using ImageMagick.
  • Inflector: friendly_title() now has the option not to filter non-latin characters.
  • Input: Fixed skipping IP validation when reserved_IP ranges were excluded.
  • Lang: Now supports multiple languages concurrently. Loaded files for a given language code will no longer be overwritten when you switch the active language.
  • Lang: load() method now also returns the loaded group on subsequent calls.
  • Markdown: Has been upgraded to v1.2.5.
  • Migrate: Fixed PHP notice when a non-existent package was specified.
  • Migrate: An up or down migration can now be rejected by returning false.
  • Migrate: Added support for processing out-of-sequence migrations.
  • Redis: Now has a forge() method to create multiple instances.
  • Redis: Added support for Redis authentication.
  • Response: If the body contains an array it will be converted to a string representation before outputting it.
  • Response: redirect() now supports wildcards in the URL.
  • Router: Re-introduced support for routing using URI extensions.
  • Session: Fixed passing a session cookie via POST to allow access to the session by flash objects.
  • Session: Added support for dot_notation to get_flash().
  • Session: Fixed flash variables not being stored when retrieved in the same request.
  • Session: Fixed session key data not available for new sessions until after a page reload.
  • Str: Now has an is_xml() method.
  • Theme: Is now module aware, and can prefix view paths with the current module name.
  • Upload: process() now throws an exception if $_FILES does not exist (due to missing form enctype)
  • Uri: New segment_replace() method allows for replacement of wildcards by current segments.
  • View: get() now returns all variables set when no variable name is given.
  • Viewmodel: get() now returns all variables set when no variable name is given.


  • Auth: No changes.
  • Email: Added a Noop dummy driver, which can be used to prevent test emails going out.
  • Oil: Added "generate TASK" option to generate task classes.
  • Oil: Added support for Viewmodels to scaffolding.
  • Oil: Fixed errors on false results in the console.
  • Oil: Added support for "drop_{field}_from_{table}" to migrations.
  • Oil: oil -v now also displays the current environment setting.
  • Oil: New --singular option to force the use of singular names in scaffolding.
  • Orm: Fixed PK overwrite issue when PK is not auto_increment.
  • Orm: Observer_Slug now supports the before_update trigger.
  • Orm: Added support for filter conditions to the model through the $_conditions property.
  • Orm: Fixed incorrect sequence of multiple order_by() clauses.
  • Orm: Implemented full support for partial selects.
  • Orm: Fixed circular reference problem when using to_array() with included relations that self reference.
  • Orm: get_one now uses rows_limit() instead of limit() when set.
  • Orm: Model objects now support custom properties
  • Orm: Added support for custom properties to to_array()
  • Orm: is_changed() now deals better with null values.
  • Orm: Introduced support for EAV containers (emulation of EAV via one or more related tables)
  • Orm: get_diff() now deals better with unset relations.
  • Orm: Relations of new objects can now be fetched if the FK is known.
  • Orm: Added support for group_by().
  • Parser: forge() functionality now equals that of View::forge().
  • Parser: Markdown has been upgraded to v1.2.5.