Laratraits
Laratraits is a Laravel package containing useful traits and some classes to use along your Models, Controllers, Service Providers and what not. Take a look!
Requirements
- Laravel 8.0.
- PHP 7.4, PHP 8.0 or later.
Installation
Fire up Composer and that's it.
composer require darkghosthunter/laratraits
This package doesn't use any Service Provider.
Usage
Just check any of these traits. Each one and other classes contains a brief explanation on how to use in the first lines.
If you want to use one, just do it.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use DarkGhostHunter\Laratraits\SavesToCache;
use DarkGhostHunter\Laratraits\Eloquent\UsesUuid;
class Post extends Model
{
use UsesUuid;
use SavesToCache;
// ...
}
What it includes
Before installing, take a look into the list. If you're only using one, just copy and paste it in your project, no problem, as each trait and file includes a copy of the MIT License.
Just remember to change the namespace if you're copy-pasting them!
Traits for everything
Comparable
: Allows a class or its properties to be compared to a list of values.ConditionCalls
: Allows an object instance to executewhen
andunless
logic.EnumerableStates
: Allows a class instance to have a single allowed state.FiresItself
: Allows an Event to be fired conveniently.Multitaps
: Makes all class methods chainable, like usingtap()
but forever. You can exit the tap using->target
or a method name appended withAndUntap
.PipesThrough
: Allows a class to be piped through a pipeline immediately or to a queue.RegeneratesCache
: Stores a copy of an object (or part of it) avoiding data-races among other processes.RendersFromMarkdown
: Takes a given class property to parse Markdown text and return HTML. Compatible withHtmlable
interface.SavesToCache
: Saves the object (or part of it) to the cache.SavesToSession
: Saves the object (or part of it) to the session.SavesToStorage
: Saves the object (or part of it) to the storage.SecurelyJsonable
: Adds a signature to the Jsonable object that is checked to at unserialization to avoid tampering.SendsToHttp
: Sends the object (or part of it) through an HTTP Request.ShadowCall
: Allows the next method to be called depending on a condition.ThrottleMethods
: Throttles a given method in a class transparently.Throws
: Allows a Throwable to throw itself if a given condition is truthy or falsy.ValidatesItself
: Validates an incoming data using self-contained rules.
Useful classes
Enumerable
: Lists and controls a state from a list. Useful for casting enums.
Models
ConditionFill
: Fills an attribute if a given condition is truthy or falsy.DefaultColumns
: Adds aDefaultColumns
Global Scope to the Model selecting only given default columns, unless overrun manually in the query.FillsAttributes
: Automatically fills the Model with values by each method name, likefillFooAttribute()
.FromRequest
: One-liners to make, create, or update models from the HTTP Request.HasSlug
: Allows a Model to be bound to routes using the slug likethis-is-the-model
. Must use an exclusive slug column in the model table.ModelType
: Useful for Models that share a single table but have different "types", like Publications: Article, Post, Note, etc.NeighbourRecords
: Allows to easily get a complete "next" and "previous" record from a given model, without using pagination.UsesUuid
: Automatically fills the UUID on the Model. Comes with an optional Eloquent Query Builder local scopes. You can override the UUID generation.
Casts
CastEnumerable
: Allows anEnumerable
to be saved as an integer o string, and retrieved back to anEnumerable
instance.CastsRepository
: Allows a Config Repository string to be saved a JSON, and retrieved back as Config Repository.CastsBase64
: Allows a binary value to be saved as BASE64 in the database, and retrieved back as binary.
Global Scopes
MacrosEloquent
: Automatically adds selective Macros to the Eloquent Builder instance itself, instead of globally, when using a Global Scope. Appendmacro
to a public static method and that's it, done.
Middleware
CacheStaticResponse
: Caches static responses, avoiding running the controller logic, for a given time.ShareAuthenticatedUser
: Shares the authenticated user across all views.ValidateConsumableSignature
: Makes signed routes work only one time, except on client or server errors.
Blade
RegistersFileDirective
: Easily register a directive using a PHP file contents.
Migrations:
PublishesMigrations
: Allows a package to register migrations automatically as publishable assets.
Missing a trait?
You can make an issue with your proposal. Consider the logic must be contained inside a trait, or use an auxiliar class to avoid polluting the class with multiple methods. PRs are preferred with tests.
License
This package is open-sourced software licensed under the MIT license.
Laravel is a Trademark of Taylor Otwell. Copyright © 2011-2020 Laravel LLC.