1

私はJavaパッケージの命名規則を使用することにほとんど設定されています

com.website.app.whatever

しかし、PHPでこれを行うための最良の方法についてはよくわかりません。

オプション1:

ディレクトリ構造を作成する

com/
    mysite/
          myapp/
               encryption/
                         PublicKeyGenerator.class.php
                         Cipher.class.php
               Xml/
                         XmlHelper.class.php
                         XmlResponse.class.php

これがJavaのやり方であり、フォルダを使用して階層を編成します。ただし、これはPHPで少し不器用です。これは、PHPのネイティブサポートがなく、物事を移動するとすべてのインクルードが壊れてしまうためです。

オプション2

パッケージにピリオドを使用してクラスに名前を付けるため、名前はJavaの場合と同じですが、すべて同じディレクトリに配置できるため、__autoloadが簡単になります。

classes/
        com.mysite.myapp.encription.PublicKeyGenerator.class.php
        com.mysite.myapp.encription.Cipher.class.php
        com.mysite.myapp.xml.XmlHelper.class.php
        com.mysite.myapp.xml.XmlResponse.class.php

ここでの唯一の本当の欠点は、すべてのクラスが1つのフォルダーにあるため、大規模なプロジェクトでは混乱する可能性があることです。

求められた意見は、どれが最良ですか、それとも他にもっと良い選択肢がありますか?

4

4 に答える 4

1

次のようなZendFramework標準に従うことができます

自動ロードを使用したOption1

新しいApp_Encryption_Cipher

自動ロードマジックコールバックで、_を'/'に置き換え、さらにチェックします(ファイルが存在しますか?ファイル名にゴミがありますか?シンボルですか?)

ただし、これはPHPで少し不器用です。これは、ネイティブサポートがなく、>>物事を移動すると、すべてのインクルードが壊れてしまうためです。

アプリケーションの計画/設計方法によって異なります。とにかくリファクタリングに関しては逃げ道はありません:)

Javaの命名規則に慣れていることは知っていますが、(new com_mysite_myapp_encryption_cypher)のようなことをうまくやると、いつも書くのがちょっと面倒になります。

于 2010-06-13T16:40:45.680 に答える
1

これは、クラスの数だけでなく、サイトやアプリの数にも依存します。複数のサイトまたはアプリがある場合は、混乱しないようにフォルダーを用意する方が論理的です。クラスが数個(たとえば20未満)しかない場合は、それらすべてを1つのフォルダーに保持する方が論理的かもしれません。上記のクラスの種類と詳細に基づいて、後でディレクトリを見て「ディレクトリを使用したかったのに」と言わないように、ディレクトリを使用します。そうすると、ファイル構造を変更できるようにするために、一度しか使用しない役に立たないプログラムを作成することになります。

于 2010-06-13T16:28:26.260 に答える
1

オプション1をお勧めします。これは、特にそのレイアウトではコードが分離されているため、非常に管理しやすく柔軟なシステムになるためです。

于 2010-06-13T16:30:06.583 に答える
1

私は常にフォルダの数が少ないプレフィックス付きファイルを好むので、移動が少なくなりますが、それは私の個人的な好みです。

後で変更したい場合は、次のような中央のインクルードスクリプトを作成できます。

<?php do_include('encryption_cypher'); ?>


   function do_include($file){
    if($file== 'encryption_cypher')
        include('class/app/someotherfolder/encryption/cypher.php');

    }

ただし、これは長期的には厄介なので、2つの悪のうち小さい方を選んで行ってください。

于 2010-06-13T16:42:12.187 に答える