3

PHP クラスに use '.class.php' 拡張子を追加するのは一般的な方法ですか?

ここの PHP.net: http://php.net/manual/en/function.spl-autoload-register.phpには、次のような例があります。

// Or, using an anonymous function as of PHP 5.3.0
spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.class.php';
});

.class.php拡張機能を使用します。

PHPコードはこのように書くべきですか? 見たことないけど新しいの?これは PHP の一種の新機能なので、そうでしょうか?

編集:「機能」は良い言葉ではありませんでした!おそらく、それが標準なのか慣習なのかを尋ねるべきだったのでしょう。

ありがとう。

4

7 に答える 7

8

これは機能ではなく、ときどき見られる慣習にすぎません。それに従うかどうかは、あなたとあなたのチームの選択です。

私の個人的な意見では、選択は恣意的であり、この特定のスタイルはPSR-0 オートローダーの仕様と矛盾するため、次の理由により合格する必要があります。

  • PSR-0 はより広く使用されているため、他のすべての条件が同じであれば、従ったほうがよい規則になります。
  • 「.class.php」スタイルに従うということは、PSR-0 準拠のオートローダー (オンラインに多数あります) を変更せずに使用できないことを意味します。
于 2012-10-31T14:53:25.557 に答える
1

これは主に、オートローダが対象とするクラス ファイルであることを確認するために使用されます。多くの場合、テンプレートなどの他の .php ファイル、ブートストラップなどのスクリプト、または .php ファイルである構成ファイルがありますが、決してクラスとして解釈されるべきではありません。

于 2012-10-31T14:52:20.597 に答える
1

それ自体は機能ではありません。コードを整理し、さらに重要なことに、オートロードの問題を回避するための非常にシンプルで実用的な方法です。

という名前のクラスがUserあり、サイトにスクリプトによって生成されるページがあるとしますUser.php。クラスのインスタンスが必要な場合はUser、オートローダー関数が呼び出さUserれ、引数として取得されます。単に という名前のファイルを探すUser.php場合、クラス定義以外のファイルを含めることができます。そのため、クラス定義の名前に少し余分なものを付けることができます (そしてそうする必要があります)。[[class name]].class.php次に、ファイルをきちんと回避して、を探すようにオートローダーを作成できUser.phpます。

それがその要点です。もちろん、考慮すべき名前空間もあり、コードを整理するための最も現代的な方法であるディレクトリ ( set_include_path)

于 2012-10-31T14:57:33.217 に答える
0

これは、このファイルの内容をよりよく理解するためのものです。したがって、filename.class.php を見ると、このファイルには Class filename が含まれていることがわかります。

于 2012-10-31T14:53:34.247 に答える
0

クラスに「class.php」という名前を付けた場合にトリガーされる特別な言語サポートはありません。インデントにスペースを使用するかタブを使用するかなど、単なる規則です。

私が取り組んだプロジェクトの 1 つで、*.inc.php という名前のクラスと *.tpl.php というテンプレートがありました。

于 2012-10-31T14:53:46.667 に答える
0

私が 1999 年頃に php をコーディングしていたとしたら、これは従うべき優れた慣例でしょう。ファイルには好きな名前を付けることができますが、ファイル内のクラス名に「.php」を追加して名前を付けることをお勧めします。

于 2012-10-31T14:56:16.533 に答える
0

これは個人的な好みですが、実際には、同じ形式の他の人々のコードとの互換性を向上させるために、クラスに名前を付けて名前空間を付ける標準的な方法を提供するPSR-0標準を実際に調べます。

PSR-0 標準では、PHP ファイルはクラスにちなんで名付けられ、名前空間に関連するフォルダーに配置されます。

.class.phpPHP.net のマニュアルに記載されている方法よりも、この方法を採用することをお勧めします。

于 2012-10-31T14:56:16.807 に答える