Мнения искали лучший способ организовать занятия в PHP - PullRequest
1 голос
/ 13 июня 2010

Я в значительной степени настроен на использование соглашения об именовании пакетов 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, потому что для него нет встроенной поддержки, и когда вы перемещаете вещи, вы нарушаете все.

Вариант 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

Единственным реальным недостатком здесь является то, что все классы находятся в одной папке, что может сбивать с толку для больших проектов.

Разыскиваются мнения, какой из них лучше или есть еще лучшие варианты?

Ответы [ 4 ]

1 голос
/ 13 июня 2010

Я всегда предпочитал файлы с префиксом с меньшим количеством папок, чтобы было меньше навигации, но это только мои личные предпочтения.

Если вы думаете, что захотите изменить его позже, вы можете создать центральный сценарий включения, например:

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


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

    }

Однако в долгосрочной перспективе это просто грязно, поэтому выбери меньшее из двух зол и иди.

1 голос
/ 13 июня 2010

Я бы предложил вариант 1, потому что в этом макете, в частности, есть разделение кодов, которое в итоге станет очень управляемой и гибкой системой.

1 голос
/ 13 июня 2010

Вы можете следовать стандартам Zend Framework, например

Option1 с автозагрузкой

новый App_Encryption_Cipher

в автозагрузка магический обратный вызов замените _ на '/' и выполните дополнительную проверку (файл существует? Мусор в имени файла ищет? Символы?)

Это, однако, немного неуклюже в PHP, потому что для него нет встроенной поддержки, и когда >> вы перемещаете вещи, вы нарушаете все включения.

Зависит от того, как вы планируете / разрабатываете свое приложение. в любом случае, когда речь заходит о рефакторинге, это не спасение:)

Я знаю, что вы привыкли к соглашениям об именах java, но если вы делаете что-то вроде (new com_mysite_myapp_encryption_cypher) хорошо, то писать все время становится болью

1 голос
/ 13 июня 2010

Это зависит не только от того, сколько у вас будет классов, но и от того, сколько сайтов и приложений у вас будет.Если у вас более одного сайта или приложения, было бы логичнее иметь папки, чтобы не запутаться.Если у вас есть только несколько классов (скажем, менее 20), может быть логичнее просто хранить их все в одной папке.Исходя из перечисленных выше классов и того, насколько вы хотите быть подробными, я бы пошел дальше и использовал каталоги, чтобы потом вы не смотрели на них и не говорили «Черт возьми, я бы использовал каталоги».Затем вы заканчиваете тем, что пишете бесполезные программы, которые будете использовать только один раз, чтобы вы могли изменить свою файловую структуру.

...