Why use set_include_path() in PHP and how to autoload classes from different folders?

12,160

Q1: http://php.net/manual/en/ini.core.php#ini.include-path

Q2: As mentioned in the manual PHP iterates over every path and tries to find your file.

Q3: Using the more modern SPL Autoloader functionality you can define as many autoloaders as you like.

Share:
12,160

Related videos on Youtube

JasonDavis
Author by

JasonDavis

PHP/MySQL is my flavor of choice however more recently JavaScript is really becoming something I enjoy developing with! Writing code since 2000' Currently working heavily with SugarCRM + Launching my Web Dev company ApolloWebStudio.com "Premature optimization is not the root of all evil, lack of proper planning is the root of all evil." Twitter: @JasonDavisFL Work: Apollo Web Studio - https://www.apollowebstudio.com Some of my Web Dev skills, self rated... +------------+--------+------+--------------+ | Skill | Expert | Good | Intermediate | +------------+--------+------+--------------+ | PHP | X | | | +------------+--------+------+--------------+ | MySQL | X | | | +------------+--------+------+--------------+ | Javascript | X | | +------------+--------+------+--------------+ | jQuery | X | | +------------+--------+------+--------------+ | CSS+CSS3 | X | | +------------+--------+------+--------------+ | HTML+HTML5 | X | | | +------------+--------+------+--------------+ | Photoshop | | X | | +------------+--------+------+--------------+ | Web Dev | X | | | +------------+--------+------+--------------+ | SugarCRM | X | | | +------------+--------+------+--------------+ | Magento | | X | | +------------+--------+------+--------------+ | WordPress | X | | | +------------+--------+------+--------------+ | SEO | X | | | +------------+--------+------+--------------+ | Marketing | X | | | +------------+--------+------+--------------+ |Social Media| X | | | +------------+--------+------+--------------+

Updated on June 04, 2022

Comments

  • JasonDavis
    JasonDavis almost 2 years

    I have a couple questions about the include path in PHP and including files and/or classes.

    Below is a simple snippet of code where we are setting multiple include paths. I saw this in another project but I am not sure why?

    I have never had to use set_include_path() in any of my projects over the last 5 years or so.

    Q1)
    So what exactly is the purpose of setting an include path? I have always just included the path in my include() call.

    Q2)
    In the example below it sets more then 1 path. How does this work for including files in multiple locations, i'm confused on the purpose or what it does exactly?

    <?php
    // Define App path
    define('APPLICATION_PATH', realpath('../'));
    
    // Build array of 3 different paths
    $paths = array(
        APPLICATION_PATH,
        APPLICATION_PATH . '\com',
        get_include_path()
    );
    
    
    /*
    Result of array above...
    Array
    (
        [0] => E:\Web Server\xampp\htdocs\test
        [1] => E:\Web Server\xampp\htdocs\test\com
        [2] => .;C:\php5\pear
    )
    */
    
    // Set include path from array above
    // http://us3.php.net/manual/en/function.set-include-path.php
    set_include_path(implode(PATH_SEPARATOR, $paths));
    
    ?>
    

    Q3)
    This is slightly different question but still relates to includes. Below is a simple autoload function for classes. I used to have a classes folder and autoload ALL my class files. In my current project, I have a library of classes to autoload like below does, but I then also have another section where I might need to autoload class files from a modules directory.

    So I will need to autoload my library classes located somewhere like this....

    root/includes/library/classes/library_class_files.php

    +++plus+++

    load classes for different modules (account, messages, friends, photos,blogs, forums, etc) located somewhere like this....

    root/modules/forums/modules_class_files.php

    I might not need to loads class files from the 2 different locations, but if I do, how would I go about doing that?

    <?php
    //auto include class files that we need on a per page basis
    function __autoload($class_name){
        include('library/classes/' .$class_name . '.class.php');
    }
    ?>
    

Related