Release notes
Version 1.5.0a
This version does not include the examples. It is meant to run on both php4 and php5. If you retieved this page
from a http server that supports PHP, Click here to try it out.
This version does not include pntUnit.
What's new
Since 1.5.0
- removed global $cfgCommonClassDirs from classes/pnt/generalfunctions.php because it is not safe with register_globals ON
Since 1.4.0
- adapted to PHP 5.3
- classes subdirs can be placed on arbitrary location while their content can still be included with includeClass
(you need to set global variable $cfgCommonClassDirs to use this).
- selection report page now shows number of unique values for columns with non-numeric values
- fieldmapping mapping debugged (again), db.query.PntSqlJoinFilter now works with both polymorphic persistency
and column mapping
- quite some refactoring and small changes, see changes.txt.
Remarks for upgrading existing applications
From 1.5.0: replace classes/pnt/generalfunctions.php
From 1.4.0:
- To prepare for using paths in EditDetailsPage for editing values of referred objects, PntObjectNavigartion::getSettedProp
has been modified and referring methods have been adapted
- PntSqlJoinFilter::addJoinTableAndConditionByTableAlias uses different alias, this mayu break code that makes
hardcoded use of the old aliases
Portablility
This version is meant to run on both php4 and php5, the last with zend.ze1_compatibility_mode = On as well as
Off. On php5 the code will not be free of E_STRICT notifications. PntAssert however is no longer compatible with
php4.
If you want your application code to be portable too it has to follow certain rules:
- only use php4 syntax, keywords and functions,
- allways assign or pass objects by explicit variable reference (&),
- use the functions from classes/pnt/php4Functions.php and php5Functions.php where applicable,
- don't change the zend.ze1 compatibilty mode after php5Functions.php has been included, it will not dynamically
adapt to such a change.
Like phpPeanuts, code that follows these rules should be able to run with equal behavior without modification
on both platforms, and on php5 with both zend.ze1 compatibility settings. However, there may still be differences
in areas of php that phpPeanuts does not use. This may require some further wrapper functions to be added.
For object oriented application frameworks like phpPeanuts php5 is a much better platform than php4. However,
some people are still using php4 as their deployment platform because some website hosting accounts do not yet
support php5. PhpPeanuts versions 1.x will be compatible with php4. Next major version of phpPeanuts will be for
php5 only.
Known bugs and limitations
- With php 4.4 and 5.2.0 (documentation suggests the same will happen with 5.1) phpPeanuts still triggers some
notifications "Only variable references should be returned by reference": When a function that returns
a PntError it is not first put into a variable. As this kind of error handling is not perfornance-critical we do
not consider these notifications enough of a problem to delay this release.
- Reference Anomalies: Before the
generic workaround was applied (introduced in 1.1 beta 1, released dd 16-11-2004), use of references by phpPeanuts
occasionally made uninitialized php variables or associations arbitrarily hold values that seemed to come from
another variable. This rarily happened and since the generic workaround it did not happen again until the changes
where made to get rid of reference notifications. Do not use phpPeanuts for mission critical applications.
- Though the framework has DAO classes that are successfully used as the database abstraction layer with MySQL
and SqLite, the use with other databases may require some additional refactoring. Please inform us about eventual
problems and solutions with the use of other databases. (Known: Oracle versions below 9 do not support standard
explicit JOIN syntax, but producing JOIN instuctions is not delegated to DAO objects and can not be easily refactored
to do so.)
- produces E_STRICT notifications on php5 (see under portability).