codename / core
This is THE core framework.
Requires (Dev)
- aws/aws-sdk-php: 3.*
- codename/core-test: *
- guzzlehttp/guzzle: ^7.0
- mikey179/vfsstream: ^1.6
- phpmailer/phpmailer: ^6.0
- phpunit/phpunit: ^9.0
- vimeo/psalm: ^4.0
Suggests
- aws/aws-sdk-php: For using S3 buckets
- phpmailer/phpmailer: for using the respective mail client
This package is auto-updated.
Last update: 2024-11-15 20:52:40 UTC
README
This framework for PHP applications delivers a vastly different approach to writing PHP applications for web and CLI.
The core principles and concepts are
- platform/runtime agnostic approach (cloud, local, containerized)
- abstraction and modularization
- vendor-lock-in avoidance
- interacting with data without committing to a specific storage technology
- reducing amount of time used for administering and managing databases
- giving guide rails to keep application components meaningful
- inheritance and extension, even on cross-project-/application-level
Additional packages, recommendations
While applications solely based on this package (codename/core
) do run on their own,
you might take advantage of several additional packages (sometimes even 'apps' on their own):
- architect: Repository, Package
- creating and migrating database/table schemas
- executing deployment and migration tasks
- core-ui: Repository, Package
- Generic CRUD and Form components
- UI-related components (web UI and CLI 'ui')
- core-io: Repository, Package
- data handling (load, transform, output), esp. for mass data
- rest: Repository, Package
- supporting components for writing REST-endpoints and REST-style apps (or mixed ones)
They're all installable and auto-loadable via Composer.
Core Concepts
NOTE: Documentation is still being worked on.
Essential terms
These are some basic and essential terms used in (almost) every core-base application:
The appstack defines inheritance, parent apps, libraries and extensions the application is composed of.
A context defines an accessible API, verb, module or command in a core-based application. For Web-Apps, this might be the first part of the URI (if you're rewriting the URL).
A model defines a data structure and can be backed by a RDBMS (like MySQL/MariaDB, SQLite, etc.), pure JSON data, an abstract data source or even a mapped ER-model. A model allows you to query data, filter it, change it (create, modify, delete) or build more complex 'queries' by adding models upon each other.
A bucket is an abstraction layer for using data storages (like a local directory, connections like FTP(S) and SFTP, S3 buckets, etc).