PHPのrequireについて

WBOY
リリース: 2016-06-23 14:06:03
オリジナル
934 人が閲覧しました

1. PHP で require を使用してフォルダー内のすべてのファイルを含めるにはどうすればよいですか?
require("./folder/*") は機能しません。PHP は Java に含まれるのと同じくらい柔軟で便利ではないでしょうか?
定期的に名前を認識できませんか?パターン認識?

2.同じクラスを 2 回要求する必要はありませんか?
ファイル名: A_Dao.class.php
関数: A.class の基本的な操作が含まれます
A_Dao.class.php
require("DBConnection.class.php");
...
...
...
?>

別のファイル: B_Dao.class.php
関数: B.class の基本操作が含まれます
B_Dao.class.php
require("DBConnection.class.php") ;
...
...
...
?>

A と B.class は概念から抽象化されたエンティティです

require(" /A_Dao.class.php");
require("./dao/B_dao.class.php");
...
...
...
?>
ServiceA.class.php を実行
"致命的なエラー: C:Program FilesApache Software FoundationApache2.2htdocsapplicationdaoDBConnection.class.php の 3 行目でクラス DBConnection を再宣言できません

何が問題ですか?
同じ (DBConnection.class.php) を繰り返し要求できないのはなぜですか?
コンパイラ必ずしも自動的に処理されるわけではありません (Java のように)。


ディスカッションへの返信 (解決策)

なぜ require(*) が必要なのですか?

require は、すべてのターゲット ファイルを現在のファイルに挿入します。 * を許可すると、ディレクトリ内のすべてのファイルが挿入されるため、ファイルが非常に大きくなります。

2 番目の質問:
require_once

C/C++ では、同じファイルを繰り返しインクルードすることはできません。

phpのインクルードはC言語と似ています。ページが実行されるたびに一度インクルードされます


これがサポートされると、Javaのimport java.ioとは異なり、効率に大きく影響すると思います。 *; コンパイル後、使用するライブラリのインポートのみが .class サイズに影響しません

require("./folder/*") は、Web の場合、フォルダーの下にあるすべてのファイルをロードするため、サーバーの負荷が増加します。サーバーはリクエストを受信するたびにこれを実行します。これは耐えられません。

PHP はインクルードを 1 回だけ許可します。require_once を使用すると、繰り返しの require を回避できます


つまり、PHP は自動的に最適化されません
ただし、各エンティティオブジェクトに対応するデータ操作クラスを作成しました

このようにして、私はビジネスで、すべてのエンティティ オブジェクトを処理し、データベースを挿入して選択する必要があります

14 個のエンティティ オブジェクトと 14 個の対応する DAO クラスがあります
以前は Java を使用していましたが、Structs フレームワークはこのように階層化されています
しかし、今は Call it MV
フォルダーを使用しています:
エンティティ: すべてのエンティティ クラスが含まれます
dao: すべてのエンティティに応じたすべてのデータベース アクセス オブジェクトが含まれます
サービス: dao とエンティティを使用してタスクを完了します
PHP を使用するのは初めてです、他の人が何をしているのかわかりませんPHP システムはどのように階層化されていますか?どのように設計されていますか?

http://blog.csdn.net/tyjhField
ブログに質問を書きました。ご興味があれば、お手伝いして議論してください

Autoload を使用できます

require_once()

1. 比較すると、Java は「シンボルレベル」のインクルードであると言えますが、PHP では、include/include_once/require/require_once に関係なく、「ファイルレベル」のインクルードであるため、PHP がそうすることは理解できます。のワイルドカードはサポートされていません。 「フォルダー内のすべてのプログラム ファイルを含める」という効果を確実に得たい場合は、scandir() または同様のメソッドを使用して、それらをたどって含めることができます。これは複雑ではありません。 「必要」であれば、効率的かどうかは関係ありません。

2. require_once を使用するだけです。 1階と3階の兄弟が言ったことは不正確です。 PHP/C/C++ はすべて、複数のインクルードを許可します。 PHP では、関数とクラスを「繰り返し定義」できないという理由だけで、繰り返しインクルードするとエラーが報告されることがよくあります。


??????????????????????????????????
[img=http://csdnimg.cn/bbs/ m /i/red_1.gif]メダル[/img][img=http://csdnimg.cn/bbs/m/i/ yellow_1.gif]メダル[/img][img=http://csdnimg.cn/ bbs /m/i/blue_1.gif]メダル[/img] メダル…いつ入手できますか…
??????????????????? ?????????
CSDN フォーラムが提供するプラグイン拡張機能をベースに、署名ファイル ツールを作成し、皆さんと共有しました。技術的な交流は大歓迎です :)

私も理解できません。 require と include の使い方、wordpress と Taoke の統合を手伝ってくれる人はいますか、助けてください、私のウェブサイトは www.nygjp.cn です

わかりません、わかりません、説明してください。 。 。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート