Download the PHP package astral-php/astral-extend-orm without Composer

On this page you can find all versions of the php package astral-php/astral-extend-orm. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package astral-extend-orm

astral-php/astral-extend-orm

Extension ORM pour Astral — Enrichit les modèles existants sans toucher au framework.

PHP


À propos

astral-extend-orm est une extension opt-in pour Astral MVC.
Elle ajoute sur les modèles les capacités qui manquent au système anémique de base :

Feature Description
HasFillable Hydratation de masse sécurisée via liste blanche
HasCasts Conversion de types déclarative (datetime, bool, array…)
HasAccessors Accessors et Mutators par convention de nommage
HasHidden Sérialisation contrôlée toArray() / toJson() avec $hidden / $visible
HasRelations Relations déclaratives (belongsTo, hasMany) — sans lazy-loading

Philosophie :


Installation

Requiert PHP 8.1+ et une app basée sur astral-php/astral-core ^1.2.


Démarrage rapide

1. Faire hériter votre modèle de Model

Remplacez la classe parente de vos modèles Astral :

2. Aucune modification requise ailleurs

Les DAOs, les migrations, les routes et les providers restent inchangés.
PDO::FETCH_CLASS continue de fonctionner normalement puisque Model est une classe PHP ordinaire avec des propriétés publiques.


Référence complète


HasFillable — Hydratation de masse

Permet d'hydrater un modèle depuis un tableau (ex: $request->body) en n'autorisant que les champs déclarés dans $fillable.

Configuration

Usage

API

Méthode Description
fill(array $data): static Hydrate l'instance, retourne $this
isFillable(string $key): bool Vérifie si un champ est dans $fillable
getFillable(): array Retourne la liste $fillable
static make(array $data): static Crée + hydrate en une ligne
static collection(array $rows): array Crée une liste d'instances depuis un tableau de tableaux

Les champs absents de $fillable sont ignorés silencieusement.
id, created_at, updated_at ne doivent généralement pas être dans $fillable.


HasCasts — Conversion de types

Déclare les conversions de types sur les propriétés du modèle.
Approche explicite : cast() — pas de __get magique.

Types supportés

Type Conversion
'int' / 'integer' (int)
'float' / 'double' (float)
'bool' / 'boolean' (bool)
'string' (string)
'array' json_decode() si string, sinon retour direct
'datetime' DateTimeImmutable depuis string, int (timestamp) ou DateTimeInterface
'date' DateTimeImmutable à minuit
'timestamp' int Unix timestamp

Configuration

Usage

API

Méthode Description
cast(string $field): mixed Retourne la valeur castée (ou brute si pas de cast déclaré)
castAll(): array Retourne tous les champs avec casts appliqués
hasCast(string $field): bool Vérifie si un cast est déclaré
getCastType(string $field): ?string Retourne le type de cast déclaré

cast() retourne null si la valeur de la propriété est null.
Une CastException est levée si le type de cast est inconnu.


HasAccessors — Accessors & Mutators

Définit des champs calculés (accessors) et des transformations à l'écriture (mutators) par convention de nommage.
Approche explicite : get() / set() — pas de __get/__set.

Convention

field_name (snake_case) est converti en FieldName (StudlyCase) automatiquement.

Exemple — Modèle User

Usage

API

Méthode Description
get(string $field): mixed Accessor si défini, sinon propriété brute
set(string $field, mixed $value): static Mutator si défini, sinon assignation directe
hasAccessor(string $field): bool Vérifie si un accessor existe
hasMutator(string $field): bool Vérifie si un mutator existe

HasHidden — Sérialisation contrôlée

Contrôle les champs exposés lors de la sérialisation en tableau ou JSON.
Essentiel pour les réponses API : éviter d'exposer password, remember_token, etc.

Mode $hidden (liste noire — recommandé)

Mode $visible (liste blanche — strict)

Usage

API

Méthode Description
toArray(array $except = []): array Tableau filtré selon $visible / $hidden
toJson(int $flags = 0): string JSON filtré (accepte JSON_PRETTY_PRINT etc.)
withHidden(): array Tableau complet sans aucune exclusion

Les propriétés internes des traits (fillable, casts, hidden, visible) sont toujours exclues de toArray() et withHidden().


HasRelations — Relations déclaratives

Déclare les relations sur le modèle (sens sémantique), résout explicitement dans le contrôleur ou le DAO (pas de lazy-loading, pas de N+1 involontaire).

BelongsTo — N→1

HasMany — 1→N

Eager Loading — évite le problème N+1

Pour charger les relations d'une liste d'entités sans N+1, utilisez HasMany::eagerLoad() :

Total : 2 requêtes quelle que soit la taille de la liste.

Auto-déduction du nom de table

belongsTo et hasMany devinent le nom de table si vous ne le fournissez pas :

Classe Table déduite
Category categories
Article articles
Tag tags
CategoryType category_types

Si votre table ne suit pas cette convention, passez le nom explicitement.

API

BelongsTo

Méthode Description
resolve(PDO $pdo): ?object Exécute la requête, retourne l'entité ou null

HasMany

Méthode Description
resolve(PDO $pdo): array Exécute la requête, retourne la liste
static eagerLoad(...): array Charge les relations de toute une liste (2 requêtes)

Exemples complets

Modèle Article complet

Modèle User complet

Contrôleur — store() avec fill

Contrôleur API — réponse sérialisée

Vue — affichage avec cast


Utilisation des traits individuellement

Si vous ne souhaitez pas hériter de Model, vous pouvez utiliser chaque trait séparément sur vos propres classes :


Tests


Structure du dépôt


Tests

Suite obligatoire avant publication Packagist / tag.


Compatibilité

astral-core PHP astral-extend-orm
^1.2 8.1 → 8.4 0.x

Licence

MIT — voir LICENSE


All versions of astral-extend-orm with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package astral-php/astral-extend-orm contains the following files

Loading the files please wait ...