Git Product home page Git Product logo

hashids's Introduction

Hashids for Laravel 4

This package uses the classes created by hashids.org

Generate hashes from numbers, like YouTube or Bitly. Use hashids when you do not want to expose your database ids to the user.

Installation

Begin by installing the package through Composer. Edit your project's composer.json file to require mitch/hashids.

"require": {
  "mitch/hashids": "1.x"
}

Next use Composer to update your project from the the Terminal:

php composer.phar update

Once the package has been installed you'll need to add the service provider. Open your app/config/app.php configuration file, and add a new item to the providers array.

'Mitch\Hashids\HashidsServiceProvider'

After doing this you also need to add an alias. In your app/config/app.php file, add this to the aliases array.

'Hashids' => 'Mitch\Hashids\Hashids'

Now last but not least you need to publish to package configuration from your Terminal:

php artisan config:publish mitch/hashids

Usage

Once you've followed all the steps and completed the installation you can use Hashids.

Encoding

You can simply encrypt on id:

Hashids::encode(1); // Creating hash... Ri7Bi

or multiple..

Hashids::encode(1, 21, 12, 12, 666); // Creating hash... MMtaUpSGhdA

Decoding

It's the same thing but the other way around:

Hashids::decode('Ri7Bi');

// Returns
array (size=1)
  0 => int 1

or multiple..

Hashids::decode('MMtaUpSGhdA');

// Returns
array (size=5)
  0 => int 1
  1 => int 21
  2 => int 12
  3 => int 12
  4 => int 666

Injecting Hashids

Now it's also possible to have Hashids injected into your class. Lets look at this controller as an example..

class ExampleController extends BaseController
{
    protected $hashids;

    public function __construct(Hashids\Hashids $hashids)
    {
        $this->hashids = $hashids;
    }

    public function getIndex()
    {
        $hash = $this->hashids->encode(1);
        return View::make('example.index', compact('hash'));
    }
}

The original classname and namespace has been bound in the IoC container to return our instantiated Hashids class.

Using IoC

Create a Hashids instance with the IoC

App::make('Hashids\Hashids')->encode(1);

That's it!

Documentation about Hashids can be found here.

Thanks to Ivan Akimov (@ivanakimov) for making Hashids. All credits for the Hashids package go to him.

hashids's People

Contributors

garbee avatar kostaspt avatar mitchellvanw avatar pasvaz avatar rmobis avatar tplaner 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

hashids's Issues

Problems loading config

Unfortunatly i'm unable to load hashids, the following error occurs.

Symfony \ Component \ Debug \ Exception \ FatalErrorException
Using $this when not in object context

The error occurs on line 45 of HashidsServiceProvider.php.
I was able to fix (workaround) this, bij replacing line 45 by:

return \Config::get('hashids::salt');

Any idea why this error occurs?

Laravel 5

This package won't install on Laravel 5.

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: remove laravel/framework 5.0.x-dev
    - mitch/hashids 1.0 requires illuminate/support 4.x -> satisfiable by laravel/framework[4.0.x-dev, 4.1.x-dev, 4.2.x-dev], illuminate/support[4.0.x-dev, 4.1.x-dev, 4.2.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9, v4.1.0, v4.1.1, v4.1.10, v4.1.11, v4.1.12, v4.1.13, v4.1.14, v4.1.15, v4.1.16, v4.1.17, v4.1.18, v4.1.19, v4.1.2, v4.1.20, v4.1.21, v4.1.22, v4.1.23, v4.1.24, v4.1.25, v4.1.26, v4.1.27, v4.1.28, v4.1.29, v4.1.3, v4.1.30, v4.1.4, v4.1.5, v4.1.6, v4.1.7, v4.1.8, v4.1.9, v4.2.0-BETA1, v4.2.1, v4.2.2, v4.2.3, v4.2.4, v4.2.5, v4.2.6, v4.2.7, v4.2.8, v4.2.9].
    - mitch/hashids 1.x-dev requires illuminate/support 4.x -> satisfiable by laravel/framework[4.0.x-dev, 4.1.x-dev, 4.2.x-dev], illuminate/support[4.0.x-dev, 4.1.x-dev, 4.2.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9, v4.1.0, v4.1.1, v4.1.10, v4.1.11, v4.1.12, v4.1.13, v4.1.14, v4.1.15, v4.1.16, v4.1.17, v4.1.18, v4.1.19, v4.1.2, v4.1.20, v4.1.21, v4.1.22, v4.1.23, v4.1.24, v4.1.25, v4.1.26, v4.1.27, v4.1.28, v4.1.29, v4.1.3, v4.1.30, v4.1.4, v4.1.5, v4.1.6, v4.1.7, v4.1.8, v4.1.9, v4.2.0-BETA1, v4.2.1, v4.2.2, v4.2.3, v4.2.4, v4.2.5, v4.2.6, v4.2.7, v4.2.8, v4.2.9].
    - Can only install one of: laravel/framework[5.0.x-dev, 4.0.x-dev].
    - Can only install one of: laravel/framework[5.0.x-dev, 4.1.x-dev].
    - Can only install one of: laravel/framework[5.0.x-dev, 4.2.x-dev].
    - don't install illuminate/support 4.1.x-dev|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support 4.2.x-dev|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.0|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.1|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.10|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.11|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.12|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.13|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.14|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.15|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.16|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.17|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.18|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.19|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.2|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.20|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.21|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.22|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.23|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.24|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.25|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.26|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.27|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.28|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.29|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.3|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.30|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.4|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.5|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.6|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.7|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.8|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.1.9|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.2.0-BETA1|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.2.1|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.2.2|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.2.3|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.2.4|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.2.5|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.2.6|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.2.7|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.2.8|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.2.9|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support 4.0.x-dev|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.0|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.0-BETA2|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.0-BETA3|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.0-BETA4|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.1|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.10|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.2|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.3|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.4|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.5|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.6|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.7|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.8|don't install laravel/framework 5.0.x-dev
    - don't install illuminate/support v4.0.9|don't install laravel/framework 5.0.x-dev
    - Installation request for laravel/framework ~5.0 -> satisfiable by laravel/framework[5.0.x-dev].
    - Installation request for mitch/hashids 1.x -> satisfiable by mitch/hashids[1.0, 1.x-dev].

Move settings to separate config

Currently it requires changes to start.php, which will get overwritten whenever you upgrade bundles. Instead, please implement support for application/config/hashids.php

Unable to Install, Version Satisfiable

Hi,

i've put my require like this '' mitch/hashids": "dev-master" ''
but the result error like this when running composer update

Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Removal request for hashids/hashids == 0.3.9999999.9999999-dev
- Removal request for hashids/hashids == 9999999-dev
- mitch/hashids dev-master requires hashids/hashids * -> satisfiable by hashids/hashids[0.3.x-dev, dev-master].
- Installation request for mitch/hashids dev-master -> satisfiable by mitch/hashids[dev-master].

Composer Errors

Hey there,

If I set composer require as:

"mitch/hashids": "1.x"

I get this error

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - The requested package mitch/hashids could not be found in any version, there may be a typo in the package name.

If I use "mitch/hashids": "1.*@dev"

Then I get the following error:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for mitch/hashids 1.*@dev -> satisfiable by mitch/hashids[1.x-dev].
    - mitch/hashids 1.x-dev requires hashids/hashids 0.3.x -> no matching package found.

App Key accessed incorrectly in HashidsServiceProvider

The latest commit results in the following error when trying to use hashids :

log.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Cannot use object of type Mitch\Hashids\HashidsServiceProvider as array'

I believe this can be fixed by changing $me['config'] to $me->app['config'] on line 33 in HashidsServiceProvider.php (assuming you meant to use the Laravel app key as the hashids salt).

How do I set the salt?

A random is generated? how/where can I see it? how can I set/change it? the salt it's important!
thanks!

Unable to upgrade

Composer seems unable to upgrade this package.

Problem 1
- mitch/hashids dev-master requires hashids/hashids 0.3.@dev -> no matching package found.
- mitch/hashids dev-master requires hashids/hashids 0.3.
@dev -> no matching package found.
- Installation request for mitch/hashids dev-master -> satisfiable by mitch/hashids[dev-master].

Any idea how to solve this? Thanks!

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.