Jump to content

Coding update


EllisPHPforum

Recommended Posts

First, I am NOT a PHP coder, but I have to sort this out for my website.

Briefly, the PHP was updated to Version 8 and error logs have specified two fatal errors.

Quote

__autoload() is no longer supported, use spl_autoload_register() instead

So I did this:

if ( ! function_exists('__autoload')) {
    AutoLoader::addFolder(array(APP_PATH.DIRECTORY_SEPARATOR.'models',
                                APP_PATH.DIRECTORY_SEPARATOR.'controllers'));
    function spl__autoload__register($class_name)  
    {
        AutoLoader::load($class_name);
    }
}

 

and

Quote

Array and string offset access syntax with curly braces is no longer supported

So I changed $param{0} to  $param(0) line 8

function get_url()
{
    $params = func_get_args();
    if (count($params) === 1) return BASE_URL . $params[0];
    
    $url = '';
    foreach ($params as $param) {
        if (strlen($param)) {
            $url .= $param(0) == '#' ? $param: '/'. $param;
        }
    }
    return BASE_URL . preg_replace('/^\/(.*)$/', '$1', $url);
}

The website is still not working. Particularly, the get_URL function returns Page Not Found

Can anyone see what's wrong?

Thank you.

Link to comment
Share on other sites

6 hours ago, EllisPHPforum said:

So I changed $param{0} to  $param(0) line 8

Arrays are accessed using square-brackets, not parenthesis.  That change should have been to

$param[0]

 

7 hours ago, EllisPHPforum said:

So I did this:

You don't name the function spl_autoload_register, that is a predefined function that accepts a callback.  I'm assuming your original code looked like this:

if ( ! function_exists('__autoload')) {
    AutoLoader::addFolder(array(APP_PATH.DIRECTORY_SEPARATOR.'models',
                                APP_PATH.DIRECTORY_SEPARATOR.'controllers'));
    function __autoload($class_name)  
    {
        AutoLoader::load($class_name);
    }
}

To update it, the easiest thing to do would be to rename the __autoload function to something unique for your application, then call the built-in spl_autoload_register function with that new name.  You can also remove the if statement as it's no longer needed.

AutoLoader::addFolder(array(APP_PATH.DIRECTORY_SEPARATOR.'models',
                            APP_PATH.DIRECTORY_SEPARATOR.'controllers'));
function my_app__autoload($class_name)  
{
    AutoLoader::load($class_name);
}

spl_autoload_register('my_app__autoload');

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.