Giter Site home page Giter Site logo

laratraits's Introduction

Paul Felberbauer - Unsplash #tM16SjCYy84

Latest Version on Packagist License Coverage Status Laravel Octane Compatible

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 execute when and unless 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 using tap() but forever. You can exit the tap using ->target or a method name appended with AndUntap.
  • 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 with Htmlable 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

Models

  • ConditionFill: Fills an attribute if a given condition is truthy or falsy.
  • DefaultColumns: Adds a DefaultColumns 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, like fillFooAttribute().
  • 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 like this-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 an Enumerable to be saved as an integer o string, and retrieved back to an Enumerable 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. Append macro to a public static method and that's it, done.

Middleware

Blade

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.

laratraits's People

Contributors

darkghosthunter avatar dependabot-preview[bot] avatar kylekatarnls avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.