Re: Re: [Zend Engine 2] RE: [PHP-DEV] REPOST: Class Autoloading [PATCH]

From: Date: Wed, 12 Jun 2002 18:56:22 +0000
Subject: Re: Re: [Zend Engine 2] RE: [PHP-DEV] REPOST: Class Autoloading [PATCH]
References: 1 2 3  Groups: php.dev 
Request: Send a blank email to php-dev+get-85174@lists.php.net to get a copy of this message
At 06:53 PM 6/12/2002 +0100, Ivan Ristic wrote:
First of all I'd prefer it to call a predefined callback called __autoload() if a class is not found. I do not have a problem with the predefined name. However, unserialize is already using the ini setting for the same thing, and it would be a shame to introduce an inconsistency. Can we obey the ini setting if it is there, and call __autoload() if it isn't (i.e. introduce "__autoload" as a default value for the ini parameter)?
I was thinking __autoload() would be used everywhere including in unserialize. I think standardizing the callback is a good idea.
The second problem is that I don't see it working with nested classes. Is it good enough to only have this work with classes in the global scope? I am not really familiar with nested classes; is it because you don't know the name of the file in which a nested class is located? If so, I would say that trying to accommodate that would be an overkill. In any case, the programmer using nested classes can always write the __autoload() function that will be smart enough.
The problem is that if you have MyClass1::MyClass2::MyClass3 then MyClass3 is looked up in the result of MyClass2 being looked up in MyClass1. If the lookup fails I can't tell __autoload() the path. The only think I could do is possibly pass it the result of MyClass2 being looked up in MyClass1 and "MyClass3". The question is if people will manage to handle this. I think it might be complicated and it might be best not to go in this direction. Andi

« previous php.dev (#85174) next »