Alan Knowles [2004-04-27 09:23 UTC] you can add www.php.net/is_a (there's an example on the page)
having chatted on IRC, it may just be easier not to have any 'loader', just say the usage is:
if (!function_exists('file_get_contents')) {
require_once 'PHP/Compact/Funct/file_get_contents.php';
}
Although not in the true spirit of PEAR (eg. package of classes) - I think it's a good idea..
Davey Shafik [2004-04-27 09:42 UTC] This should be called PHP_Compat, because it is possible that we may implement some classes and constants and such too....
I think this is a good idea, I did once propose a package called BackPort which you may want to take a look at... its overkill for this, I would imagine
- Davey
Ian Eure [2004-04-27 12:27 UTC] I like this idea a lot, though I agree with Davey's points.
It would be nice to see some sort of additional layer built on top of this with function profiles of different PHP versions - so you could e.g. PHP_Compat_Func::requirePhpVersion(4.2.3); and have it bump you up to a 4.2.3 compatibility level. Consider this a wishlist item, I'd be quite happy just to see a central place for compatibility hacks.
I have cleaned up pg_(un)escape_bytea() functions (originally from a contributor to the PHP manual) which could be added.
Aidan Lister [2004-04-27 13:52 UTC] Ian, surely this would result in loading a heap of un-needed functions. (Although I do love the idea).
Perhaps we should make a sub section for Compatability, we have PHP_CompatInfo - perhaps this should be PHP_Compat_Info, in line with PHP_Compat_Func
I'm just throwing ideas around, feel free to shut them down!
Stig Bakken [2004-04-27 19:27 UTC] Just make sure you wrap the function definitions in "if (!function_exists...)", because some packages already provide file_get_contents() etc.
IMHO, compatibility functions should be one-function-per-file and installed in $PHP_DIR/_compat/function/function_name.php. Usage would be:
require_once "_compat/function/file_get_contents.php";
or
if (!function_exists("file_get_contents")) {
include_once "_compat/function/file_get_contents.php";
}
Davey Shafik [2004-04-29 15:22 UTC] I just had a thought,
If we do something like:
class PHP_Compatibility {
function require($function,$type = 'function') {
if ($type == 'function') {
// this allows us to provide compatibility classed too
if (!function_exists($function)) {
require_once 'PHP/Compatiblity/functions/' .$function. '.php';
}
}
}
}
And the user just does:
PHP_Compatiblity::require('glob'); for example
its *much* better than them having to do the function_exists tests and such themselves over and over....
- Davey
Aidan Lister [2004-04-30 00:03 UTC] I'm not sure I agree Davey,
If I was using one of the functions in my package, I'd find it easier to just include the file.
However, your method is a lot more extensible, and keeps PEAR a class library.
Aidan Lister [2004-05-02 06:03 UTC] I've done a rough version of the class (see links), any comments before I call-for-votes?
Aidan Lister [2004-05-08 06:54 UTC] Any more comments before I call for votes?
If the name is fine, I'll commit to CVS
|