alienHRNの訓練日記

IT業界初心者で勉強中。

20201105授業メモ

授業内容

 

授業メモ

wordpress snipet
→コードの予測変換機能
これは必須


PHPでオブジェクトを使用する方法
◇クラスを作成して利用
class クラス名(頭文字大文字)
 //スタティックプロパティ:アクセス修飾子 プロパティ名
public static プロパティ名
protected static プロパティ名
private static プロパティ名

//メソッド:アクセス修飾子 メソッド定義
public static function メソッド名(引数){
//メソッド処理

return 戻り値;
}
}

◇クラスを利用する場合はインスタンス化する
$変数=new クラス名();

インスタンス内のプロパティ利用
$変数(インスタンス)->プロパティ名;

インスタンス内のメソッド利用
$変数(インスタンス)->メソッド名(引数);

◇クラスのプロパティを利用
$変数(インスタンス)::プロパティ名;


〇テンプレートタグの違い
DBから必要なデータを取得して利用する

1.the_〇〇()
・DBから値を取得して出力する
・echo不要
・ものによってはHTMLタグ込みで出力してくれる
但しタグのカスタマイズがしづらい
サニタイズをして出力してくれている

2.get_the_〇〇()
・DBから値を取得する
・echoしないと出力されない
・出力時にサニタイズしなければならない
サニタイズ・・・XSS対策(h関数をかける)


----------------------以下--------------------------------------------------
C:\Users\ica\Desktop\xampp\htdocs\mdn01\wp-content\themes\codelearningtheme
のindex.php

<?php get_header();  //この命令についてはP.158をご覧ください。
?>


<?php
// ■オブジェクトとは
echo '<h1>最初のコード</h1>';
function return_price()
{
  global $date;
  // globalキーワード付きで変数名を指定するとその変数はグローバルスコープ(今回は関数外)
  // にある変数を参照しにいくようになる。

  if ($date >= 20191001) {
    $price = 1240;
  } else {
    $price = 1200;
  }

  return $price;
}

$date = date('Ymd');
// date関数:日付の書式を取得
// Y:4桁年
// m:2桁月
// d:2桁日
//2020年11月5日の場合は「'20201105'」
$price = return_price();
echo $price;

echo '<h1>2番目のコード</h1>';
// プログラムの世界には値や処理をまとめて
// オブジェクトとして管理するという概念がある
// このオブジェクトをPHPで実装するときは「class」を使用する。

// 「class」キーワードを使ってクラスを作成
// クラス名は命名規則に従っていれば好きにつけて良い
// 但し暗黙のルールとしてクラス名は頭文字大文字

class Price
{
  // クラス内の変数は「プロパティ」
  protected $price;
  public $date;
  // アクセス修飾子:参照できる範囲
  // public:どこからでも参照可能
  // protected:同一クラス内と継承クラスから参照可能
  // private:同一クラス内のみ

  // クラス内の処理は「メソッド」
  public function return_price()
  {
    if ($this->date >= 20191001) {
      // $this:自分自身(Priceインスタンス
      $this->price = 1240;
    } else {
      $this->price = 1200;
    }
    return $this->price;
  }
}

$price = new Price;
// Priceクラスのインスタンス(クラスのコピー)を生成
// Price():コンストラクタの呼出し
// ※教科書は()を省略→()は必ず書いたほうが良い
// 出来上がったインスタンスを変数priceに代入



$price->date = date('Ymd');
// 左辺:$priceと紐づけられているインスタンス内のdateプロパティ
// 右辺:本日の日付文字列を取得
// まとめ:インスタンス内のdateプロパティに本日の日付文字列を代入

echo $price->return_price();
// インスタンス内のreturn_priceメソッドの呼出し
// 返り値の価格をechoで出力

// $price->price = 1000;
// protectedされた変数はクラス外から利用できない
// ※クラス外から

?>


<?php
// 定数の定義
// define('定数名', 値);
// define('NAME', 'サイトウ');
// echo NAME . '氏';
// 再代入はエラー

$img = wp_get_attachment_image_src(151);

// echo '<pre>';
// var_dump($img);
// echo '</pre>';

// WordPressでは連想配列をレコード取得の条件によく使う
// 部屋の名前が「条件名」
// 部屋の値が「条件に対する値」
// posts_per_pageは「何件分取得?」
// category_nameは「何カテゴリー?」
// orderbyは「並べ替えどうする?」

// まとめ
// 変数argsには連想配列でレコード取得の条件を作成

$args = [
  'posts_per_page' => 5,
  'category_name' => 'bookreview',
  'orderby' => 'date',
];

// get_postsはDBからページ情報を取得する関数
// 引数:連想配列で指定した条件
//



$posts_array = get_posts($args);

// echo '<pre>';
// var_dump($posts_array);
// echo '</pre>';

?>

<?php
// WordPressの世界で「ループ」といったときは主にDBから取得したページの情報を
// ページの数ぶん繰り返し処理することをいう

// ■have_posts()
// DBから取得したデータのポインタの位置にレコードがあるかを真偽値で示す。
// 戻り値:レコードがある「true」ない「false」
// 最後まで進んで「false」を返す際にポインタ位置を先頭に戻す。

// ■the_post()
// ポインタのレコード(ページ取得)をWordPressが用意している$postにセットするポインタ位置
を次に移動

// WordPress内で暗黙的に用意されている変数が幾つかあるので注意
// 例:$post等

while (have_posts()) : the_post();
  echo '<pre>';
  var_dump($posts);
  echo '</pre>';


?>

  <h1><?php the_title(); ?></h1>
  <p><?php the_date(); ?></p>
  <?php the_content(); ?>

<?php endwhile?>




<?php get_footer(); //この命令についてはP.169をご覧ください。
?>



------------------以下index.phpを削除して修正したもの-----------------------------

<?php get_header();  //この命令についてはP.158をご覧ください。
?>

<?php
$postdata = get_post(1);
// var_dump($postdata);
echo $postdata->post_title;
echo '<br>';
echo $postdata->post_date;
echo '<br>';
echo $postdata->post_name;
echo '<br>';
echo $postdata->comment_count;
echo '<br>';

echo '<h1>ここからカテゴリについて</h1>';
$cat = get_the_category(1);
// echo '<pre>';
// var_dump($cat);
// echo '</pre>';

echo $cat[0]->cat_name;

echo '<h1>ここから型変換について</h1>';
$val = 10;
var_dump($val);
var_dump*1 : the_post();
  echo '<pre>';
  var_dump($posts);
  echo '</pre>';
?>

  <h1><?php the_title(); ?></h1>
  <p><?php the_date(); ?></p>
  <?php the_content(); ?>

<?php endwhile?>




<?php get_footer(); //この命令についてはP.169をご覧ください。
?>

*1:string)$val);


// 「(データ型)値」と記述する事で明示的に型変換することができる
// 明示的型変換を「キャスト」と呼ぶ

echo '<h1>テンプレートタグ</h1>';
echo '<h2>the_〇〇</h2>';
the_category();

echo '<h2>get?_the_〇〇</h2>';
// $cat=get_the_

echo '<h1>ここからwhile文</h1>';
while (have_posts(