Severity: 8192 Message: Methods with the same name

2019-02-25 06:36发布

问题:

Severity: 8192

Message: Methods with the same name as their class will not be constructors in a future version of PHP; CI_Pagination has a deprecated constructor

Filename: libraries/Pagination.php

Line Number: 27

class CI_Pagination {

    var $base_url           = ''; // The page we are linking to
    var $total_rows         = ''; // Total number of items (database results)
    var $per_page           = 10; // Max number of items you want shown per page
    var $num_links          =  2; // Number of "digit" links to show before/after the currently viewed page
    var $cur_page           =  0; // The current page being viewed
    var $first_link         = '‹ First';
    var $next_link          = '>';
    var $prev_link          = '<';
    var $last_link          = 'Last ›';
    var $uri_segment        = 3;
    var $full_tag_open      = '';
    var $full_tag_close     = '';
    var $first_tag_open     = '';
    var $first_tag_close    = ' ';
    var $last_tag_open      = ' ';
    var $last_tag_close     = '';
    var $cur_tag_open       = ' ';
    var $cur_tag_close      = '';
    var $next_tag_open      = ' ';
    var $next_tag_close     = ' ';
    var $prev_tag_open      = ' ';
    var $prev_tag_close     = '';
    var $num_tag_open       = ' ';
    var $num_tag_close      = '';
    var $page_query_string  = FALSE;
    var $query_string_segment = 'per_page';

回答1:

Previously we used to declare class constructor using the class name itself

Class A
{

public function a(){
}
}

Now you need to change a() to construct, like this

public function __construct(){
}

And the error will disappear.



回答2:

It is occur with new version of php ,So if you want to remove this error please use _construct() instead of same class name function.

So here you have to user

class CI_Pagination {
 public function  __construct() {
 }
}

instead of

class CI_Pagination {
 public function CI_Pagination () {
 }
}


回答3:

class NewClass{
}
function __construct(){
} //is used inplace of a function named NewClass for constructor

change function name having same name as class to __construct and it will work. Faced such problem in google maps api v3



回答4:

For Codeigniter

First Step:

class MyClass{
 function __construct(){
    // copy your old constructor function code here
 }
}

Next Step(if first step not working): Open application\config\autoload.php and edit

$autoload['libraries'] = array('database', 'session','browser');

to

$autoload['libraries'] = array('database', 'session');

remove 'browser'



回答5:

Loader.php 414 line, I have removed Ampersent.

$CI->dbutil =& new $class();

to

$CI->dbutil = new $class();

It works fine in php5.x.