Pytanie Struktura projektu dla PHP


Jestem nowy w PHP i chcę poznać strukturę katalogów dla projektów php. Mam doświadczenie w Javie iw java mamy src zawiera pliki źródłowe java, WEB-INF zawiera strony lib i jsp. Czy mamy podobną standardową strukturę katalogów w PHP? Również mamy warstwy w php, tak jak mamy warstwy w java (np. Web, Service, warstwy DAO)

Przeglądałem kilka linków. Ale każdy daje różne odpowiedzi.

Nie jestem pewien, czy możemy porównać oba języki. Chcę tylko trzymać się pewnych standardów.

Z góry dziękuję.


18
2017-10-29 02:47


pochodzenie




Odpowiedzi:


Nie. PHP jest tym, co z niego robisz. Mogą to być bardzo proste pliki płaskie lub dowolne.

Biorąc to pod uwagę, istnieje kilka uzgodnionych standardów kodowania, ale nie ma "egzekwowania" wspomnianych standardów. Nazywa się je PSR (PHP Standards Recommendation). Tutaj jest tło: http://net.tutsplus.com/tutorials/php/psr-huh/
Możesz przeglądać standardy jeden po drugim tutaj: http://www.php-fig.org/psr/

Większość głównych frameworków jest zgodna z tymi standardami, a jeśli zamierzasz z nich korzystać, łatwiej będzie przejść z przepływem.

Znowu każda struktura, projekt, wtyczka, program itp mają różne układy z różnymi strukturami projektu. Typowa struktura jest podobna do tej:

-framework_dir
-public_html
    -js
    -img
    -css
    -index.php
    -protected/private
        -controllers
        -models
        -views
        -etc

Następnie używają .htaccess plik, aby zablokować dostęp do chronionych katalogów. Ponownie, jest to po prostu wspólna reprezentacja, którą widziałem w kilku ramach. Jeśli robisz osobisty projekt, po prostu użyj czegoś, co jest dla ciebie wygodne. Każda struktura da ci inną bibliotekę lub sposób dostępu do danych. Nie ma "warstw", ale znowu każda struktura ma obiekty, które obsługują różne obszary (poczta e-mail, bazy danych, pamięć podręczna, http, logi itp.). Ponieważ są dziesiątki popularnych, to właśnie od Ciebie zależy, co pasuje do Twojej filozofii lub projektu. Obejrzyj kilka 5-minutowych blogów wideo, zobacz, co jives, a następnie uruchom test na kilka dni. Jeśli ci się nie podoba, przełącz się na inny.


22
2017-10-29 03:04



Dzięki za pomoc. Zrobiłem tak, jak sugerujesz. Mam jeden plik właściwości bazy danych, który chcę odczytać z kodu php i chcę ograniczyć dostęp użytkownika do przeglądarki. Czy możesz podać przykładowy plik .htaccess, w którym mogę wprowadzić zmiany. Próbowałem, ale daje mi wewnętrzny błąd serwera. - javafan


Niestety (lub nie?) Jesteś bardzo wolny z PHP. To zależy od Ciebie.

Oto moja struktura:

framework/
controllers/             
models/
configs/
files/
templates/
themes/
tmp/
index.php
init.php
.htaccess

Możesz kontrolować dostęp poprzez .htaccess.


3
2017-10-29 03:16



A co ze skryptami CI? - Bhargav Nanekalva
@NBhargav jakie masz skrypty CI? - Mr. B.
Jeśli chcę używać Continuous Integration z projektem PHP, w jaki sposób utrzymujesz folder skryptów CI. Gdzie i jak to zachowujesz? - Bhargav Nanekalva
@NBhargav Czym są "skrypty CI"? Masz na myśli "Travis CI"? - Mr. B.
Może to być dowolny CI. Używam Shippable. Jaki jest najlepszy sposób przechowywania skryptów CI? Na razie zachowuję wszystkie moje skrypty CI ci / umieszczone w katalogu głównym projektu. Jakieś sugestie? - Bhargav Nanekalva


Wraz z wynalazkiem kompozytora, ludzie mają teraz centralne miejsce do rejestrowania swoich projektów dla świata do konsumpcji, a inni ludzie mogą teraz spojrzeć na tę bazę kodu i zobaczyć podobieństwa.

Rezultat jest następujący: https://github.com/php-pds/skeleton

W skrócie:

If a package has a root-level directory for ...
                            ... then it MUST be named:
command-line executables    bin/
configuration files         config/
documentation files         docs/
web server files            public/
other resource files        resources/
PHP source code             src/
test code                   tests/

Ten standard nie zawiera dalszych zaleceń dotyczących tego, które katalogi muszą istnieć poniżej src lub public. Proponuję po prostu mieć jedną przestrzeń nazw poniżej srcoraz wdrożenie dowolnej dywersyfikacji "modeli", "kontrolerów" itp. poprzez wykonanie w pełni kwalifikowanej nazwy klasy, np. jeśli postanowiono mieć Projectname\Controller\WhateverController klasa, znajdowałaby się na ścieżce kompatybilnej z PSR-4 src/Controller/WhateverController.php i być ładowane automatycznie za pomocą Composer z "autoload":{"psr-4":{"Projectname\\": "src"}}.


2
2018-02-22 14:16





Mam tendencję do używania a Oparte na funkcjachstruktura folderów dla moich projektów backendowych. Każdy folder z funkcjami ma swój własny kontroler, menedżer i plik tras. To działa dobrze dla api-pobytów.

Na przykład mamy funkcję klienta z CustomerController, CustomerRepository, CustomerRoutes, ..

Moja struktura folderów wygląda następująco:

- build
-- phpdox.xml
-- phpmd.xml
-- phpunit.dist.xml
- config
- src
-- Customer
--- CustomerController.php
--- CustomerRepository.php
--- Customer.php
--- customer.routes.php
- tests
- vendor
composer.json
index.php
.htaccess

0
2017-07-13 12:43





jest to najlepsza struktura folderów:

this is the best folder structure


-3
2018-02-26 20:26