質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

1503閲覧

PHPは、条件分岐か?テンプレートを分けるか?

EggBenedict

総合スコア19

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/11/19 02:37

PHPでページを作るときに、

php

1if ( is_user_logged_in() ) { 2// ログインユーザー向けの処理 3}else{ 4// 非ログインユーザー向けの処理 5}

としたいのですが、この条件分岐がpage.phpに何度もある場合、次の①②③➃のどれにするのが一般的なのでしょうか?
メリットデメリットがあれば教えてください。宜しくお願い致します。


➀まとめて分岐する

php

1if ( is_user_logged_in() ) { 2 <section clss="one"> 3 </section> 4 <section clss="two"> 5 </section> 6 <section clss="three"> 7 </section> 8}else{ 9 <section clss="one"> 10 </section> 11 <section clss="two"> 12 </section> 13 <section clss="three"> 14 </section> 15}

➁それぞれ分岐する

php

1if ( is_user_logged_in() ) { 2 <section clss="one"> 3 </section> 4}else{ 5 <section clss="one"> 6 </section> 7} 8if ( is_user_logged_in() ) { 9 <section clss="two"> 10 </section> 11}else{ 12 <section clss="two"> 13 </section> 14} 15if ( is_user_logged_in() ) { 16 <section clss="three"> 17 </section> 18}else{ 19 <section clss="three"> 20 </section> 21}

➂ページを分ける
page-loggedin.phpとpage-guest.phpにこう

php

1 <section clss="one"> 2 </section> 3 <section clss="two"> 4 </section> 5 <section clss="three"> 6 </section>

➃それ以外

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/11/19 02:40

例とはいえPHPとして構文エラーがでるコード、htmlとして存在しない属性をそのまま提示するのはいかがなものかと。
guest

回答2

0

1ですかね。
状況によっては2にする場合もあるかと思いますが、その場合はis_user_logged_inの戻り値を保持しておいて、それで比較します。
これには、以下の意味があります。

  • 何度も同じ関数を呼ばない
  • 同じ関数の呼び出し結果による処理の振り分け

PHP

1$ret = is_user_logged_in(); 2if ( $ret ) { 3 <section clss="one"> 4 </section> 5}else{ 6 <section clss="one"> 7 </section> 8} 9if ( $ret ) { 10 <section clss="two"> 11 </section> 12}else{ 13 <section clss="two"> 14 </section> 15} 16if ( $ret ) { 17 <section clss="three"> 18 </section> 19}else{ 20 <section clss="three"> 21 </section> 22}

投稿2018/11/19 02:57

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

一般的と言われるとなかなか難しいですが、、、自分的には以下だと思います。

・基本は1
・まとめた方が見やすそうであれば2に修正
・2の分岐のブロックがあまりに大きすぎてわかりにくい or 他のページと共通化できるなら3

それ以外としては、例えば echo $content とだけ書いておいて、$content の部分は is_user_logged_in() の内容によって入っているものを変えるといったやり方はありますね。

あとは、is_user_logged_in() はログインしているかどうかという話だと思うので、この辺については使用しているフレームワークによっても「一般的」な書き方は変わって来るかもしれません。

投稿2018/11/19 02:47

ssasaki

総合スコア1167

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問