Download the PHP package pacificinternet/laravel-hashslug without Composer

On this page you can find all versions of the php package pacificinternet/laravel-hashslug. 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 laravel-hashslug

Laravel HashSlug (Hashids)

Forked from https://gitlab.com/balping/laravel-hashslug v2.2.4

This package is useful to hide real model ids in urls using Hashids. A hashid (slug) is deterministically generated given an application, a model class and an id. Also, given a hashid (slug), the real id can be decoded. Thus no extra field needs to be stored in the database, ids are decoded on each request.

Generates urls on the fly

Decodes hashids and finds models on the fly

Hashslugs have the following properties:

  1. It is guaranteed that hashslugs are unique per id
  2. It is guaranteed that for different models, different series of hashslugs are generated (a post of id 1 will have a different hashslug as a comment with id 1)
  3. It is guaranteed that for different installations, different series of hashslugs are generated (depending on app key in the .env file)

It is important to note that hashids are not random, nor unpredictable. Do not use this package if that's a concern. Quoting from hashids.org:

Do you have a question or comment that involves "security" and "hashids" in the same sentence? Don't use Hashids.

However, although hashslug encoding depends on the app key, it cannot be exposed by an attacker, since it's sha256 hashed before passing it to Hashids. Your app key is safe.

Installation

Versions

Laravel Hashslug
5.4.* 2.0.*
5.5 - 5.8 2.1.*
6.* 2.1.*
7.* 2.2.*
8.* 2.2.*
9.* 2.2.*
10.* 2.2.*

Note: This package requires either the BC Math or GMP extension in order to work.

Usage

Include trait on a model that you wish to have hashid slugs to hide numeric incremental ids.

After this, functions slug(), findBySlug($slug) and findBySlugOrFail($slug) are added to your model.

Every time you generate a url using Laravel's helpers, instead of numeric ids, hashids are used (with the default length of 5 characters):

Then you can resolve the model by the slug.

You can use implicit model binding too. You don't have to do anything, it works automatically!

Just typehint models and they are automatically resolved:

If you need explicit model binding, that's also convenient:

Customisation

Salts

The uniqueness of hashslug series per model and app installation depends on having unique salts.

By default, the salt passed to Hashids depends on the app key defined in .env and the class name of the model.

Application salt

To change the 'application salt', create file config/hashslug.php then add the following code:

Keep in mind that you don't have to configure this, but unless you do and your app key is changed, every url having hashslugs in it will change. This might be a problem for example if a user bookmarked such a url.

Model salt

To use a custom model salt instead of the classname:

This might be a good idea to do, if you have several extended classes of the same model and you need hashslugs to be consistent.

Padding

Change the minimum length of a slug (default: 5)

You can set the minimum length of a slug globally too, by adding the following line to config/hashslug.php:

Alphabet

The default alphabet is abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890

This can be changed:

You can set the alphabet globally too, by adding the following line to config/hashslug.php:

Prefix

You can set a custom prefix to hashslug:

This would return slugs in the form of post-K4Nkd.

Similar packages and how is this one different

Laravel Hashids

Provides a facade, but no built-in routing. Allows multiple salts through "connections". Unnecessary overhead if you need hashids only for slugging models.

Eloquent-Hashids

Mostly identical to this package in functionality, however by using the above package, it adds an unnecessary layer of complexity. Makes it optional to use route bindings.

Laravel-Hashid

Provides a facade, similar to the above one PLUS a trait similar to this package. No no built-in routing. No tests provided. Unnecessary overhead if you need hashids only for slugging models.

Hashids for Laravel 5

Facade only. Not as good as the first one, since it allows you to have only one salt.

Optimus

Uses different obfuscation method. Facade (and class) only. Nothing related to routing or model traits. It is said to be faster than hashids.

Laravel FakeID

Simliar to this package, but built on Optimus. Facade and trait provided, as well as a special route function. Good tests.

License

This package (the trait and the test file) is licensed under GPLv3.


All versions of laravel-hashslug with dependencies

PHP Build Version
Package Version
Requires hashids/hashids Version ^3.0|^4.0|^5.0
illuminate/database Version 5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0
illuminate/routing Version 5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0
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 pacificinternet/laravel-hashslug contains the following files

Loading the files please wait ....