PHPのisset()、empty()、is_null()の結果の違い

PHPのisset()、empty()、is_null()の結果の違い。
PHP 7.0.27で調べた結果。

評価する値 isset() empty() is_null()
0 true true false
‘0’ true true false
1 true false false
‘1’ true false false
true true false
‘aiueo’ true false false
null false true true
true true false false
false true true false
[] true true false
[‘aiueo’] true false false
‘name’ => ‘tanaka’ true false false
$var(初期化していない変数) false true true

調べたときに使ったコード。

#!/usr/bin/php
<?php

$values = [
  0,         // 数値の0
  '0',       // 文字の0
  1,         // 数値の1
  '1',       // 文字の1
  '',        // 空文字
  'aiueo',   // 文字列
  null,      
  true,      
  false,     
  [],        // 空配列
  ['aiueo'], // 配列
  'name' => 'tanaka',
  $val       // 初期化していない変数
];

echo '|isset|empty|is_null|';

foreach($values as $value) {
  var_export($value);
  echo PHP_EOL;
  echo '|';
  var_export(isset($value));
  echo '|';
  var_export(empty($value));
  echo '|';
  var_export(is_null($value));
  echo '|';
  echo PHP_EOL . PHP_EOL;
}

?>

CakePHP3でPHPUnitのテストをしようとしていたときに出たエラーメッセージ

CakePHP3でPHPUnitのテストをしようとしていたときに出たエラーメッセージ。

・テスト用のデータベースが見つからなかっときのエラーメッセージ
Exception: Unable to insert fixtures for “test class path” test case.
SQLSTATE[HY000] [1049] Unknown database ‘database name’ in [cake php class file path]

原因
‘database name’データベースが存在しないとき

対処
app.phpファイルの’Datasources’ => ‘test’ => ‘database’にテスト用のデータベースを指定する。

・テスト用のデータベースのusernameかpasswordが間違っているときのエラーメッセージ
Exception: Unable to insert fixtures for “test class path” test case.
SQLSTATE[HY000] [1045] Access denied for user ‘user name’@’localhost’ (using password: YES) in [cake php class file path]

原因
ユーザ名かパスワード誤り

対処
app.phpファイルの’Datasources’ => ‘test’ => ‘username’、または’password’にテスト用のデータベースのユーザ名、パスワードを指定する。