Skip to content

faclib/php-project-starter

Repository files navigation

PHP Project Starter

Latest Stable Version

PHP Project Starter is a command line tool that allows developers to quickly create PHP applications that use common conventions and best-in-breed development tools. The goals of this application are to guide developers towards best practices and get them from zero-to-CI in seconds.

The applications created by this tool have an opinionated directory structure, build system, and pre-configured set of services connections. Refer to the Tools And Conventions and Directory Structure sections below for more details.

Usage

Install The Command Line Tool

curl -sLO https://github.com/cpliakas/php-project-starter/releases/download/0.2.8/php-project.phar

Run php php-project.phar --help to see all options supported by the command line tool and ensure that installation succeeded.

It is also common practice to place the php-project.phar file in a location that makes it easier to access, for example /usr/local/bin, and renaming it to php-project. Ensure the file is executable by running chmod 755 so that you don't have to prefix the command with php.

Create A New Project

php php-project.phar \
  --label="My Project" \
  --description="A longer description for My Project" \
  --namespace="My\Project" \
  cpliakas/my-project

Pass the --jenkins-url option to post a job to Jenkins that consumes the build artifacts.

Make A Repository On GitHub

Make a new repository matching the project name (e.g. cpliakas/my-project) and push your code. Note that the origin remote is already set in the repository.

cd ../path/to/working-copy
git push -u origin master

Configure Other Services

Using Apache Ant

Running ant in the newly created project's root directory will download Composer, install development dependencies, run PHPUnit, and generate a code coverage report and software metrics in the ./build directory.

The main targets can be found by running ant -p and are listed below:

  • clean: Cleanup build artifacts
  • clean-src: Cleanup dependency source code
  • clean-all: Cleanup build artifacts and dependency source code
  • composer: Run composer update
  • lint: Perform syntax check of sourcecode files
  • pdepend: Calculate software metrics using PHP_Depend
  • phpcpd: Find duplicate code using PHPCPD
  • phploc: Measure project size using PHPLOC
  • phpmd: Perform mess detection using PHPMD, print human readable output.
  • phpmd-ci: Perform mess detection using PHPMD, creating a log file for the CI server
  • phpunit: Run unit tests with PHPUnit

Common command line options that set Ant properties are listed below:

  • -Dcomposer.noselfupdate=1: Do not run composer self-update during the build
  • -Dcomposer.noupdate=1: Do not run composer update during the build

Tools And Conventions

Tools and conventions that this template expects the PHP project being started to embrace.

Dependency Management

Build & CI

Code Quality

Services

Conventions

Directory Structure

PHP Project

.
|-- src/
|-- test/
|-- .coveralls.yml
|-- .editorconfig
|-- .gitignore
|-- .travis.yml
|-- build.xml
|-- composer.json
|-- phpmd.xml
|-- phpunit.xml
|-- LICENSE
`-- README.md

Build Artifacts

.
`-- build/
    |-- coverage/
    |   `--index.html
    |-- logs/
    |   |-- clover.xml
    |   |-- jdepend.xml
    |   |-- junit.xml
    |   |-- phploc.csv
    |   |-- pmd-cpd.xml
    |   `-- pmd.xml
    |-- pdepend/
    |   |-- dependencies.svg
    |   `-- overview-pyramid.svg
    `-- composer.phar

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages