【问题标题】:Severity: 8192 Message: Methods with the same name as their class will not be constructors in a future version of PHP;严重性:8192 消息:与其类同名的方法在 PHP 的未来版本中将不再是构造函数;
【发布时间】:2017-03-12 05:32:04
【问题描述】:

严重性:8192

消息:与其类同名的方法在 PHP 的未来版本中将不再是构造函数; CI_Pagination 有一个弃用的构造函数

文件名:libraries/Pagination.php

行号: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';

【问题讨论】:

  • 你的问题是?
  • 什么版本的 CodeIgniter?
  • 这个错误是不言自明的。您的旧代码没有遵循现在认为的最佳实践,如果您不更新它,它将不再适用于未来的 PHP 版本。在这种情况下,这是因为应该调用类构造函数 __construct() 而不是类名。

标签: php codeigniter codeigniter-2 codeigniter-3


【解决方案1】:

以前我们使用类名本身来声明类构造函数

Class A
{

public function a(){
}
}

现在你需要改变a()来构造,像这样

public function __construct(){
}

然后错误就会消失。

【讨论】:

    【解决方案2】:

    新版本的 php 会出现这种情况,所以如果你想消除这个错误,请使用 _construct() 代替同名函数。

    所以这里你必须用户

    class CI_Pagination {
     public function  __construct() {
     }
    }
    

    而不是

    class CI_Pagination {
     public function CI_Pagination () {
     }
    }
    

    【讨论】:

      【解决方案3】:
      class NewClass{
      }
      function __construct(){
      } //is used inplace of a function named NewClass for constructor
      

      将与类同名的函数名称更改为 __construct 即可。在 google maps api v3 中遇到这样的问题

      【讨论】:

      • 您能否改进这个解释并提供一些示例源代码?否则,这篇文章似乎没有为问题提供quality answer
      【解决方案4】:

      对于 Codeigniter

      第一步:

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

      下一步(如果第一步不起作用): 打开 application\config\autoload.php 并编辑

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

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

      删除“浏览器”

      【讨论】:

        【解决方案5】:

        Loader.php 414 行,我已经删除了 Ampersent。

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

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

        在 php5.x 中运行良好。

        【讨论】:

        • 这与要求构造函数语法差异的问题有什么关系?
        猜你喜欢
        • 2019-07-07
        • 2018-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多