我想使用FILTER_VALIDADE_EMAIL,但它给了我一个警告,说它期望一个字符串。我是PHP的新手,我很难尝试使用OO。如何确保函数返回将是一个字符串的实例?
<?php
Class User {
private $id;
private $login_name;
private $hashed_password;
private $email;
public function __construct($login_name, $email){
$this->login_name = $login_name;
$this->email = $email;
}
public function getLoginName(){
return $this->login_name;
}
public function setLoginName(String $login_name){
$this->login_name = $login_name;
}
public function setEmail(String $email){
$this->email = $email;
}
public function getEmail(String $email){
return (string) $this->email;
}
}?>
<?php
include("../lib/php/User.php");
class UserDAO {
private $user;
public function __construct(){
}
public function getUser(){
return $this->user;
}
public function setUser(User $user){
$this->user = $user;
}
public function insertUser(User $user){
$email = $user->getEmail();
$login_name = $user->getLoginName();
//ver http://www.php.net/manual/en/function.filter-var.php
if(filter_var($email, FILTER_VALIDATE_EMAIL) && empty($login_name)){
echo "valid user";
}
}
}
$user = new User("user","[email protected]");
$userDAO = new UserDAO();
$userDAO->insertUser($user); ?>
返回的错误是
PHP开捕致命错误:参数1传递给用户:: getEmail()必须是,没有给出
看看行号...'公共职能getEmail(字符串$电子邮件)'需要一个参数,我会让它'公共函数getEmail(){' – Wrikken 2013-03-09 00:06:40
请注意[手册]中的注释(http://php.net/manual/en/language.oop5.typehinting。 PHP)虽然:_“类型提示不能使用具有诸如int或string之类的标量类型。 “_所以,除非你有'String'类,否则放弃这些提示。 – Wrikken 2013-03-09 00:08:34