PHP已弃用:在PHP的未来版本中,与类同名的方法将不会是构造函数
我正在用CodeIgniter开发一个应用程序,在注册时发送邮件时出错 PHP已弃用:将不会使用与其类同名的方法 PHP未来版本中的构造函数;emailcomm有一个已弃用的 中的构造函数 /第3行的var/www/html/portal/application/libraries/emailcomm.php 我的库文件在下面 emailcomm.phpPHP已弃用:在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
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);