PHP不推荐使用:与其类同名的方法将不会是PHP的未来版本中的构造函数

时间:2017-11-29 09:54:01

标签: php mysql codeigniter

在codeigniter中开发应用程序,在发送时收到以下错误 邮件白色注册。

  

PHP已弃用:与其类同名的方法不会   PHP未来版本中的构造函数; emailcomm已被弃用   构造函数   第3行的/var/www/html/portal/application/libraries/emailcomm.php

我的图书馆文件如下 的 emailcomm.php

class emailcomm
{

    var $to;
    var $subject;
    var $message;
    var $from='From:';    

    function emailcomm()
    {
        $this->CI=&get_instance();   
        ini_set("SMTP","ssl://smtp.gmail.com");
            ini_set("smtp_port","465");

            $config['protocol'] = 'smtp';
            $config['smtp_host'] = 'smtp.gmail.com';
            $config['smtp_port'] = '465';
            $config['_smtp_auth']=TRUE;
            $config['smtp_user'] = 'contact-us@webtech.com';
            $config['smtp_pass'] = 'Web8*98*2015'; 
            $config['smtp_timeout'] = '60';
            $config['charset'] = 'utf-8';
            $config['wordwrap'] = TRUE;
            $config['mailtype'] = "html";

        $this->CI->load->library('email',$config); 

         $this->CI->email->initialize($config); 
    }
}

最近升级服务器到php7。在升级它工作之前,现在它不工作。现在我正在检查上面显示错误的错误日志。我可以在这个代码中更改?谁能帮帮我吗 。谢谢

4 个答案:

答案 0 :(得分:6)

在以前版本的PHP中,如果PHP找不到给定类的__construct()函数,它将按类的名称搜索旧式构造函数, 但现在旧样式构造函数在PHP 7.0 DEPRECATED ,并将在以后的版本中删除。您应该始终在新代码中使用__construct()。 阅读php manual

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

答案 1 :(得分:2)

您需要使用__construct而不是与您的班级同名的函数:

class Emailcomm
{

var $to;
var $subject;
var $message;
var $from='From:';    

function __construct()
{
    $this->CI=&get_instance();   
    ini_set("SMTP","ssl://smtp.gmail.com");
        ini_set("smtp_port","465");

        $config['protocol'] = 'smtp';
        $config['smtp_host'] = 'smtp.gmail.com';
        $config['smtp_port'] = '465';
        $config['_smtp_auth']=TRUE;
        $config['smtp_user'] = 'contact-us@webtech.com';
        $config['smtp_pass'] = 'Web8*98*2015'; 
        $config['smtp_timeout'] = '60';
        $config['charset'] = 'utf-8';
        $config['wordwrap'] = TRUE;
        $config['mailtype'] = "html";

    $this->CI->load->library('email',$config); 

     $this->CI->email->initialize($config); 
}
}

仅用于编码标准,使用CamelCase作为您的班级名称,以大写字母开头。

还有一件事,恕我直言,您可能需要使用 DotEnv 库来处理您的配置,因为在代码中写下来有点混乱。

答案 2 :(得分:2)

更改此

函数emailcomm()

函数__construct()

答案 3 :(得分:0)

error_reporting(E_ALL & ~E_NOTICE);-在application_top.php中的应用程序文件中删除此行,并将以下代码行:

ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED); 

因为不支持不推荐的最新PHP版本