[RESOLVED] using autoload to call required class files
Hi there. According to http://uk.php.net/__autoload Ithe code below should call class files as requested. This doesn't seem to work if I am calling the classes from within a method. See method2 in example for instance of this.
PHP Code:
<?php
function __autoload($class_name) {
require_once $class_name . '.php';
}
function method2() {
$obj = new MyClass1();
$obj2 = new MyClass2();
}
$obj = new MyClass1();
$obj2 = new MyClass2();
?>
When I access my actual script i get
Fatal error: Class 'User' not found in /home/www/gramac4.freeserverhost.com/Incident.php on line 32
Sorry, it's because I had __autoload() within a class. I moved it outwith the class and it's ok now.
LOL: I made that same mistake when I first read about it. It looks like the other "magic method" names, and I somehow assumed it was supposed to be in a class. Drove me crazy for awhile until the lightbulb went on over my head the third or fourth time I read over it and a couple other web pages.
"Please give us a simple answer, so that we don't have to think, because if we think, we might find answers that don't fit the way we want the world to be."
~ Terry Pratchett in Nation
One question I do have is this. If you have this in your class file, and then call another class which has it, it says you cannot redefine __autoload(). What's the best way of dealing with this? Just not have it in all my class files?
I suppose it depends on your overall application design, but if there's one configuration or controller class that is always used to start off your pages, that might be a good place. If there is more that one place you need to put it, you could wrap it in a if(!function_exists('__autoload')) { . . . } block.
"Please give us a simple answer, so that we don't have to think, because if we think, we might find answers that don't fit the way we want the world to be."
~ Terry Pratchett in Nation
Thanks. I tried just having it in the index.php page which is calling everything through index.php?action=etc blah blah blah but it didn't work. It doesn't matter. I'm just gonna plough through this then release my code for review. It's basically a web based helpdesk application that I'm gonna put on sourceforge so I reckon any major flaws in my programming should come to light if people start looking at the code.
Thanks again
Bookmarks