0

私は自分自身にPHP/PDO / SQLを教えることができましたが、それでも、PHPとHTMLで相対パスがどのように機能するかを一生理解することはできません。いくつかのディレクトリとブランチを持つ複数ページのWebサイトがあり、スタイルシートへのリンクを変更することなく、新しいページを作成するために使用できる簡単なテンプレートを作成できるようにしたいと考えています。ディレクトリ。

これが私のレイアウトです:

 MySite (http://localhost/MySite/)
   RESOURCES //Not a folder, just here for readability
   > serverside > initialize.php
   > templates  > header.php
                  footer.php
                  navuser.php
                  navmenu.php
   > styles     > styles.css
   > images     > variousImages.png

   PAGES //Not a folder, just here for readability

   > index.php
     login.php
     register.php
     gettingstarted.php

  > you         > settings    > settings.php
                > youraccount.php
                > yourfavourites.php

ゲームのルールは次のとおりです。各ページには、最初にserverside / initialize.phpファイル(PHPインクルード)が含まれています。次に、各ページには、標準のHTMLhref属性を介してstyles/styles.cssが含まれます。各ページには、PHPを介してtemplates/header.phptemplates/footer.phpの両方が含まれ、前者にはtemplates/navuser.phptemplates/navmenu.phpが含まれています。

問題は、ページの1つが異なるレベル(たとえば、you / settings / settings.php)にある場合、それらすべてのインクルードとhrefを変更する必要があることです。これは、インクルード内のインクルードに影響を与えるようです。それは不可能だ!

必要なのは、真の絶対パスを使用せずにファイル名を指定できるようにすることです。これにより、必要に応じて単一のテンプレートファイルをWebサイト全体に複製__DIR__でき__FILE__ます$_SERVER['DOCUMENT_ROOT']。ルートですが、成功しません。何が起こっているのか半分もわかりません。

誰かが私の状況に光を当てることができますか?私は基本的に、相対的なルート/リンク/ファイルがPHPでどのように機能するかについての完全な説明を探しています。さらに複雑なディレクトリ構造に対処するにはどうすればよいですか?繰り返しますが、私は何をすべきですか?ありがとう。

4

1 に答える 1

2

通常は、絶対パスと絶対 URL を含む定数をindex.phpファイルに設定し、そこから include などで参照します。

index.phpの例:

<?php
define('ROOT_DIR', __DIR__);

その後、その定数を使用できます。

require ROOT_DIR . '/includes/database.php';
require ROOT_DIR . '/application/controllers/MyController.php';
require ROOT_DIR . '/application/models/MyModel.php';

等々。お役に立てれば。

于 2013-02-19T10:58:00.453 に答える