• Stars
    star
    243
  • Rank 166,489 (Top 4 %)
  • Language
    PHP
  • License
    MIT License
  • Created almost 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

πŸ—οΈ A tool to quickly set up the base files of a PHP library project.

PHP Library Starter Kit

A starter kit for quickly setting up a new PHP library package.

Source Code Download Package PHP Programming Language Read License Build Status Codecov Code Coverage Psalm Type Coverage

About

ramsey/php-library-starter-kit is a package that may be used to generate a basic PHP library project directory structure, complete with many of the starting files (i.e. README, LICENSE, GitHub issue templates, PHPUnit configuration, etc.) that are commonly found in PHP libraries. You may use the project directory that's created as a starting point for creating your own PHP libraries.

This project adheres to a code of conduct. By participating in this project and its community, you are expected to uphold this code.

Usage

composer create-project ramsey/php-library-starter-kit YOUR-PROJECT-NAME

Running this command will create a new repository containing the same files and structure as this repository. Afterward, it will run the Ramsey\Dev\LibraryStarterKit\Wizard::start() method to set up the project, which will walk you through a series of questions and make changes to files based on your answers. When complete, it will remove the ./src/LibraryStarterKit and ./tests/LibraryStarterKit directories, leaving everything else in place with an initial commit.

Using An Existing Answers File

When executing create-project, if you exit the program while in the middle of the question prompts, you might notice it creates a .starter-kit-answers file in the project directory. When you return later and run composer starter-kit, it will use this file to pre-fill any questions you've already answered. Once finished, the starter kit removes this file.

You may also use an existing answers file to provide all your answers to the prompts, including skipping the question prompts. To do this, set an environment variable with the path to your answers file:

STARTER_KIT_ANSWERS_FILE=/path/to/starter-kit-answers.json

To skip the question prompts, make sure you include the skipPrompts property in the answers file, and set it to true.

The answers file is a JSON object, consisting of all the public properties found in Ramsey\Dev\LibraryStarterKit\Answers.

For example:

{
    "authorEmail": "[email protected]",
    "authorHoldsCopyright": true,
    "authorName": "Author Smith",
    "authorUrl": "https://example.com/",
    "codeOfConduct": "Contributor-2.0",
    "codeOfConductCommittee": null,
    "codeOfConductEmail": "[email protected]",
    "codeOfConductPoliciesUrl": null,
    "codeOfConductReportingUrl": null,
    "copyrightEmail": "[email protected]",
    "copyrightHolder": "Acme, Inc.",
    "copyrightUrl": "https://example.com/acme",
    "copyrightYear": "2021",
    "githubUsername": "example",
    "license": "MIT",
    "packageDescription": "An awesome library that does stuff.",
    "packageKeywords": [
        "awesome",
        "stuff"
    ],
    "packageName": "acme/awesome",
    "packageNamespace": "Acme\\Awesome",
    "projectName": "My Awesome Library",
    "securityPolicy": true,
    "securityPolicyContactEmail": "[email protected]",
    "securityPolicyContactFormUrl": null,
    "skipPrompts": true,
    "vendorName": "acme"
}

Contributing

Contributions are welcome! To contribute, please familiarize yourself with CONTRIBUTING.md.

Coordinated Disclosure

Keeping user information safe and secure is a top priority, and we welcome the contribution of external security researchers. If you believe you've found a security issue in software that is maintained in this repository, please read SECURITY.md for instructions on submitting a vulnerability report.

FAQs

Why did you include package/tool x and not y?

I created this project starter kit for my own uses, and these are the common files, packages, and tools I use in my PHP libraries. If you like what you see, feel free to use it. If you like some of it but not all, fork it and customize it to fit your needs. I hope you find it helpful!

Copyright and License

ramsey/php-library-starter-kit is copyright Β© Ben Ramsey and licensed for use under the terms of the MIT License (MIT). Please see LICENSE for more information.

More Repositories

1

uuid

❄️ A PHP library for generating universally unique identifiers (UUIDs).
PHP
12,432
star
2

collection

πŸ—‚οΈ A PHP library for representing and manipulating collections.
PHP
1,105
star
3

uuid-doctrine

β„οΈπŸ—„οΈ Allow the use of a ramsey/uuid UUID as Doctrine field type.
PHP
892
star
4

array_column

Provides functionality for array_column() to projects using PHP earlier than version 5.5.
PHP
372
star
5

composer-install

🎁 A GitHub Action to streamline installation of PHP dependencies with Composer.
Shell
227
star
6

conventional-commits

πŸͺ€ A PHP library for creating and validating commit messages according to the Conventional Commits specification. Includes a CaptainHook plugin!
PHP
181
star
7

composer-repl

🐚 A REPL for PHP built into Composer (using PsySH)
100
star
8

macos-vagrant-box

Scripts to generate Vagrant boxes for macOS
Shell
97
star
9

devtools

🧰 A Composer plugin to aid PHP library and application development.
66
star
10

identifier

A PHP library for generating and working with identifiers, including UUIDs, ULIDs, and Snowflakes
PHP
40
star
11

uuid-console

A console application for generating UUIDs with ramsey/uuid.
PHP
39
star
12

vagrant-php-src-dev

Uses Vagrant to provision a basic virtual environment for hacking on the PHP core.
Puppet
37
star
13

jenkins-php

A meta package for the PHP Quality Assurance Toolchain tools required by the Template for Jenkins Jobs for PHP Projects, http://jenkins-php.org/
35
star
14

php-rfcs

PHP
34
star
15

http-range

A PHP library for parsing and handling HTTP range requests.
PHP
31
star
16

laravel-oauth2-instagram

A Laravel 5 service provider for league/oauth2-instagram
PHP
29
star
17

beatles

The Beatles programming language
24
star
18

devtools-lib

πŸ§°πŸ“š The library behind ramsey/devtools, allowing for extension of the ramsey/devtools Composer plugin.
PHP
21
star
19

twig-codeblock

Syntax highlighting for Twig with the {% codeblock %} tag.
PHP
19
star
20

vnderror

application/vnd.error builder/formatter for PHP 5.3+
PHP
17
star
21

oauth2-example

Full Laravel source application for example in "Mastering OAuth 2.0" articles and talks.
PHP
17
star
22

php-museum-exhibits

HTML
15
star
23

gitea-environment

Shell
9
star
24

ext-ecma_intl

A PHP implementation of the ECMAScript 2023 Internationalization API Specification (ECMA-402)
C
9
star
25

coding-standard

🧼 A common coding standard for @ramsey's PHP libraries.
PHP
8
star
26

math

This package is abandoned. Try brick/math instead: https://github.com/brick/math
PHP
8
star
27

pdo_oci8

PHP userspace classes for Oracle to mimic the PDO interface while wrapping the oci8 functions.
PHP
7
star
28

dotfiles

The dotfiles I use on my systems
Vim Script
7
star
29

str-begins-ends

Provides functions to test whether a string begins or ends with a certain substring.
PHP
5
star
30

rhumsaa-uuid

NO LONGER MAINTAINED. Use ramsey/uuid instead.
PHP
5
star
31

jupyter-php-docker

Dockerfile
4
star
32

MantisBT-HipChat

HipChat integration for Mantis bug tracker
PHP
3
star
33

sculpin-codeblock

A Sculpin bundle for using the ramsey/twig-codeblock extension for defining blocks of code for syntax highlighting (with Pygments) and more.
PHP
2
star
34

php-icu-testing

Dockerfile
2
star
35

http2-php-playground

PHP
2
star
36

uuid-benchmark

Benchmark tests for ramsey/uuid
PHP
2
star
37

docker-pennmush

A Docker image for PennMUSH, a MUD-style server.
Shell
2
star
38

docker-jupyter-php

Shell
2
star
39

composer-repl-lib

πŸšπŸ“š The library behind ramsey/composer-repl, allowing for extension of the ramsey/composer-repl Composer plugin and non-plugin use of the repl command.
PHP
2
star
40

composer-plugin-issue

This repo illustrates a problem I discovered with using Composer plugins.
1
star
41

gimmebutton

A Gimme Bar toolbar button for Firefox
Shell
1
star
42

website

My personal website
PHP
1
star
43

api-toolbox

Examples used in my "A Toolbox for APIs & Integrations" presentation.
PHP
1
star
44

base

Arbitrary base conversion and encoding/decoding for all the bases that are belong to us.
PHP
1
star
45

matrix-environment

Shell
1
star