codename/core

There is no license information available for the latest version (v1.5.1) of this package.

This is THE core framework.

v1.5.1 2021-12-13 13:51 UTC

This package is auto-updated.

Last update: 2024-03-15 19:28:04 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).