0

私はPHPで最初のかなり大きなプロジェクトに取り組んでいます。フレームワークなしで、すべてをゼロから構築することにしました。

まず、次の構造がありました。

index.php
includes/            //all php pages, except index.
includes/scripts/    //all php classes that do not print web pages.
styles/              //all my css files.
images/              //all images used on the website.

しかし、これは、さまざまなフォルダー内からファイルを含めるときに問題を引き起こしていました。

私は今それを次のように変更しました:

index.php
the rest of my .php files
styles/
images/

私のインクルードはすべて、フォルダー間をジャンプすることなく、適切に機能するようになりました。しかし、プロジェクトの全体像を見失っているような気がします。

現時点では、私は物事を行う方法について少し迷っています。本によると、フォルダーをグループ化し、ファイルを含める適切な方法は何ですか?

編集:実際にファイルを含めるためのヒントも見たいです。include() が呼び出された場所に関係なく、ファイルをインクルードするためのテクニックは何ですか? 私の最初の構造によると、特定の例。

にスクリプトがありましincludes/scriptslogin.php。から(単純なページ テンプレート) をlogin.php含めます。テンプレートのいくつかの部分 ( 、) が含まれます。しかし、 のファイルからも呼び出さなければなりませんでした。page.phpincludes/page.phpheader.phpfooter.phppage.phpinclude/

が呼び出された場合、またはからpage.php呼び出された場合、相対パスが異なるため、これは私に問題を引き起こしていましたincludes/includes/scripts/

4

4 に答える 4

2

あなたの問題はおそらく相対パスが原因でした。

これは、絶対パスを使用して解決できます。例:

require_once("/var/www/clients/client05/web29/web/includes/scripts/myClass.php");

簡単にするために、index.php(または毎回含まれる他のファイル)で定数を定義することもできます

define("WEB_ROOT", "/var/www/clients/client05/web29/web/");
define("INCLUDES_DIR", WEB_ROOT . "includes/");
define("SCRIPTS_DIR", INCLUDES_DIR . "scripts/");

その後、ファイルを簡単に含めることができます

    require_once(SCRIPTS_DIR . "myClass.php");
    require_once(INCLUDES_DIR . "acp.php");
于 2012-09-30T17:44:42.453 に答える
1

単純な提案:

index.php
app/
styles/
images/

すべての PHP コードが入りapp/、必要に応じてさらに整理できます。たとえば、テンプレート用のディレクトリ、サードパーティ コードを格納するディレクトリ、アプリケーション用に構築する独自のライブラリなどです。

appその後、いつでもフォルダーをディスク上の他の場所、特にドキュメントルートから移動できるはずです。

これは、アプリケーションに着信するすべてのリクエストを関連するコードにルーティングする、いわゆるフロント コントローラーを使用することで最も簡単に実行できます (技術的には、これにより、複数のアプリケーションを並べて配置することもできます)。

上記のレイアウトでは、index.phpがその役割を果たします。これは、アプリケーションへのエントリ ポイントです。

于 2012-09-30T17:26:53.333 に答える
1

単なるファイルについて考えるのではなく、リソースと対話する方法についての戦略について考える必要があります。

PHP は優れたオブジェクト指向サポートを備えているため、名前空間を利用して、好きなようにクラスをフォルダに整理できます。

フレームワークを使用したくない場合 (アプリの安全性と保守性を高めるため、フレームワークを使用することを強くお勧めします) は、この記事で構造を整理する方法を学ぶことができます。

symfony オートローダーのようないくつかのコンポーネントを選択して、必要に応じてクラスをロードし、ファイルシステムの構成に従って他のすべてのリソース [css、js、画像] を簡単に処理できます。

于 2012-09-30T17:27:30.287 に答える
1

私の好みの組織構造は次のとおりです。

index.phpおよびルート内の他のすべての php ページ (「/」)
/includes/ (ヘッダー、フッター、分析コードなど、頻繁に再利用されるテンプレート項目のディレクトリ)
/includes/classes/ (php クラス用)
/images/ (自明; 私はまた、私の画像の最も賢明な編成に基づいて、この中にいくつかのディレクトリを使用します)
/style/ (css の場合、フォントファイルの「/style/fonts/」ディレクトリを使用)
/scripts/ ( js などの場合)
/support/ (使用している可能性のあるセットアップ ファイルの場合)

于 2012-09-30T17:28:12.197 に答える