JsonQ is a simple, elegant PHP package to Query over any type of JSON Data

Overview

php-jsonq

JsonQ is a simple, elegant PHP package to Query over any type of JSON Data. It'll make your life easier by giving the flavour of an ORM-like query on your JSON.

Support For This Project

Hey due, please help me out for daily improve this project

Beerpay

NOTE

From the version JsonQ 6.0 all the features rewrite from QAarray. After a long run we noticed that Query Engine of JsonQ should be seperate. Becouse people want to query over various types of data like CSV, YAML, XML. So if we keep the query engine tightly coupled with this project its make no sense. Thats why we move the Query Engine part and develop a new package QAarray. Qarray is designed for queryng over native PHP array and anyone can implement their own Engine, like JsonQ.

Please do not update to >= 6.0 version directly from bellow

Installation

composer require nahid/jsonq

Usage

You can start using this package right away by importing your JSON data from a file:

use Nahid/JsonQ/Jsonq;
$jsonq = new Jsonq('data.json');

Or from a JSON String:

$json->json('{"id": 1, "name": "Nahid"}');

Or from a PHP Array:

$json->collect(['id'=>1, 'name'=>'Nahid']);

You can start Query your data using the various query methods such as find, where, orWhere, whereIn, whereStartsWith, whereEndsWith, whereContains and so on. Also you can aggregate your data after query using sum, count, groupBy, max, min etc.

Let's see a quick example:

//data.json
{
   "name": "products",
   "description": "Features product list",
   "vendor":{
      "name": "Computer Source BD",
      "email": "[email protected]",
      "website":"www.example.com"
   },
   "users":[
      {"id":1, "name":"Johura Akter Sumi", "location": "Barisal"},
      {"id":2, "name":"Mehedi Hasan Nahid", "location": "Barisal"},
      {"id":3, "name":"Ariful Islam", "location": "Barisal"},
      {"id":4, "name":"Suhel Ahmed", "location": "Sylhet"},
      {"id":5, "name":"Firoz Serniabat", "location": "Gournodi"},
      {"id":6, "name":"Musa Jewel", "location": "Barisal", "visits": [
         {"name": "Sylhet", "year": 2011},
         {"name": "Cox's Bazar", "year": 2012},
         {"name": "Bandarbar", "year": 2014}
      ]}
   ],
   "products": [
      {"id":1, "user_id": 2, "city": "bsl", "name":"iPhone", "cat":1, "price": 80000},
      {"id":2, "user_id": 2, "city": null, "name":"macbook pro", "cat": 2, "price": 150000},
      {"id":3, "user_id": 2, "city": "dhk", "name":"Redmi 3S Prime", "cat": 1, "price": 12000},
      {"id":4, "user_id": 1, "city": null, "name":"Redmi 4X", "cat":1, "price": 15000},
      {"id":5, "user_id": 1, "city": "bsl", "name":"macbook air", "cat": 2, "price": 110000},
      {"id":6, "user_id": 2, "city": null, "name":"macbook air 1", "cat": 2, "price": 81000}
   ]
}
{#8 ▼ +"id": 5 +"user_id": 1 +"city": "bsl" +"name": "macbook air" +"cat": 2 +"price": 110000 } 5 => {#9 ▼ +"id": 6 +"user_id": 2 +"city": null +"name": "macbook air 1" +"cat": 2 +"price": 81000 } ] */">
use Nahid\JsonQ\Jsonq;

$q = new Jsonq('data.json');
$res = $q->from('products')
    ->where('cat', '=', 2)
    ->get();
dump($res);

//This will print
/*
array:3 [▼
  1 => {#7 ▼
    +"id": 2
    +"user_id": 2
    +"city": null
    +"name": "macbook pro"
    +"cat": 2
    +"price": 150000
  }
  4 => {#8 ▼
    +"id": 5
    +"user_id": 1
    +"city": "bsl"
    +"name": "macbook air"
    +"cat": 2
    +"price": 110000
  }
  5 => {#9 ▼
    +"id": 6
    +"user_id": 2
    +"city": null
    +"name": "macbook air 1"
    +"cat": 2
    +"price": 81000
  }
]
*/

Let's say we want to get the Summation of price of the Queried result. We can do it easily by calling the sum() method instead of get():

$result = $json->from('products')
        ->where('cat', '=', 2)
        ->sum('price');
dump($result);

//It will print:
/*
365000
*/

Pretty neat, huh?

Let's explore the full API to see what else magic this library can do for you. Shall we?

API

Following API examples are shown based on the sample JSON data given here. To get a better idea of the examples see that JSON data first. Also detailed examples of each API can be found here.

List of API:

fetch()

This method will execute queries and will return the resulted data. You need to call it finally after using some query methods. Details can be found in other API examples.

find(path)

  • path -- the path hierarchy of the data you want to find.

You don't need to call fetch() method after this. Because this method will fetch and return the data by itself.

caveat: You can't chain further query methods after it. If you need that, you should use at() or from() method.

example:

Let's say you want to get the value of 'cities' property of your Json Data. You can do it like this:

$q = new Jsonq('data.json');
echo $q->find('vendor.name');

If you want to traverse to more deep in hierarchy, you can do it like:

$q = new Jsonq('data.json');
echo $q->find('vendor.name');

See a detail example here.

from(path)

  • path (optional) -- the path hierarchy of the data you want to start query from.

By default, query would be started from the root of the JSON Data you've given. If you want to first move to a nested path hierarchy of the data from where you want to start your query, you would use this method. Skipping the path parameter or giving '.' as parameter will also start query from the root Data.

Difference between this method and find() is that, find() method will return the data from the given path hierarchy. On the other hand, this method will return the Object instance, so that you can further chain query methods after it.

example:

Let's say you want to start query over the values of 'vendor.name' property of your JSON Data. You can do it like this:

$q = new Jsonq('data.json');
echo $q->from('vendor.name')->get();

If you want to traverse to more deep in hierarchy, you can do it like:

$q = new Jsonq('data.json');
echo $q->from('users.5.visits')->get();

See a detail example here.

at(path)

This is an alias method of from() and will behave exactly like that. See example here.

where(key, condition, val)

  • key -- the property name of the data. Or you can pass a Function here to group multiple query inside it. See details in example

  • val -- value to be matched with. It can be a int, string, bool or even Function - depending on the op.

  • op -- operand to be used for matching. The following operands are available to use:

    • = : For weak equality matching
    • eq : Same as =
    • != : For weak not equality matching
    • neq : Same as !=
    • == : For strict equality matching
    • seq : Same as ==
    • !== : For strict not equality matching
    • sneq : Same as !==
    • > : Check if value of given key in data is Greater than val
    • gt : Same as >
    • < : Check if value of given key in data is Less than val
    • lt : Same as <
    • >= : Check if value of given key in data is Greater than or Equal of val
    • gte : Same as >=
    • <= : Check if value of given key in data is Less than or Equal of val
    • lte : Same as <=
    • null : Check if the value of given key in data is null (val parameter in where() can be omitted for this op)
    • notnull : Check if the value of given key in data is not null (val parameter in where() can be omitted for this op)
    • in : Check if the value of given key in data is exists in given val. val should be a plain Array.
    • notin : Check if the value of given key in data is not exists in given val. val should be a plain Array.
    • startswith : Check if the value of given key in data starts with (has a prefix of) the given val. This would only works for String type data.
    • endswith : Check if the value of given key in data ends with (has a suffix of) the given val. This would only works for String type data.
    • contains : Check if the value of given key in data has a substring of given val. This would only works for String type data.
    • match : Check if the value of given key in data has a Regular Expression match with the given val. The val parameter should be a RegExp for this op.
    • macro : It would try to match the value of given key in data executing the given val. The val parameter should be a Function for this op. This function should have a matching logic inside it and return true or false based on that.

example:

Let's say you want to find the 'users' who has id of 1. You can do it like this:

$q = new Jsonq('data.json');
$res = $q->from('users')->where('id', '=', 1)->get();

You can add multiple where conditions. It'll give the result by AND-ing between these multiple where conditions.

$q = new Jsonq('data.json');
$res = $q->from('users')
->where('id', '=', 1)
->where('location', '=', 'barisal')
->get();

See a detail example here.

orWhere(key, op, val)

Parameters of orWhere() are the same as where(). The only difference between where() and orWhere() is: condition given by the orWhere() method will OR-ed the result with other conditions.

For example, if you want to find the users with id of 1 or 2, you can do it like this:

$q = new Jsonq('data.json');
$res = $q->from('users')
->where('id', '=', 1)
->orWhere('id', '=', 2)
->get();

See detail example here.

whereIn(key, val)

  • key -- the property name of the data
  • val -- it should be an Array

This method will behave like where(key, 'in', val) method call.

whereNotIn(key, val)

  • key -- the property name of the data
  • val -- it should be an Array

This method will behave like where(key, 'notin', val) method call.

whereNull(key)

  • key -- the property name of the data

This method will behave like where(key, 'null') or where(key, '=', null) method call.

whereNotNull(key)

  • key -- the property name of the data

This method will behave like where(key, 'notnull') or where(key, '!=', null) method call.

whereStartsWith(key, val)

  • key -- the property name of the data
  • val -- it should be a String

This method will behave like where(key, 'startswith', val) method call.

whereEndsWith(key, val)

  • key -- the property name of the data
  • val -- it should be a String

This method will behave like where(key, 'endswith', val) method call.

whereContains(key, val)

  • key -- the property name of the data
  • val -- it should be a String

This method will behave like where(key, 'contains', val) method call.

sum(column)

  • column -- the property name of the data

example:

Let's say you want to find the sum of the 'price' of the 'products'. You can do it like this:

$q = new Jsonq('data.json');
$res = $q->from('products')
->where('cat', '=', 1)
->sum('price');

If the data you are aggregating is plain array, you don't need to pass the 'column' parameter. See detail example here

count()

It will return the number of elements in the collection.

example:

Let's say you want to find how many elements are in the 'products' property. You can do it like:

$q = new Jsonq('data.json');
$res = $q->from('products')
->where('cat', '=', 1)
->count();

See detail example here.

size()

This is an alias method of count().

max(column)

  • column -- the property name of the data

example:

Let's say you want to find the maximum of the 'price' of the 'products'. You can do it like this:

$q = new Jsonq('data.json');
$res = $q->from('products')
->where('cat', '=', 1)
->max('price);

If the data you are querying is plain array, you don't need to pass the 'column' parameter. See detail example here

min(column)

  • column -- the property name of the data

example:

Let's say you want to find the minimum of the 'price' of the 'products'. You can do it like this:

$q = new Jsonq('data.json');
$res = $q->from('products')
->where('cat', '=', 1)
->min('price');

If the data you are querying is plain array, you don't need to pass the 'property' parameter. See detail example here

avg(column)

  • column -- the property name of the data

example:

Let's say you want to find the average of the 'price' of the 'products'. You can do it like this:

$q = new Jsonq('data.json');
$res = $q->from('products')
->where('cat', '=', 1)
->avg('price');

If the data you are querying is plain array, you don't need to pass the 'column' parameter. See detail example here

first()

It will return the first element of the collection.

example:

$q = new jsonq('data.json');
$res = $q->from('products')
->where('cat', '=', 1)
->first();

See detail example here.

last()

It will return the last element of the collection.

example:

$q = new Jsonq('data.json');
$res = $q->from('products')
->where('cat', '=', 1)
->last();

See detail example here.

nth(index)

  • index -- index of the element to be returned.

It will return the nth element of the collection. If the given index is a positive value, it will return the nth element from the beginning. If the given index is a negative value, it will return the nth element from the end.

example:

$q = new Jsonq('data.json');
$res = $q->from('products')
->where('cat', '=', 1)
->nth(2);

See detail example here.

exists()

It will return true if the element is not empty or not null or not an empty array or not an empty object.

example:

Let's say you want to find how many elements are in the 'products' property. You can do it like:

$q = new Jsonq('data.json');
$res = $q->from('products')
->where('cat', '=', 1)
->exists();

See detail example here.

groupBy(column)

  • column -- The property by which you want to group the collection.

example:

Let's say you want to group the 'users' data based on the 'location' property. You can do it like:

$q = new Jsonq('data.json');
$res = $q->from('users')
->groupBy('location')
->get();

See detail example here.

sort(order)

  • order -- If you skip the 'order' property the data will be by default ordered as ascending. You need to pass 'desc' as the 'order' parameter to sort the data in descending order. Also, you can pass a compare function in 'order' parameter to define your own logic to order the data.

Note: This method should be used for plain Array. If you want to sort an Array of Objects you should use the sortBy() method described later.

example:

Let's say you want to sort the 'arr' data. You can do it like:

$q = new Jsonq();
$res = $q->collect([7, 5, 9, 1, 3])
->sort();

See detail example here.

sortBy(column, order)

  • column -- You need to pass the column name on which the sorting will be done.
  • order -- If you skip the 'order' property the data will be by default ordered as ascending. You need to pass 'desc' as the 'order' parameter to sort the data in descending order. Also, you can pass a compare function in 'order' parameter to define your own logic to order the data.

Note: This method should be used for Array of Objects. If you want to sort a plain Array you should use the sort() method described earlier.

example:

Let's say you want to sort the 'price' data of 'products'. You can do it like:

$q = new Jsonq('data.json');
$res = $q->from('products')
->where('cat', '=', 1)
->sortBy('price', 'desc');

See detail example here.

reset(data)

  • data -- can be a JSON file path, or a JSON string or a JSON Object. If no data passed in the data parameter, the jsonQ Object instance will be reset to previously initialized data.

At any point, you might want to reset the Object instance to a completely different set of data and then query over it. You can use this method in that case.

See a detail example here.

copy()

It will return a complete clone of the Object instance.

See a detail example here.

Bugs and Issues

If you encounter any bugs or issues, feel free to open an issue at github.

Also, you can shoot me an email to mailto:[email protected] for hugs or bugs.

Others Platform

This package has also different language support.

Support on Beerpay

Hey dude! Help me out for a couple of 🍻 !

Beerpay Beerpay

Issues
  • How does the macro condition works?

    How does the macro condition works?

    Hello,

    Can someone explain to me how the "macro" condition works. Or has someone an example?

    With kind regards, Tim Nobbenhuis

    help wanted 
    opened by Timenator 5
  • query always returns 0 results for clause

    query always returns 0 results for clause "where boolean key = false"

    Hi,

    Querying a boolean type key always returns empty dataset for "false" value.

    On line 374 of JsonQueriable.php, maybe it could help to replace "$value ? ... : false" by "isset($value) ? ... : false".

    Thanks for the great job, J.

    help wanted solved 
    opened by lecleach 5
  • Get is not resetting the array index

    Get is not resetting the array index

    Get is not resetting the array index

    It is outputting the original index of array/json

    opened by vishalv26 5
  • installation error

    installation error

    I installed it with composer and included it on my own code and I get syntax error, unexpected 'use' (T_USE). Here is my code `require DIR . '/vendor/autoload.php'

    use Nahid/JsonQ/Jsonq;` any solutions?

    opened by mecevik 4
  • Release new bugfix without debug statement

    Release new bugfix without debug statement

    Could you please publish a new bugfix to packagist since 5.2.1 currently contains an unwanted dump statement. :smile:

    Thank you!

    bug solved 
    opened by tobias-kuendig 4
  • How to get specific fields from nested json

    How to get specific fields from nested json

    Hi,

    How to fetch specific fields from nested json

    Thanks

    KIRAN

    help wanted solved 
    opened by ryhill 4
  • We can't search the data on LIKE query

    We can't search the data on LIKE query

    How do i search the data using LIKE in query

    opened by shaan24k 4
  • Added ValueNotFound object

    Added ValueNotFound object

    If a value is queried it is possible that the value is null, '' or false. These are all valid return values that the user might want to know about.

    With the current default return value of false in the getFromNested method, a custom macro might be called with false as a value (but in this case the value does not exist). Empty strings on the other hand are never passed to the macro but the user might care about these.

    To distinct these falsey values from a value that was effectifely not found, the ValueNotFound object was introduced in this commit.

    opened by tobias-kuendig 3
  • 'from' method can be renamed to 'at'

    'from' method can be renamed to 'at'

    @s1s1ty apu had a problem implementing 'from' as a method name in her python implementation because it's a reserved word in python. We discussed and agreed that it can be renamed to 'at' and it seems quite good enough and meaningful. You can consider it.

    opened by me-shaon 3
  • Set correct file permissions

    Set correct file permissions

    Changed log

    • Set correct file permissions.
    opened by peter279k 0
  • Making nested aggregations to compare student result into materials through multiple months

    Making nested aggregations to compare student result into materials through multiple months

    @nahid ################ Json Data 1 ###################### { "student_results": [ { "month": "month1", "results": [ { "material_code": "Math", "result": "20", }, { "material_code": "English", "result": "50", }, ] } ] }

    ################ Json Data 2 ###################### { "student_results": [ { "month": "month2", "results": [ { "material_code": "Math", "result": "30", }, { "material_code": "English", "result": "48", }, ] } ] }

    ################ Expected result ######################

    { "student_results": [ { "month": "month2", "results": [ { "material_code": "Math", "result": "30", }, { "material_code": "English", "result": "50", }, ] } ] }

    opened by M-Samy 0
  • Contains Condition is Case-Sensitive

    Contains Condition is Case-Sensitive

    Suggestion to convert strpos to stripos if possible. Thanks!

    image

    opened by princeryansy 0
  • Getting error on Multidimensional array search

    Getting error on Multidimensional array search

    This is my json array

    [
      {
        "name": "post11",
        "type": "fields",
        "fields": [
          {
            "name": "background_color",
            "type": "select",
            "options": {
              "rules": "required",
              "value": "#FFFFFF",
              "wrapper": {
                "class": "col-md-6"
              },
              "choices": {
                "#ECECEC": "Grey",
                "#FFFFFF": "White"
              },
              "selected": "#ECECEC",
              "content_type": "select",
              "error_messages": {
                "background_color.required": "Background Color is mandatory."
              }
            }
          },
          {
            "name": "post1_title",
            "type": "text",
            "options": {
              "wrapper": {
                "class": "col-md-6"
              },
              "value": "",
              "rules": "required",
              "content_type": "text"
            }
          }
        ]
      },
      {
        "name": "post12",
        "type": "fields",
        "fields": [
          {
            "name": "post1",
            "type": "textarea",
            "options": {
              "wrapper": {
                "class": "col-md-6"
              },
              "rules": "required|min:5",
              "value": "",
              "content_type": "textarea",
              "error_messages": {
                "post1.required": "Post1 is mandatory."
              }
            }
          },
          {
            "name": "modal1_view",
            "type": "textarea",
            "options": {
              "wrapper": {
                "class": "col-md-6"
              },
            "content_type": "editor",
            "attr": {
              "class": "form-control editor"
            },
              "value": ""
            }
          }
        ]
      },
      {
        "name": "post13",
        "type": "fields",
        "fields": [
          {
            "name": "internal1_url",
            "type": "text",
            "options": {
              "wrapper": {
                "class": "col-md-6"
              },
              "value": "",
              "content_type": "text"
            }
          },
          {
            "name": "image1",
            "type": "file",
            "options": {
              "wrapper": {
                "class": "col-md-6"
              },
              "value": "",
              "content_type": "text"
            }
          }
        ]
      },
      {
        "attr": {
          "class": "btn btn-primary pull-right"
        },
        "name": "submit",
        "type": "submit"
      }
    ]
    

    I need to search content_type = editor.

    $jsonq->from("fields")->where("content_type", "=", "select")->get();
    

    But I'm getting

    ErrorException
    array_filter() expects parameter 1 to be array, object given
    

    How can I fix it?

    opened by takielias 1
  • Can't get whereIn to work

    Can't get whereIn to work

    I'm trying to filter on a key that returns an array of colours, but I can't get it to work. Example of data:

    $result = Array
    (
        [0] => Array
            (
                [Art nr] => 2094
            )
    
        [1] => Array
            (
                [Art nr] => 0480C
            )
    
        [2] => Array
            (
                [Art nr] => 1576
            )
    
        [3] => Array
            (
                [Art nr] => 2619
                [Colour (website)] => Array
                    (
                        [0] => Brown
                    )
            )
    
        [4] => Array
            (
                [Art nr] => 1449
            )
    
        [5] => Array
            (
                [Art nr] => 3252
            )
    
        [6] => Array
            (
                [Art nr] => 2618
                [Colour (website)] => Array
                    (
                        [0] => Brown
                    )
            )
    
        [7] => Array
            (
                [Art nr] => 3029
                [Colour (website)] => Array
                    (
                        [0] => Brown
                    )
            )
    )
    

    My code:

    $jsonq = new Jsonq();
    $jsonq->json(json_encode($result));
    $res = $jsonq
    	->whereIn("Brown", "Colour (website)")
    	->get();
    write_log($res);
    

    But I get an empty array as a result. I also tried switching the key and value in the command, like whereIn("Colour (website)", "Brown"), but without result.

    Another thing I tried is converting the colour field to json, so it becomes a 'flatter array' like this: [colour_website] => ["Brown"] but that also doesn't work.

    What am I doing wrong?

    opened by tomkeysers 2
  • hiding api key from clientside

    hiding api key from clientside

    Hi, nahid

    Can you explain how to, if possible keep the API key secure from Javascript file?

    Thanks

    opened by staminna 0
  • Getting nth data

    Getting nth data

    In my use case I want to get all results for a certain nth depth.

     "rest": [
        {
          "mode": "server",
          "resource": [
              "type": "AllergyIntolerance",
          "resource": [
              "type": "MedicationStatement",
    

    So I want to return all resource types: i.e. ["AllergyIntolerance","MedicationStatement"]

    Is that possible? The nth example does not link anywhere?

    opened by Matt2012 0
  • Combining multiple OrWhere to one result in AND

    Combining multiple OrWhere to one result in AND

    I am working on a filter page, and I was wondering if we could combine all filters in one category like this:

    If I search for 'lorum ipsum' in title and in intro and in content, if its found in any of those 3 then its a hit for that search, but I also like to see if node: specialty is 1 or 2 or 3 (than can easily be done by using whereIN.) and then I like to search in my custom macro and if that is also true then return that item.

    so a hit should have ( 'lorum ipsum' in title OR 'lorum ipsum' in intro OR 'lorum ipsum' in content) AND (1 OR 2 OR 3 IN specialty) AND macro IS true.

    Is this possible?

    opened by dimitrihilverda 3
  • Rename variable

    Rename variable

    Rename variable $_map to $_data

    I know it's a minor change but it's something that is driving me crazy...

    This change is sent by the docblock of the Jsonq class construct.

        /**
         * this constructor set main json file path
         * otherwise create it and read file contents
         * and decode as an array and store it in $this->_data
         *
         * @param null $jsonFile
         * @throws Exceptions\FileNotFoundException
         * @throws InvalidJsonException
         */
        public function __construct($jsonFile = null)
    opened by ErickZH 0
  • Install PsySH

    Install PsySH

    PsySH is a runtime developer console, interactive debugger and REPL for PHP

    More information

    I propose to use psysh to debug the tests and make it easier to contribute 😄

    opened by ErickZH 0
Releases(v5.2.5)
Owner
Nahid Bin Azhar
Code makes me happy than anything. So I contribute to open source and enjoy happiness.
Nahid Bin Azhar
MOP is a php query handling and manipulation library providing easy and reliable way to manipulate query and get result in a fastest way

Mysql Optimizer mysql optimizer also known as MOP is a php query handling and manipulation library providing easy and reliable way to manipulate query

null 2 Nov 20, 2021
A simple PHP package for sending messages to Slack, with a focus on ease of use and elegant syntax.

Slack for PHP A simple PHP package for sending messages to Slack with incoming webhooks, focussed on ease-of-use and elegant syntax. Note: this packag

Regan McEntyre 1.2k Dec 1, 2021
Core - ownCloud gives you freedom and control over your own data.

ownCloud Core ownCloud gives you freedom and control over your own data. A personal cloud which runs on your own server. Why is this so awesome? ?? Ac

ownCloud 7.6k Jan 12, 2022
📦 "PHP type names" contains the list of constants for the available PHP data types.

PHP type names PHP type names ?? Description Simple library containing the list of constants for the available PHP data types. Use those constant type

♚ PH⑦ de Soria™♛ 2 Jan 15, 2022
A collection of type-safe functional data structures

lamphpda A collection of type-safe functional data structures Aim The aim of this library is to provide a collection of functional data structures in

Marco Perone 68 Dec 23, 2021
Allows generate class files parse from json and map json to php object, including multi-level and complex objects;

nixihz/php-object Allows generate class files parse from json and map json to php object, including multi-level and complex objects; Installation You

zhixin 1 Oct 29, 2021
The Current US Version of PHP-Nuke Evolution Xtreme v3.0.1b-beta often known as Nuke-Evolution Xtreme. This is a hardened version of PHP-Nuke and is secure and safe. We are currently porting Xtreme over to PHP 8.0.3

2021 Nightly Builds Repository PHP-Nuke Evolution Xtreme Developers TheGhost - Ernest Allen Buffington (Lead Developer) SeaBeast08 - Sebastian Scott B

Ernest Buffington 6 Jan 11, 2022
A package for adding more type safety to your PHP projects.

Table of Contents Overview Installation Usage Simple Checks Advanced Checks Custom Checks Skipping Checks Testing Security Contribution Credits Change

Ash Allen 12 Dec 31, 2021
A simple, type-safe, zero dependency port of the javascript fetch WebApi for PHP.

A simple, type-safe, zero dependency port of the javascript fetch WebApi for PHP.

Matias Navarro Carter 101 Dec 13, 2021
Fact Extraction and VERification Over Unstructured and Structured information

Repository for Fact Extraction and VERification Over Unstructured and Structured information (FEVEROUS), used for the FEVER Workshop Shared Task at EMNLP2021.

Rami 39 Jan 14, 2022
This Statamic addon allows you to modify the tags rendered by the Bard fieldtype, giving you full control over the final HTML.

Bard Mutator This Statamic addon allows you to modify the tags rendered by the Bard fieldtype, giving you full control over the final HTML. You can ad

Jack Sleight 5 Dec 3, 2021
Chat over your local network: 127.0.0.1

#Howto: install packages: apache2 (or nginx but I wouldn't prefer it if you're using your local computer) php for ubuntu/debian instance: $ apt instal

Omer Erbilgin 1 Jan 12, 2022
The easiest way to match data structures like JSON/PlainText/XML against readable patterns. Sandbox:

PHP Matcher Library created for testing all kinds of JSON/XML/TXT/Scalar values against patterns. API: PHPMatcher::match($value = '{"foo": "bar"}', $p

Coduo 718 Jan 10, 2022
JSON schema models and generated code to validate and handle various data in PocketMine-MP

DataModels JSON schema models and generated code to validate and handle various data in PocketMine-MP This library uses php-json-schema-model-generato

PMMP 1 Nov 17, 2021
Auto-expiring tags with additional payload data on any eloquent model.

Laravel TempTag Auto-expiring tags with additional payload data on any eloquent model. Installation first you need to install and configure mongodb in

masoud nazarpoor 2 Sep 18, 2021
Library download currency rate and save in database, It's designed to be extended by any available data source.

Library download currency rate and save in database, It's designed to be extended by any available data source.

Flexmind. Krzysztof Bielecki 2 Oct 6, 2021
Collection of value objects that represent the types of the PHP type system

sebastian/type Collection of value objects that represent the types of the PHP type system. Installation You can add this library as a local, per-proj

Sebastian Bergmann 786 Jan 18, 2022
Add scalar type hints and return types to existing PHP projects using PHPDoc annotations

PHPDoc to Type Hint Archived! This repository is now archived. Consider using PHP CS Fixer (and especially the phpdoc_to_param_type and phpdoc_to_retu

Kévin Dunglas 229 Nov 19, 2021
Mobile detect change theme and redirect based on device type. Magento 2 module.

Magento 2 Mobile Detect Theme Change Magento 2 Mobile detect system can be used to load different themes base on the client device (desktop, tablet, m

EAdesign 26 Jan 24, 2020