【2021/05/27】今日の学習

Javascript【スコープ】

  • グローバルスコープ
    scriptタグ内の最も外側エリア、windowオブジェクト直下
  • ローカルスコープ(関数スコープ/ブロックスコープ)
    文字通り、関数内に存在するスコープとブロック内に存在するスコープ

function saveConfirm ( ) {
  if ( id === null ) {
    const mode = 1;
    const id = $data['id'];
  } else {
    const mode = 2;
    const name = " きよし ";
  }
}

function saveConfirm ( ) { }内は関数スコープ範囲

上記コードは間違っている。
Javascriptでは、if文にはブロックスコープは存在しない。

同一ブロック内でのconst再定義・再代入は❌

constやletは初期値を設置するイメージなのかなと。

CakePHP データ更新 (patchEntity)

// 削除処理
$article = $this->Articles->get( id ); ← idによって更新したいデータをテーブルから取得
$this->Articles->patchEntity ( $article, [
    ' name ' => ' きょろ ',
    ' book_title ' => $newTitle
  ]
$this->Articles->save($article);

また、バリデーションやアソシエーションを指定するときは、

$article = $this->Articles->get( id ); ← idによって更新したいデータをテーブルから取得
$this->Articles->patchEntity ( $article, $this->request->getData( ), [
    ' validate ' => ' editCustom ', ←バリデーション指定
    ' associated ' => [ ' User ' , 
        ' Comments.posts ' => [ ' validate ' => ' signUp '] 
     ]
  ]);
$this->Articles->save($article);

PHPで日付を比較する

関数を使う

  • time( ) ・・・ 現在のUNIXタイムスタンプ
  • date( ) ・・・ フォーマットを指定して日付の文字列
  • strtotime( ) ・・・ 日付表現をUNIXタイムスタンプに変換して返す

    UNIXタイムスタンプとは、1970年1月1日から経過した秒数のことで、変換して年月日などの見やすい表現にもできる。

strtotime(' now '); →///  1583209562

日付の比較をするのであれば、

$time1 = strtotime(' 2021-04-01 ');
$time2 = strtotime(' 2020-04-01 ');
($time1 - $time2) / (60 * 60 * 24);

→/// 365



DateTimeクラスを使う方法

$time = new DateTime( ); インスタンス生成
$time->format(' y-m-d '); フォーマット指定

→/// 2021-04-01



書きながら感じたことメモ
それぞれもっと派生させていくこと、もっと詳しく調べて具体的な使い方や使い分けの意図などまで学習の広さと深さを追うこと。