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

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

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

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

PHP

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

Q&A

2回答

408閲覧

パーフェクトPHPの第7章の内容につきまして、お聞きしたいことがございます。

newyee

総合スコア213

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

PHP

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

1グッド

1クリップ

投稿2019/03/08 05:57

編集2019/03/08 07:27

PHPの学習の為、パーフェクトPHPという書籍で学習をしていたのですが、理解できない箇所があった為、ご助言頂きたく、ご質問させていただきました。
お聞きしたい箇所なのですが、第7章の「7.2.12」の「RequestクラスでのURL制御」の項目の部分です。
ここの個所には、URLもリクエスト情報の一部とみなせる為、これら2つの情報をRequestクラスから取得できるよう、メソッドを追加して対応します。とあり、REQUEST_URIとSCRIPT_NAMEの値を元にベースURLとPATH_INFOを特定するため、getBaseUri()メソッドとgetPathInfo()メソッドをRequestクラスに追加するとありました。
疑問な部分としましては、ベースURLとPATH_INFOを何故分ける必要があるのか、という点です。「form」から「POST」されてきた値をそのまま、ベースURLとPATH_INFOがつながった状態で取得すれば良いのではないかと思うのですが、分ける意味があるのでしょうか?この点につきまして、理解できな為、ご助言頂けましたら幸いです。よろしくお願いします。
追記です。
自分自身混乱している部分があり、書籍を読み直していたのですが、根本的に、フレームワークにおける「ベースURL」と「PATH_INFO」の理解がかなりあやふやな部分があります。ベースURLとはホスト部分より後ろから、フロントコントローラーまでの値であり、フロントコントローラーまでのパスを特定する為の値であると記載されています。さらに、HTML内にリンクを作成する際に利用するともありました。まず、ここの段階で、自分自身、HTML内にリンクを作成される際に、どのように使用されるのか、という点が分かりません。さらに、PATH_INFOでは、ベースURLより後ろの値であり、この値を用いて、RouterクラスがURLとコントローラーの対応付けを行うとの説明があるのですが、ここの部分につきましては、「RouterクラスがURLとコントローラーの対応付けを行う」ここの部分も理解することができないです...
追記前のご質問に関しましては、自分自身混乱してしまっていた部分がありますので、追記後の2点につきまして、どなたかご助言頂けないでしょうか...?よろしくお願いましす。

退会済みユーザー👍を押しています

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/03/08 06:03

その本を読んで回答しないといけないの? 本を読まなくても、質問文を読むだけで問題点が回答者側に伝わるように工夫していただけませんか?
newyee

2019/03/08 06:05

そうですね...質問文を修正したいと思います...
kasa0

2019/03/08 06:19

どうしてそういう設計にしたかは、設計者に聞かなければ本当の理由はわからないので、著者に直接聞くのが筋では?
newyee

2019/03/08 06:31

自分としましても、少し混乱してしまっている部分がある為、質問内容の方、一度整理し、修正させていただきたいと思います。
papinianus

2019/03/08 06:37

自宅にある気もするので、版の情報もお願いします
newyee

2019/03/08 06:42 編集

ありがとうございます。 2018年9月6日 初版 第8刷発行です。 自分自身混乱してしまっている部分がありますので、質問内容の方早急に修正したいとおもいます。
newyee

2019/03/08 12:01

追記致しました。
guest

回答2

0

ベースURLとPATH_INFOを何故分ける必要があるのか

APIのルーティング処理、どのコントローラのファイル・クラス・メソッドにどんなパラメータを渡して
実行すればいいのかを決定するのに欲しいのはベースのURLより後ろだけだから
最初から分けて取得できた方が都度分離処理書く必要がなくて楽だよね、と

RouterクラスがURLとコントローラーの対応付けを行う

リクエストされたURLから実行すべき
コントローラのファイル・クラス・メソッドを決めるルーティング処理を
Routerクラスが担うことにするよ、と

投稿2019/03/09 01:53

KazuhiroHatano

総合スコア7804

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

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

newyee

2019/03/09 02:15

ご回答ありがとうございます。 自分の勉強不足というのもありまして、分からない部分もあるのですが、なんとなく理解できたような気がします。
guest

0

直接の回答ではないですが。
もしかしたら前にも言ったかもしれませんが、書籍はあくまで参考のもの。
全てを保証するわけでも最適な書き方があるわけでもありません。
人が書いてるものですのでミスもあります。

また自身のphpの環境と違うと動かないこともあります。パーフェクトPHPの対象にphp7は入ってますか?
というのはあくまで参考でしかないですが。

結局のところ書籍依存ではなかなか上達しませんので、何か思うところがあればトライ&エラーでやっていくしかありません。php的なエラーが出るだけでPCを壊すことにはなりませんし、DBのデータが壊れても構築し直せばいいだけです。

投稿2019/03/08 07:01

編集2019/03/08 14:05
m.ts10806

総合スコア80850

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

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

newyee

2019/03/08 07:36 編集

ご回答ありがとうございます。 そうですね...一度ここの章でつまずいてしまい、やり直してみようと思い、現状理解できずに、混乱してしまっている状況です...他の書籍は読んだのですが、MVCフレームワークについては記載されておらず、PHPの知識を増やしたく、現在の参考書にチャレンジしているといった所ですね... 第7章、8章を理解できれば、自分の中では、スキルがついたと実感できるのではないかと思うのですが、難しく理解できずにいるといった現状です...
m.ts10806

2019/03/08 14:05

低評価つけた方。 この質問に対して確固たる回答をお持ちでしょうから、ぜひ回答へ。 そのほうが質問者さんのためにもなります。 質問者さんへ。 難しく感じるというのでしたら、そこに入る段階にないとも言えます。 本当にその前までをきちんと活用可能なレベルに来ているか?考えてみてください。 三輪車も乗りこなせない子供が自転車に乗ることができるわけがありませんし、 乗りこなすとは、自分が好きな方向に向かうだけではなく、人がきたらよけたり止まったり、 障害物をよけたり、時には後ろに下がったり状況に応じた乗り方ができる、という意味です。 そこまでできてようやく「活用可能なレベル」と言えます。 なんとなく書いてなんとなく動いて、では自分が好きな方向に向かうことすらできていない段階です。 これもどこかで言ったことがあるのですが、自身の現在地を見誤ると単なる時間の浪費になって、 「できない」を積み重ねてしまうので、やがて嫌いになってやめることになります。 冷静に自分の現在地を見極めることも成長する上では非常に大事です(プログラミングだけでなく勉強でもスポーツでも同じ。できたつもりになってる人はいつまでも伸びません。)
newyee

2019/03/09 01:04

ご返信ありがとうございます。 そうですよね...難しく思えて、先へ進めていない状況ですし、もう少し前の段階できちんと理解できているか、見直してみたいと思います。実際、全て理解できているかと問われたら、理解はしきれていないですしね...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問