Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

updates #237

Merged
merged 6 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
240 changes: 213 additions & 27 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1,31 +1,217 @@
* @SonsOfPHP/Members
# If nothing matches, assign to me
* @JoshuaEstes

# Make Documentation Team
docs/ @JoshuaEstes
# Default documentation owner
/docs @JoshuaEstes

# Each project needs a Team
# ==============================================================================

# bard
/src/SonsOfPHP/Bard @JoshuaEstes
/docs/bard @JoshuaEstes

# ==============================================================================

# assert
/src/SonsOfPHP/*/Assert @JoshuaEstes
/docs/*/assert @JoshuaEstes

# autoloader
/src/SonsOfPHP/*/Autoloader @JoshuaEstes
/docs/*/autoloader @JoshuaEstes

# barcode
/src/SonsOfPHP/*/Barcode @JoshuaEstes
/docs/*/barcode @JoshuaEstes

# cache
/src/SonsOfPHP/*/Cache @JoshuaEstes
/docs/*/cache @JoshuaEstes

# clock
/src/SonsOfPHP/*/Clock @JoshuaEstes
/docs/*/clock @JoshuaEstes

# config
/src/SonsOfPHP/*/Config @JoshuaEstes
/docs/*/config @JoshuaEstes

# container
/src/SonsOfPHP/*/Container @JoshuaEstes
/docs/*/container @JoshuaEstes

# cookie
/src/SonsOfPHP/*/Cookie @JoshuaEstes
/docs/*/cookie @JoshuaEstes

# cqrs
/src/SonsOfPHP/*/Cqrs @JoshuaEstes
/docs/*/cqrs @JoshuaEstes

# crypt
/src/SonsOfPHP/*/Crypt @JoshuaEstes
/docs/*/crypt @JoshuaEstes

# csv
/src/SonsOfPHP/*/Csv @JoshuaEstes
/docs/*/csv @JoshuaEstes

# dotenv
/src/SonsOfPHP/*/Dotenv @JoshuaEstes
/docs/*/dotenv @JoshuaEstes

# error-handler
/src/SonsOfPHP/*/ErrorHandler @JoshuaEstes
/docs/*/error-handler @JoshuaEstes

# event-dispatcher
/src/SonsOfPHP/*/EventDispatcher @JoshuaEstes
/docs/*/event-dispatcher @JoshuaEstes

# event-sourcing
/src/SonsOfPHP/*/EventSourcing @JoshuaEstes
/src/SonsOfPHP/Bundle/EventSourcingBundle @JoshuaEstes
/docs/*/event-sourcing @JoshuaEstes

# feature-toggle
/src/SonsOfPHP/*/FeatureToggle @JoshuaEstes
/src/SonsOfPHP/Bundle/FeatureToggleBundle @JoshuaEstes
/docs/*/feature-toggle @JoshuaEstes

# file
/src/SonsOfPHP/*/File @JoshuaEstes
/docs/*/file @JoshuaEstes

# filesystem
/src/SonsOfPHP/*/Filesystem @JoshuaEstes
/src/SonsOfPHP/Bridge/Aws/Filesystem @JoshuaEstes
/src/SonsOfPHP/Bridge/LiipImagine/Filesystem @JoshuaEstes
/src/SonsOfPHP/Bundle/FilesystemBundle @JoshuaEstes
/docs/*/filesystem @JoshuaEstes

# form
/src/SonsOfPHP/*/Form @JoshuaEstes
/docs/*/form @JoshuaEstes

# http-client
/src/SonsOfPHP/*/HttpClient @JoshuaEstes
/docs/*/http-client @JoshuaEstes

# http-factory
/src/SonsOfPHP/*/HttpFactory @JoshuaEstes
/docs/*/http-factory @JoshuaEstes

# http-handler
/src/SonsOfPHP/*/HttpHandler @JoshuaEstes
/docs/*/http-handler @JoshuaEstes

# http-message
/src/SonsOfPHP/*/HttpMessage @JoshuaEstes
/docs/*/http-message @JoshuaEstes

# internationalization
/src/SonsOfPHP/*/Internationalization @JoshuaEstes
/docs/*/internationalization @JoshuaEstes

# json
/src/SonsOfPHP/*/Json @JoshuaEstes
/docs/*/json @JoshuaEstes

# link
/src/SonsOfPHP/*/Link @JoshuaEstes
/docs/*/link @JoshuaEstes

# lock
/src/SonsOfPHP/*/Lock @JoshuaEstes
/docs/*/lock @JoshuaEstes

# logger
/src/SonsOfPHP/*/Logger @JoshuaEstes
/src/SonsOfPHP/Bundle/LoggerBundle @JoshuaEstes
/docs/*/logger @JoshuaEstes

# mailer
/src/SonsOfPHP/*/Mailer @JoshuaEstes
/src/SonsOfPHP/Bundle/MailerBundle @JoshuaEstes
/docs/*/mailer @JoshuaEstes

# math
/src/SonsOfPHP/*/Math @JoshuaEstes
/docs/*/math @JoshuaEstes

# message-bus
/src/SonsOfPHP/*/MessageBus @JoshuaEstes
/docs/*/message-bus @JoshuaEstes

# mime
/src/SonsOfPHP/*/Mime @JoshuaEstes
/docs/*/mime @JoshuaEstes

# money
/src/SonsOfPHP/*/Money @JoshuaEstes
/src/SonsOfPHP/Bridge/Twig/Money @JoshuaEstes
/src/SonsOfPHP/Bundle/MoneyBundle @JoshuaEstes
/docs/*/money @JoshuaEstes

# navigation
/src/SonsOfPHP/*/Navigation @JoshuaEstes
/docs/*/navigation @JoshuaEstes

# pager
/src/SonsOfPHP/*/Pager @JoshuaEstes
/src/SonsOfPHP/Bridge/Doctrine/*/Pager @JoshuaEstes
/src/SonsOfPHP/Bundle/PagerBundle @JoshuaEstes
/docs/*/pager @JoshuaEstes

# pay
/src/SonsOfPHP/*/Pay @JoshuaEstes
/docs/*/pay @JoshuaEstes

# pdf
/src/SonsOfPHP/*/Pdf @JoshuaEstes
/docs/*/pdf @JoshuaEstes

# phar
/src/SonsOfPHP/*/Phar @JoshuaEstes
/docs/*/phar @JoshuaEstes

# phone-number
/src/SonsOfPHP/*/PhoneNumber @JoshuaEstes
/docs/*/phone-number @JoshuaEstes

# router
/src/SonsOfPHP/*/Router @JoshuaEstes
/docs/*/router @JoshuaEstes

# search
/src/SonsOfPHP/*/Search @JoshuaEstes
/docs/*/search @JoshuaEstes

# serializer
/src/SonsOfPHP/*/Serializer @JoshuaEstes
/docs/*/serializer @JoshuaEstes

# session
/src/SonsOfPHP/*/Session @JoshuaEstes
/docs/*/session @JoshuaEstes

# state-machine
/src/SonsOfPHP/*/StateMachine @JoshuaEstes
/src/SonsOfPHP/Bundle/StateMachineBundle @JoshuaEstes
/docs/*/state-machine @JoshuaEstes

# stdlib
/src/SonsOfPHP/*/Stdlib @JoshuaEstes
/docs/*/stdlib @JoshuaEstes

# user-agent
/src/SonsOfPHP/*/UserAgent @JoshuaEstes
/docs/*/user-agent @JoshuaEstes

# validator
/src/SonsOfPHP/*/Validator @JoshuaEstes
/docs/*/validator @JoshuaEstes

# Each component/contract needs a Team
/src/SonsOfPHP/**/Assert @JoshuaEstes
/src/SonsOfPHP/**/Cache @JoshuaEstes
/src/SonsOfPHP/**/Clock @JoshuaEstes
/src/SonsOfPHP/**/Container @JoshuaEstes
/src/SonsOfPHP/**/Cookie @JoshuaEstes
/src/SonsOfPHP/**/Common @JoshuaEstes
/src/SonsOfPHP/**/Cqrs @JoshuaEstes
/src/SonsOfPHP/**/EventDispatcher @JoshuaEstes
/src/SonsOfPHP/**/EventSourcing @JoshuaEstes
/src/SonsOfPHP/**/FeatureToggle @JoshuaEstes
/src/SonsOfPHP/**/Filesystem @JoshuaEstes
/src/SonsOfPHP/**/HttpFactory @JoshuaEstes
/src/SonsOfPHP/**/HttpHandler @JoshuaEstes
/src/SonsOfPHP/**/HttpMessage @JoshuaEstes
/src/SonsOfPHP/**/Json @JoshuaEstes
/src/SonsOfPHP/**/Link @JoshuaEstes
/src/SonsOfPHP/**/Logger @JoshuaEstes
/src/SonsOfPHP/**/Mailer @JoshuaEstes
/src/SonsOfPHP/**/Money @JoshuaEstes
/src/SonsOfPHP/**/Pager @JoshuaEstes
/src/SonsOfPHP/**/StateMachine @JoshuaEstes
/src/SonsOfPHP/**/Version @JoshuaEstes
# version
/src/SonsOfPHP/*/Version @JoshuaEstes
/docs/*/version @JoshuaEstes
20 changes: 17 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# start: Executables
COMPOSER = composer
PHP = php
DOCKER_COMPOSE = docker compose
COMPOSER = composer
PHP = php
# end: Executables

# start: Tools
Expand Down Expand Up @@ -83,7 +84,7 @@ clean: ## Remove all vendor folders, composer.lock files, and removes build arti
rm -rf src/SonsOfPHP/Bundle/*/vendor/ src/SonsOfPHP/Bundle/*/composer.lock
rm -rf src/SonsOfPHP/Component/*/vendor/ src/SonsOfPHP/Component/*/composer.lock
rm -rf src/SonsOfPHP/Contract/*/vendor/ src/SonsOfPHP/Contract/*/composer.lock
rm -rf src/tools/*/vendor/ src/tools/*/composer.lock
@#rm -rf src/tools/*/vendor/ src/tools/*/composer.lock

# This will upgrade the code to whatever the standards are
# NOTE: This may make changes to the source code
Expand Down Expand Up @@ -115,6 +116,19 @@ coverage: XDEBUG_MODE=coverage
coverage: PHPUNIT_OPTIONS=--coverage-html $(COVERAGE_DIR)
coverage: test ## Build Code Coverage Report

##---- Docker -------------------------------------------------------------------------
.PHONY: docker-up
docker-up: ## Start containers
@$(DOCKER_COMPOSE) up --detach --remove-orphans

.PHONY: docker-down
docker-down: ## Shutdown containers
@$(DOCKER_COMPOSE) down --remove-orphans

.PHONY: docker-logs
docker-logs: ## Show live logs
@$(DOCKER_COMPOSE) logs --tail=0 --follow

##---- Code Quality -------------------------------------------------------------------
.PHONY: lint
lint: ## Lint PHP files
Expand Down
16 changes: 16 additions & 0 deletions compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
####
# Various Services used for integration testing
####
services:
aws:
image: localstack/localstack
ports:
- 4566:4566
memcached:
image: memcached
ports:
- 11211:11211
redis:
image: redis
ports:
- 6379:6379
50 changes: 50 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,53 @@ Please submit [Pull Requests](https://github.com/SonsOfPHP/sonsofphp/pulls) to t
### Getting Help

Please visit the [Sons of PHP Organization Discussions](https://github.com/orgs/SonsOfPHP/discussions) section to ask questions and get more help.

# About Sons of PHP

Sons of PHP is a collection of various PHP projects that are split into
"Contracts" and "Components". After that, functionality is extended by using
"Bridges". Beyond that are plugins, bundles, and packages that are specifically
for various frameworks.

The main focus of Sons of PHP is small re-usable components.

## Contracts

Everything starts with contracts. The contracts are NOT meant to replace PSR
standards. Contracts are where all the interfaces are stored. There is no
executable code here. Contracts are a way to provide other developers the
ability to create components using a standard interface.

Contracts may also extend PSR standards as well as core PHP interfaces.

Contracts are also meant to be standalone. They do not require any other
contracts other than PSRs.

## Components

All components will use the contracts to implement the code. These are the main
packages that you will use in your projects.

Components are also meant to be standalone. Generally, there will be no
additional requirements. Some components may require other additional Sons of
PHP components, but for the most part, additional functionality is added by
Bridges.

## Bridges

A bridge will connect a Sons of PHP component to another library. For example,
the Pager component has additional packages that use Doctrine. The Filesystem
component also has an AWS S3 bridge that allows you to use AWS S3 buckets to
store files.

## Bundles, Plugins, etc.

Some frameworks out there (Symfony, Laravel, etc.) allow developers to install
bundles, plugins, etc. Sons of PHP has a few of these and the leverage the
various components and bridges.

## Additional Standalone Projects

Sons of PHP also has standalone projects such as Bard. These projects are
include many different Sons of PHP components and bridges, but also include
other libraries.
Loading
Loading