PHPの学びをまとめる

<p>PHPを学び始めたので、まずはオンライン講座で学習したことをまとめます。<br>
講座では、Wordpressでブログを作りながらPHPを学ぶという流れでした。</p>
※まだ未完成ですが、中々完成しないのでとりあえず投稿だけしておきます。随時更新予定です。
<h2>目次</h2>
<ul><li>カリキュラムで学んだこと一覧</li>
<li>SLスタジオで学習して補充した知識</li>
<li></li>
<li>課題</li></ul>
<!--
　➀一覧-->
<h2>カリキュラムで学んだこと一覧</h2>
<p>あとで参照した時に索引のように使えるように、参考サイトと一緒に一覧にします。</p>
<ul><li>Mac：ターミナル、Windows：コマンドプロンプトについて<br>
<a></a></li>
<li>Mac：ターミナル、Windows：コマンドプロンプトの基本的なコマンド<br>
<a></a></li>
<li>Mac：ターミナル、Windows：コマンドプロンプトでPHPファイルを実行する<br>
<a></a></li>
<li>PHPの記述方法<br>
<a>https://www.modis.co.jp/candidate/insight/column_40</a></li>
<li>PHP.iniファイルの設定<br>
<a>https://www.tairaengineer-note.com/how-to-check-php-ini/</a></li>
<li>変数について
　<ul><li>変数とは
　<a></a></li>
　<li>変数に名前を付けるルール<br>
　<a></a></li>
  <li>変数の代入<br>
　<a></a></li>
　<li>データ型<br>
　<a></a></li>
  <li>スカラー型：論理型、整数型、浮動小数点型、文字列型<br>
　<a></a></li></ul>
</li>
<li>演算子の使い方：代数演算子、加算子/減算子、文字列演算子、代入演算子、比較演算子<br>
<a></a></li>
<li>配列<br>
  <ul><li>キーや要素の数を取得する<br>
　<a></a></li>
  <li>配列を追加する<br>
　<a></a></li>
  <li>配列の値を変更する<br>
　<a></a></li>
  <li>配列の入れ替え<br>
　<a></a></li>
  <li>配列のキーを削除する<br>
　<a></a></li></ul>
</li>
<li>while文とは
　<ul><li>条件式の書き方<br>
　<a></a></li>
　<li>while文におけるbreake<br>
　<a></a></li>
　<li>while文におけるcontinue<br>
　<a></a></li>
　<li>while文の無限ループ<br>
　<a></a></li></ul>
</li>
<li>for文とは
<ul><li>条件式の書き方<br>
　<a></a></li>
  <li>for文の入れ子で高い層にしたループ<br>
　<a></a></li>
　<li>for文におけるbreakとcontinue<br>
　<a></a></li></ul>
</li>
<li>条件分岐とは
　<ul><li>if文の使い方<br>
　<a></a></li>
  <li>if文におけるelse、elseifの使い方<br>
　<a></a></li></ul>
</li>
<li>論理演算子：and、or<br>
<a></a></li>
<li>連想配列とは
　<ul><li>連想配列の初期化<br>
　<a></a></li>
  <li>連想配列の追加、結合<br>
　<a></a></li></ul>
</li>
<li>wordpressブログ作成とPHP
<ul><li>テーマの変更方法<br>
<a></a></li>
<li>自動インデントのコマンド
－"Shift"＋"Alt"＋"F"を押すと自動でインデントがつく。<br>
ただし、PHPフォーマッタをインストールする必要がある。←プラグイン「PHP Intelephense」などをインストールする。<br>
インストールするとテンプレートタグがエラー表示になるため、設定を変える必要がある。(Windowsの場合)ファイル＞ユーザー設定＞設定＞「undefined functions」を検索して、チェックボックスを外す⇒エラーが出なくなる。
<a></a></li>
<li>テーマの変更方法<br>
<a>https://lucy.ne.jp/bazubu/how-to-change-wp-theme-23116.html#:~:text=1-2-1</a></li>
<li>テンプレート階層とは<br>
<a>https://wp-exp.com/blog/template-hierarchy/</a></li>
<li>プラグイン「Query Monitor」を使ってファイルを確認する<br>
<a></a></li>
<li>オリジナルテーマの最小構成<br>
<a>https://webst8.com/blog/wordpress-theme-howto-make/</a></li>
<li>子テーマの作成<br>
<a>https://www.conoha.jp/lets-wp/wp-childtheme/<br>
https://miya-system-works.com/blog/detail/152</a></li>
<li>ベーステーマ「Clean Blog」を使ってオリジナルブログを作成する<br>
<a></a></li>
<li>テンプレートタグとは<br>
<a>https://digitor.jp/textbook/template-tag/</a></li>
<li>記事のタイトルを表示する－&lt;?php the_title();?><br>
<a>https://deep-blog.jp/engineer/15060/#:~:text=%E6%8A%95%E7%A8%BF%E8%A8%98%E4%BA%8B%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%82%92,get_the_title()%E3%82%92%20%E4%BD%BF%E3%81%84%E3%81%BE%E3%81%99%E3%80%82</a></li>
<li>記事の投稿者を表示する－&lt;?php the_author();?><br>
<a>https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_author</a></li>
<li>PHPループとは<br>
<a>https://digitor.jp/textbook/wordpress-loop/</a></li>
<li>投稿の数だけ記事を表示させるループの記述方法<br>
<pre>&lt;?php while (have_posts()) : the_post(); ?>
　～～(繰り返したい内容)～
&lt;?php endwhile ?></pre>
<a>https://php1st.com/1202</a></li>
<li>記事の投稿日を表示させる<br>
－&lt;?php echo date('y/n/d'); ?>、&lt;?php the_time( get_option( 'date_format' ) ); ?><br>
<a>https://thewppress.com/libraries/get-the-date/</a></li>
<li>記事の抜粋を取得・表示させる<br>
－抜粋を表示：&lt;?php the_excerpt();?><br>
抜粋の表示を確認する方法：「lorem ipsum」と検索し、表示されるダミーテキストをコピペして確認する<br>
<a>https://teru-hide.com/wordpress-how-to-use-the-excerpt/</a>
<a>https://dic.nicovideo.jp/a/lorem%20ipsum</a></li>
<li>投稿の個別ページ作成－the_permalink<br>
<a></a></li>
<li>テンプレートファイルをパーツにする<br>
－index.htmlからhead部分をまるまる切り取る。header.phpファイルを作り、それを貼り付ける。<br>
footerにあるscript要素群を切り取る。footer.phpファイルを作成し、それを貼り付ける。<br>
元の場所(呼び出したい場所)にそれぞれ&lt;?php get_header();?>、&lt;?php get_footer();?>を張り付ける。<br>
<a>http://wordpress.hitsuji.me/template-parts/</a></li>
<li>テンプレートファイルのパスの取得方法－header.phpとfooter.phpファイルのlinkの一部を&lt;?php echo get_template_directory_uri();?>に書き換える、「https」を消す<br>
<a></a></li>
<li>様々な箇所のパーツファイル化－navやfooterの残りを切り取り、新しいファイルに貼り付け、元の場所には&lt;?php get_template_part('フォルダ名/ファイル名')?>を記載<br>
<a></a></li>
<li>投稿の詳細ページに各情報を出力させる－&lt;?php the_title();?>、&lt;?php the_content(); ?><br>
<a></a></li>
<li>投稿のアイキャッチ画像を設定する<br>
－functions.phpファイルを作成し、以下の関数を記述することで、投稿編集画面にアイキャッチ画像の欄が表示される。<br>
<pre>&lt;?php<br>
  add_action('init',function(){<br>
  　add_theme_support('post-thumbnails');<br>
  });<br>
?></pre>
　表示させたい場所に&lt;?php the_post_thumbnail();?>を記述。<br>
<a>https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_post_thumbnail</a></li>
<li>言語の属性を判断して表示するように設定する－&lt;?php language_attributes();><br>
<a>https://prorautatie.net/wp-language_attributes/</a></li>
<li>body要素に異なるclassを設定する－&lt;?php body_class(); ?><br>
<a>https://on-ze.com/archives/1316</a></li>
<li>アクションを起動する－header.phpのトップに&lt;?php wp_body_open();?>を記述<br>
<a></a></li>
<li>個別ページのテンプレート作成<br>
－page.phpファイルを作成。<br>
　header、footerの呼び出しなどを行う。<br>
　bodyの中身は&lt;?php the_title();?>、&lt;?php the_content(); ?>で呼び出す。<br>
<a></a></li>
<li>サムネイル画像を呼び出す関数をパーツ化<br>
－function.phpファイルに以下を記述
<pre>function get_thumbnails(){
    if (has_post_thumbnail()) :
        $id = get_post_thumbnail_id();
        $img = wp_get_attachment_image_src($id, 'full');
    else :
        $img = array(get_template_directory_uri() . '画像のパス');
    endif;
    return $img;
}</pre>
　サムネイルを表示させたい場所には&lt;?php $img = get_thumbnails(); ?>を記述。<br>
<a>https://thewppress.com/libraries/get-theme-directory-url-and-path/</a>
<a>https://www.webdesignleaves.com/pr/wp/wp_post_thumbnail.html</a></li>
<li>パーマリンクの編集<br>
－投稿/個別ページ編集画面の右側に表示されるURLをクリックする。<br>
もしくは、画面左側メニューの設定＞パーマリンクから、パーマリンクの設定方法を変更することもできる。<br>
<a></a></li>
<li>お問合せフォームを作るプラグイン「MW WP Form」<br>
<a>https://form.run/media/contents/website-lp-creation/mw-wp-form/</a></li>
<li>カテゴリーとタグ<br>
<a></a></li>
<li>カテゴリー一覧ページの作成<br>
－管理画面＞設定＞カテゴリーベースに入力した文字が、カテゴリー一覧ページのURLに表示される。<br>
　archive.phpファイルを作り、index.phpファイルの中身をコピペする。<br>
　h1のタイトルを編集し、その下に表示するspanタグのサブタイトルには、&lt;? php wp_title(); ?>でカテゴリー名を取得・表示するとよい。<br>
<a>https://seigetsu-web.com/wordpress-function-wp_title/</a></li>
<li>タグ一覧ページや投稿者一覧ページを作る<br>
－テンプレート階層で同じarchive.phpファイルに属しているページの表示を変える。<br>
以下のように記述する。<br>
<pre>&lt;?php if(is_category()):?>
    &lt;h1>Category&lt;/h1>
&lt;?php elseif(is_author()) :?>
    &lt;h1>Author&lt;/h1>
&lt;?php elseif(is_date()) :?>
    &lt;h1>Date&lt;/h1>
&lt;?php else :?>
    &lt;h1>Tag&lt;/h1>
&lt;?php endif ?>
<a></a></li>
<li>テーマユニットテスト<br>
－日本語版テストデータリポジトリから wordpress-theme-test-date-ja.xml をダウンロード。<br>
管理画面のツール＞インポート＞WordPress＞今すぐインストール＞インポーターの実行＞ダウンロードした XML ファイルを選択しインポート＞実行。<br>
新しい記事がたくさん増えているので、ページの遷移などを確認できる。<br>
<a>https://wpdocs.osdn.jp/%E3%83%86%E3%83%BC%E3%83%9E%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%E3%83%86%E3%82%B9%E3%83%88</a></li>
<li>ページネーション<br>
<a></a></li>
<li>メニューの編集<br> 
－プラグイン「Admin Bar Position」で管理バーを画面下に持ってくる。<br>
　function.phpファイルに以下を記入し、管理画面に「メニュー」を表示させる。
<pre>

</pre>
<a>https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_get_nav_menu_items</a></li>
<li>エスケープ<br>
<a>https://www.webdesignleaves.com/pr/wp/wp_escape_functions.html</a></li>
<li><br>
<a></a></li>
<li><br>
<a></a></li>
</ul></ul>
<!--
　➀-->
<h2>SLスタジオで学習して補充した知識</h2>
<p>オンラインスクールではWordpress以外でのPHPの知識を学べなかったので、無料のプログラミング講座SLスタジオで知識の補充を図りました。</p>
<ul><li>データ型を確認する：var_dump();
<pre>$str = "Hello";<br>
$num = 1;<br>
$d = 0.123;<br>
$flg = true;<br>
var_dump($str,$num,$d,$flg);</pre>
出力結果
<pre>string(5) "Hello"
int(1)
double(0.123)
bool(true)</pre>
bool型はechoでは値の確認ができないため、var_dumpで確認する。関数の情報はシステム利用者には必要ないため、var_dumpはデバックで使用する関数。</li>
<li>for文<br>
<pre>for ([ループカウンター変数の初期化]; [条件]; [変数再代入]) {<be>
    繰り返したい処理<br>
}</pre>
条件を指定し、条件がtrueである限り処理を繰り返す。<br>
ループ内で繰り返しを制御するために利用される変数をループカウンタ変数という。一般的に変数名を"\$i"として初期値に"0"を代入。
ループを終えるために条件の部分が最終的に"false"となるよう、"\$i"に値を再代入しなくてはならない。そうしないと、無限ループになる。<br>
例えば、"\$i++"とインクリメントすることにより、ループのたびに"\$i"は1ずつ増え、ループを抜ける。<br>
また、0から数えられる配列と相性がよく、配列の中身を順に出力するのにも利用できる。
<pre>&lt;?php
$array = [1,2,3,4,5];
​
for ($i = 0; $i < count($array); $i++) {
    echo $array[$i];
}
</pre>
<a></a></li>
<li>while文<br>
<pre>&lt;?php
​$number = 1;  (← 例。変数はwhile文の外で定義する)
<br>
while (条件) {
    繰り返したい処理
    (インクリメントなどはこの中に書く)
}
</pre>
基本はfor文で書いた方がミスが少ないが、整数以外の値を条件とする場合や、繰り返す回数が決まっていない時にはwhile文が利用しやすい。
<a></a></li>
<li>do-while文<br>
while文と違って、まず処理を一度実行してから、条件の判定をする。そのため、条件に一致しなくても最低一度は実行される。
<pre>&lt;?php
$number = 5;
<br>
do {　　　　　(← 無条件でまず実行)
    echo $number . " ";
    $number++;
} while ($number < 5);　(← その後でループするか判定)
</pre>
<a></a></li>
<li>foreach文<br>
PHP独自の構文。添字が0から順番に添えられていないような配列や連想配列にも対応し、要素を順に取り出してくれる。全部取り出したら自動的にループが終わる。
<pre>&lt;?php
foreach ([$arr(配列の変数)]) as [$key(添字)] => [$value(値)] {
    繰り返したい処理
    例)echo $key, ":", $value;
}
</pre>
<a></a></li>
<li>ファイルの呼び出し：require "(ファイル名)" 、あるいはinclude "(ファイル名)";<br>
違いの整理。<br>
require：ファイルが見つからない場合、エラーとなり処理が中断される。<br>
include：ファイルが見つからない場合、警告を発するが処理は続行される。
上記２つに加え、require_once、include_onceがある。<br>
once有り：ファイルが既に読み込まれている場合、そのファイルを読み込まない。
once無し：ファイルが既に読み込まれていても、ファイルの読み込みを行う。
<a></a></li>
<li>関数<br>
処理をひとまとめにして事前に定義し、好きなタイミングで実行できる仕組み。<br>
関数名は任意に設定できるが、他の関数名と被らないように注意(エラーになる)。<br>
可読性を考えて、上部や下部に関数の宣言をまとめて書く場合が多い。なお、実行の記述が宣言より前に書かれていても問題なく実行される。<br>
PHPで予め用意されているビルトイン関数というものもある。これまでに使っていた"var_damp();"など。
<ul><li>引数<br>
定義した関数を使用するにあたって、必要になる値を変数で仮置きしておく(仮引数)。使用する時に順番にその値を渡す(実引数)。<br>
仮引数にデフォルト値を入れておいて($変数 = 値,)、何も渡さずにその値を使用したり、引数を渡してその値を上書きして使ったりすることもできる。
<pre>function 関数名 (仮引数1, 仮引数2...) {
    処理
}
<br>
関数名 (実引数1, 実引数2...);
</pre>
例）四角形の面積を算出する関数<br>
<pre>function menseki ($tate, $yoko) {
    $menseki = $tate * $yoko
    echo $menseki
}
<br>
menseki(5, 10); //出力結果 50
</pre>
<a></a></li>
<li>return文(戻り値)<br>
return 値;で、呼び出し元に戻ると同時に値を返す(それ移行の処理は実行されない)。
<pre>funcrion shikaku(&tate, $yoko) {
    $menseki = $tate * $yoko;

    if($menseki >= 100) {
        return "100以上";
    }

    return "100未満";
}
<br>
echo shikaku(15,10);
echo "\n";
echo shikaku(5,5);
<br>
// 出力結果
// 100以上
// 100未満</pre>
<a></a></li>
<li>ビルトイン関数
<ul><li>文字列操作<br>
<ul><li>str_replace()<br>
<a></a></li>
<li>strpos()<br>
<a></a></li>
<li>substr()<br>
<a></a></li></ul>
<li>Math関数<br>
<ul><li>random_int()<br>
<a></a></li>
<li>ceil()<br>
<a></a></li>
<li>floor()<br>
<a></a></li>
<li>round()<br>
<a></a></li></ul>
<a></a></li>
<li>日時関数<br>
<ul><li>現在日時の取得：date();<br>
<pre>date(Y-m-d H:i:s);<br>
//2023-03-31 15:05:22<br>
※間の"-"や":"を指定できる<br>
date(y年m月d日 H時i分s秒);<br>
//2023年03月06日 15時05分22秒<br>
date(y-M-j h:i:s D);<br>
//23-March-6 03:05:22 Fri<br>
※y→西暦の下二桁,M→英語の月,j→十の位の0を省いた日付,h→12時間表記の時間,D→英語の曜日上3文字<br>
<a></a></li>
<li>時間の取得：time();<br>
UNIXタイムスタンプを返す。<br>
UNIXタイムスタンプとは、世界標準時基準で1970年1月1日 00:00:00（日本時間 09:00:00）から現在の時刻までを秒数換算したもの。
<a></a></li></ul>
<a></a></li>
<li>配列関数<br>
<ul><li>整数の要素を配列として返す：range()<br>
<pre>range(int $start, int $end, int $step = 1)<br>
//$start から $end までの整数。<br>
//$step を指定すると、増加量を変更することができる。
<a></a></li>
<li>要素の数を返す：count()<br>
<a></a></li>
<li>配列の範囲を指定して、配列として返す：array_slice()<br>
<a></a></li></ul>
<a></a></li>
<li><br>
<a></a></li>
<!--
　➀-->
<h2></h2>
<p></p>
<!--
　➀-->
<h2></h2>
<p></p>
<!--
　➀-->
<h2></h2>
<p></p>