Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP已弃用:在PHP的未来版本中,与类同名的方法将不会是构造函数_Php_Mysql_Codeigniter - Fatal编程技术网

PHP已弃用:在PHP的未来版本中,与类同名的方法将不会是构造函数

PHP已弃用:在PHP的未来版本中,与类同名的方法将不会是构造函数,php,mysql,codeigniter,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

我正在用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,现在我的代码不再工作了。我正在查看显示上述错误的错误日志。如何修复我的代码?

您需要使用
\u 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库来处理你的配置,因为在代码中写下来有点混乱。

解决方案:将你的函数名重命名为
\u construct()

解释:在以前版本的
PHP
中,如果
PHP
找不到给定类的
\u construct()
函数,它将根据类的名称搜索旧式构造函数, 但是现在旧式构造函数在
PHP7.0
中已被弃用,并将在将来的版本中删除。在新代码中应始终使用
\u construct()
。 阅读


您可以使用
\uu construct()
重命名
emailcomm()
函数:

而不是

function emailcomm()
或者,您可以在配置文件中使用以下
错误报告

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
error\u reporting(E\u ALL&~E\u NOTICE)
-在
application\u top.php
中删除应用程序文件中的这一行,并将这一行代码放入:

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

由于无法支持最新的php版本,不推荐使用的文件

是否将该函数用作构造函数?如果是这样,请将其重命名为
\u construct
,错误消息是不言自明的。有关更多信息,请阅读。PHP5中也不推荐使用
var
。改为使用来控制从外部对对象属性的访问。请注意,
已弃用
意味着它将在将来被删除(如消息中所述…)。如果我写函数uu construct(){像这样,我怎样才能在这个函数中添加我的函数(emailcomm()),它是一个构造函数,我的意思是你不需要调用这个函数,只要
new emailcomm()
就会自动执行构造函数中的代码(
\uuu construct
)我在类中有4个函数,不需要给函数email(){或函数sendmail{像这样???只有与类同名的函数才会导致问题,其他函数只能工作fineEmailcomm此处类名首字母必填??我可以这样加载库吗?$this->load->library('Emailcomm');如果类中有多个方法
Emailcomm
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);