www.webdeveloper.com
Results 1 to 6 of 6

Thread: [RESOLVED] using autoload to call required class files

  1. #1
    Join Date
    Aug 2004
    Location
    70 klicks above the Do Lung bridge
    Posts
    654

    resolved [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

  2. #2
    Join Date
    Aug 2004
    Location
    70 klicks above the Do Lung bridge
    Posts
    654
    Sorry, it's because I had __autoload() within a class. I moved it outwith the class and it's ok now.

  3. #3
    Join Date
    Aug 2004
    Location
    Ankh-Morpork
    Posts
    18,918
    Quote Originally Posted by Dopple
    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

    eBookworm.us

  4. #4
    Join Date
    Aug 2004
    Location
    70 klicks above the Do Lung bridge
    Posts
    654
    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?

  5. #5
    Join Date
    Aug 2004
    Location
    Ankh-Morpork
    Posts
    18,918
    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

    eBookworm.us

  6. #6
    Join Date
    Aug 2004
    Location
    70 klicks above the Do Lung bridge
    Posts
    654
    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

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles