urlから数字の値をとってきてview内で再利用できる仕組みがPHPにもあるのかなと思っています。
「ある」というより「そういう仕組みを作る」ということになります。
?id=1234
のようなクエリストリングで、$_GETで受け取っても良いですし、
teratailのような/questions/190418
でも良いですが、
それは「こういうURLのときはこういう処理をする」という組み方をするだけの話で、
そこは仰っている「Djangoのurls.py」とやっていることは同じだと思います。
どちらもサーバーサイドの言語なので「URLをリクエストとして受け取ってそのURLに即した処理をする仕組みを”自分で作る”」ことに変わりはありません。
先に例を出したteratailですが、PHPで作られています。
既存のPHPフレームワークである[CakePHP]を利用して作られているということは割と知られています。
CakePHPは私もまだ業務で使ったことがあるほどのレベルではないですが、
「ルーティング」という考え方によって「こういうURLがきたらこの処理を実行する」と指定して処理をさせています。
「こういうURL」の部分も、1番目がカテゴリ名、2番目がID・・・のように「約束事」を決めるわけですね。
指定の構造で、「クエリストリング」で実装する場合、例えばこんな感じでしょうか。
※とりあえずpdfだけリンクにするという形にしています。
php
1$project = $_GET['project'] ?? '';
2if(!empty($project) && file_exists('project'.$project) && file_exists('project'.$project.'/doc.pdf')){
3 echo '<a href="project'.$project.'/doc.pdf'.'">PDF</a>';
4}
これでURLでhttps://example.com/?project=01
のようにアクセスすればproject01配下のdoc.pdfのリンクが生成できるような形になるわけですね。
/questions/190418
のような形(今回だと/project/01のような形)を実装しようとすると「全てのアクセスをindex.phpに集めるように指定し、index.phpを読み込んだ時にURLを解析して結果で使う処理を振り分ける」といった対応になります。
以前の質問に私も同じような内容で回答していました。
:htaccessを使って拡張子.phpのファイルにアクセスした時に、.phpをとってページを表示させたい。
いずれにしてもhtaccessというものを利用する必要があります。(こういう記事にも紹介されています)
「オレオレフレームワークを作る」というのも勉強にはなるかもしれませんが、手っ取り早く対応するのであれば既存のフレームワークを採用したほうがいいかもしれません。
(採用するフレームワーク次第ではきちんとPHPを学んでおかないといけないものも多いですが)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/12 13:47
2019/06/12 13:54