実現したいこと
ソースコードに return false; を入れたい
前提
ソースコードのほかの機能は全部きちんと動いてる
発生している問題・エラーメッセージ
エラーはでない、return false; の false の部分に波線がでる。
どこにエラーが、隠れているのかわからない。
該当のソースコード
php
1<?php 2 3ini_set('display_erros',true); 4require_once '../dbconnect.php'; 5 6class UserLogic 7{ 8 /** 9 * ユーザーを登録する 10 * @param array $userData 11 * @return bool $result 12 */ 13 public static function createUser( $userData ) 14 { 15 $result = false; 16 $sql = 'INSERT INTO users( name, email, password ) 17 VALUES ( ?, ?, ? )'; 18 19 // ユーザデータを配列に入れる 20 $arr = []; 21 $arr[] = $userData['username']; 22 $arr[] = $userData['email']; 23 $arr[] = password_hash( $userData['password'], PASSWORD_DEFAULT ); 24 25 try { 26 $stmt = connect()->prepare( $sql ); 27 $result = $stmt->execute( $arr ); 28 } catch (\Exception $e){ 29 echo $e->getMessage(); 30 return $result; 31 } 32 33 34 35 return $result; 36 } 37 38 39 40 41 42 43 44 /** 45 * ログイン処理 46 * @param string $email 47 * @param string $password 48 * @return bool $result 49 */ 50 public static function login( $email, $password ) 51 { 52 // 結果 53 $result = false; 54 // ユーザーをemailから検索して取得 55 $user = self::getUserByEmail( $email ); 56 57 if( !$user ) 58 { 59 $_SESSION['msg'] = 'emailが一致しません。'; 60 return $result; // false; 61 } 62 63 // パスワードの照会 64 if( password_verify( $password, $user['password'] ) ) 65 { 66 // ログイン成功 67 session_regenerate_id(true); // セッションハイジャック対策 68 $_SESSION['login_user'] = $user; 69 $result = true; 70 return $result; 71 } 72 73 $_SESSION['msg'] = 'パスワードが一致しません。'; 74 return $result; // false; 75 } 76 77 78 79 80 81 82 /** 83 * emailからユーザーを取得 84 * @param string $email 85 * @return array bool $user | false 86 */ 87 public static function getUserByEmail( $email ) 88 { 89 // SQLの準備 90 $sql = 'SELECT * FROM users WHERE email = ?'; 91 92 // email を配列に入れる 93 $arr = []; 94 $arr[] = $email; 95 96 // SQLの実行 97 try { 98 $stmt = connect()->prepare( $sql ); 99 $stmt->execute( $arr ); 100 // SQLの結果を返す 101 $user = $stmt->fetch(); 102 return $user; 103 } catch (\Exception $e){ 104 echo $e->getMessage(); 105 return false; // << false がいけない? 106 107 $user = false; 108 return $user; // << これも $user がいけない 109 } 110 } 111 112} 113
試したこと
$user = false; として、
return $user; としたが、これも波線がでる。
補足情報(FW/ツールのバージョンなど)
OS:Windows10
ブラウザ:クローム
エディタ:VS Code
出た波線にマウスを重ねると詳細が出てきませんか?
マウスを重ねると
Return value of getUserByEmail() is expected to be of type array, bool returned
const bool false
とでたので、
/**
* emailからユーザーを取得
* @param string $email
* @return array bool $user | false
*/
を
/**
* emailからユーザーを取得
* @param string $email
*/
に変更したら 波線はでなくなりました。
ベストアンサーに選びたいので、レスを返していただけないでしょうか?
回答2件
あなたの回答
tips
プレビュー