0

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","user@gmail.com");
$userDAO = new UserDAO();
$userDAO->insertUser($user); ?>

返されるエラーは

PHPキャッチ可能な致命的なエラー:User :: getEmail()に渡される引数1は、Stringのインスタンスである必要があり、指定されていません

4

2 に答える 2

1

PHP には JavaScript の機能とよく似たtypeof機能があり、名前はgettype.

PHP ドキュメント サイトから:

PHP 変数 var の型を返します。型チェックには is_* 関数を使用します。

この機能に関する情報は、こちらにあります。


この関数を使用すると、関数が「文字列」のタイプを返すか、または必要なその他のデータ型を返すかどうかをチェックできます。

は PHP のオブジェクトではないため、その目的のために(string)カスタムを作成しない限り、文字列のインスタンスであるかどうかを確認することはできません。これは非常に簡単です。String Class/Object


gettypePHP docs サイトからの基本的な例:

$data = array(1, 1., NULL, new stdClass, 'foo');

foreach ($data as $value) {
    echo gettype($value), "\n";
}

この例の出力例は次のようになります。

integer
double
NULL
object
string
于 2013-03-09T00:09:38.383 に答える
0

型ヒントが文字列の場合は、型ヒント削除してください。文字列は型ヒントでは使用できません。Int についても同様です。

于 2013-03-09T00:08:22.110 に答える