Dmitry Koterov [2004-06-06 11:53 UTC] Some comments about PHP5's __autoload() usage:
[code]class PEAR_NameScheme_Autoload {
# static void classAutoloader(string $classname)
static function classAutoloader($classname) {
$fname = PEAR_NameScheme::name2path($classname);
if ($f = @fopen($fname, "r", true)) {
fclose($f);
return include_once($fname);
}
return false;
}
}
...
fuction __autoload($cls) {
return PEAR_NameScheme_Autoload::classAutoloader($cls);
}
[/code]
Here $classname is ALWAYS passed in lowercase, so we need to manually search for class file in include_path. PEAR_NameScheme helps. (PEAR_NameScheme_Autoload is not proposed now, it is used here as example.)
Andrey Demenev [2004-06-06 13:09 UTC] At present time, some packages do not respect naming standards you rely
on. Just take a look at these classes and corresponding paths:
SOAP_Base_Object SOAP/Base.php
OLE OLE/OLE.php
Another gotcha:
I have my include_path set to ./:/usr/lib/php. I have db.php and
system.php in current directory. Call to PEAR_NameScheme::name2path('system', true)
will return /current/dir/system.php, while it is supposed to be
/usr/lib/php/System.php. Same for db.
So, I don't see any use in this package. It would not do anything except a mess.
Dmitry Koterov [2004-06-06 13:33 UTC] Andrey, if you call include_once "system.php" in your program, you also load ./system.php, not /usr/local/php/System.php. And even more — your code is not windows-compatible at all (because Windows loads files in case-insensitive mode) and bad because of that.
About coding standarts — first let's vote, and in the case of positive mark I'll convert the package.
David Costa [2004-06-06 13:35 UTC] You do need to comment at least each function for the docbook. This is not optional but a written standard see
http://pear.php.net/manual/en/standards.comments.php
all your function declarations are wrong see
http://pear.php.net/manual/en/standards.funcdef.php
also with no comments at all this is a -1 for me, as per my email:
"I personally think that there is no such a thing that "code clear enough without any comment".
Even if I do
print_r ($this->Object);
I would comment like // debugging the object X "
Please check carefully the sample file http://pear.php.net/manual/en/standards.sample.php and the Manual section on standards.
Thanks
David Costa
Dmitry Koterov [2004-06-06 14:21 UTC] Aargh! Comments are done:
http://php.dklab.ru/PEAR/NameScheme.php
But if this package will be totally discarded, all the commenting work was made in vain.
Louis Mullie [2005-01-01 05:42 UTC] All files are 404. Please correct your links.
Regards,
Louis Mullie
|