EasyRdf is a PHP library designed to make it easy to consume and produce RDF.

Overview

EasyRdf

Build Status

EasyRdf is a PHP library designed to make it easy to consume and produce RDF. It was designed for use in mixed teams of experienced and inexperienced RDF developers. It is written in Object Oriented PHP and has been tested extensively using PHPUnit.

After parsing EasyRdf builds up a graph of PHP objects that can then be walked around to get the data to be placed on the page. Dump methods are available to inspect what data is available during development.

Data is typically loaded into an EasyRdf\Graph object from source RDF documents, loaded from the web via HTTP. The EasyRdf\GraphStore class simplifies loading and saving data to a SPARQL 1.1 Graph Store.

SPARQL queries can be made over HTTP to a Triplestore using the EasyRdf\Sparql\Client class. SELECT and ASK queries will return an EasyRdf\Sparql\Result object and CONSTRUCT and DESCRIBE queries will return an EasyRdf\Graph object.

Example

$foaf = new \EasyRdf\Graph("http://njh.me/foaf.rdf");
$foaf->load();
$me = $foaf->primaryTopic();
echo "My name is: ".$me->get('foaf:name')."\n";

Downloads

The latest stable version of EasyRdf can be downloaded from the EasyRdf website.

Links

Requirements

  • PHP 7.1 or higher

Features

  • API documentation written in phpdoc
  • Extensive unit tests written using phpunit
  • Built-in parsers and serialisers: RDF/JSON, N-Triples, RDF/XML, Turtle
  • Optional parsing support for: ARC2, rapper
  • Optional support for Zend\Http\Client
  • No required external dependencies upon other libraries (PEAR, Zend, etc...)
  • Complies with Zend Framework coding style.
  • Type mapper - resources of type foaf:Person can be mapped into PHP object of class Foaf_Person
  • Support for visualisation of graphs using GraphViz
  • Comes with a number of examples

List of Examples

Contributing

We welcome any contributions. For further information please read CONTRIBUTING.md.

For further information about extending / hack EasyRdf please read DEVELOPER.md.

Running Examples

The easiest way of trying out some of the examples is to use the PHP command to run a local web server on your computer.

php -S localhost:8080 -t examples

Then open the following URL in your browser: http://localhost:8080/

Licensing

The EasyRdf library and tests are licensed under the BSD-3-Clause license. The examples are in the public domain, for more information see UNLICENSE.

Comments
  • How to continue maintenance of EasyRdf? (and the way to 1.0.0?)

    How to continue maintenance of EasyRdf? (and the way to 1.0.0?)

    Its sad to see another PHP/RDF project being not maintained anymore. First of all, @njh and all contributors did an amazing job of creating EasyRdf. Because it is widely used (Github reports "Used by": 14.5k), there should be a way to continue its maintenance and even add further improvements.

    I would love to hear from @njh, if he has plans for EasyRdf.

    In case, he has no plans or doesn't react, i would suggest the following: we create a new organization and fork the repository. This would allow a wider audience to work on the code.

    I can help with organizing issues, check code and other stuff from time to time.

    Based on the network view there are projects with improvements, fixes, i assume. (Just to name a few @SchemaApp, @acdh-oeaw, @frmichel)

    What do you guys think?

    Ref: #299, #282

    opened by k00ni 44
  • Empty prefix support

    Empty prefix support

    This fixes issue #181, tested with a JSON output and a Turtle output (the latter really shows the difference and correctness). If any more testing needs to be done before this pull request can happen I'd be glad to look if I can be of assistance.

    enhancement 
    opened by coreation 25
  • Use hardf library to parse turtle, n-triples, n-quads, TriG and N3

    Use hardf library to parse turtle, n-triples, n-quads, TriG and N3

    About hardf

    https://github.com/pietercolpaert/hardf developed by @pietercolpaert

    For transparency: I help out with maintenance from time to time.

    hardf claims to be much faster on parsing in comparison with EasyRdf or ARC2.

    | #triples | framework | time (ms) | memory (MB) | |----------:|-------------------------|------:|--------:| |1,866 | Hardf without opcache | 27.6 | 0.722 | |1,866 | Hardf with opcache | 24.5 | 0.380 | |1,866 | EasyRDF without opcache | 5,166.5 | 2.772 | |1,866 | EasyRDF with opcache | 5,176.2 | 2.421 | |1,866 | ARC2 with opcache | 71.9 | 1.966 | | 1,866 | N3.js | 24.0 | 28.xxx | | 3,896,560 | Hardf without opcache | 40,017.7 | 0.722 | | 3,896,560 | Hardf with opcache | 33,155.3 | 0.380 | | 3,896,560 | N3.js | 7,004.0 | 59.xxx | | 3,896,560 | ARC2 with opcache | 203,152.6 | 3,570.808 |

    Table source: https://github.com/pietercolpaert/hardf#performance

    My suggestion

    I would like to use hardf to replace EasyRdf code for parsing and serializing turtle, n-triples, n-quads, TriG and N3. Our API should be kept, but the code behind it could be (massively) reduced and replace by hardf pendants.

    Advantages:

    • We won't have to care about related parser / serializer issues anymore - more free time and less code to maintain
    • It's a faster and more memory-sufficient parsing solution (its seems to be based on knowledge from N3.js)

    Sure, hardf code may need some attention (e.g. coding styles) and there is currently a bug, which lead to some tests fail on PHP 7.4 (https://github.com/pietercolpaert/hardf/pull/28). But its nothing we couldn't handle.

    What do you think?

    CC @njh, @osma, @zozlak, @pietercolpaert

    feature enhancement 
    opened by k00ni 23
  • Call for collaborators!

    Call for collaborators!

    Hi,

    Now that I have got version 1.0.0 out of the door, it would be really good to get some help with the future of EasyRdf. As I said in #320, I no-longer do PHP or RDF for my day job and have lots of other projects that I am interested in. So I would really like some help with maintaining EasyRdf and ensure that it has a good future.

    Some of the tasks I would really like people to collaborate on:

    The plan is that nobody (including myself) will be able to commit directly to the master branch and that everyone will submit changes for review via Pull Requests. Depending on how many people are actively involved in EasyRdf, GitHub will require at least one review of the Pull Request before it can be merged.

    So if you would like to be added as a collaborator to the EasyRdf organisation, please comment below. Ideally you would have already contributed to EasyRdf and other open source projects.

    Feedback very welcome...

    Thanks!

    nick.

    help wanted 
    opened by njh 18
  • Add JSON-LD parser

    Add JSON-LD parser

    Please note that JSON-LD is a dataset format and thus a file might contain multiple graphs. Since easyrdf doesn't support datasets AFAICT, this parser just returns the default graph and ignores all named graphs.

    This closes #87.

    opened by lanthaler 16
  • Steps towards PHP 8 compatibility

    Steps towards PHP 8 compatibility

    PHP 8 got released, so I tried to see if there is already infrastructure available to test it with EasyRdf. Unfortunately I couldn't even start the tests. In this PR I would like to collect the things to do to make EasyRdf compatible to PHP 8.


    First problem: Composer blocked installation because of Doctum and (one of) its dependencies, see: https://travis-ci.com/github/easyrdf/easyrdf/jobs/451389149#L207

    Your requirements could not be resolved to an installable set of packages.
    Problem 1
    - code-lts/doctum[v5.0.0, ..., v5.2.1] require wdes/php-i18n-l10n ^2.0 -> satisfiable by wdes/php-i18n-l10n[2.0.0].
    - wdes/php-i18n-l10n 2.0.0 requires php ^7.1 -> your php version (8.0.1-dev) does not satisfy that requirement.
    - Root composer.json requires code-lts/doctum ^5 -> satisfiable by code-lts/doctum[v5.0.0, ..., v5.2.1].
    

    I used php: nightly in .travis.yml.

    @williamdes Are you aware of this? Any plans related to PHP 8?

    Maybe also relevant: PHP 8.0 status in Travis itself, see: https://travis-ci.community/t/php-8-0-missing/10132/12

    enhancement help wanted 
    opened by k00ni 14
  • Composer deprecation notice (Class X does not comply with psr-0 autoloading standard)

    Composer deprecation notice (Class X does not comply with psr-0 autoloading standard)

    Since 1.10 (https://github.com/composer/composer/pull/8397), Composer displays a deprecation notice when installing easyrdf/easyrdf 0.9.1:

    Deprecation Notice: Class EasyRdf_Parser_JsonLd located in ./vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/JsonLdImplementation.php does not comply with psr-0 autoloading standard. It will not autoload anymore in Composer v2.0. in /home/pierre/.config/composer/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php:201
    Deprecation Notice: Class EasyRdf_Serialiser_JsonLd located in ./vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/JsonLd_real.php does not comply with psr-0 autoloading standard. It will not autoload anymore in Composer v2.0. in /home/pierre/.config/composer/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php:201
    
    wont fix 
    opened by prudloff-insite 11
  • Failed to parse SPARQL Query Results format, unknown term type: literal-typed

    Failed to parse SPARQL Query Results format, unknown term type: literal-typed

    I'm using AllegroGraph with EasyRDF version 0.8.0.

    When I create a SPARQL query where an object has the predicate dcterms:date, I get the exception message in the issue title.

    I manually modified EasyRdf_Sparql_Result to include a fall-through case for literal-typed (after the existing typed-literal case) in the newTerm function and it works. Can this be officially added to EasyRDF?

    Thanks.

    opened by dteoh 10
  • [Feature req] Nested resources.

    [Feature req] Nested resources.

    Hello! I was wondering if it would be possible to have multiple levels of resources belonging to a particular resource. This would be extremely useful when dealing with WebIDs (certificates). Here is an example in RDF/XML:

    <cert:key>
        <cert:RSAPublicKey>
            <cert:modulus rdf:datatype="xsd:hexBinary">cfa7a8e46.......24cbf43</cert:modulus>
            <cert:exponent rdf:datatype="xsd:int">65537</cert:exponent>
        </cert:RSAPublicKey>
    </cert:key>
    

    I am not able to create cert:modulus of a specific type, as a resource of cert:RSAPublicKey. Right now I can only create a sub-resource for a main graph resource: $RSAkey = $graph->resource('cert:key', 'cert:RSAPublicKey'); but I cannot add a resource to $RSAkey.

    opened by deiu 10
  • 1.1.0

    1.1.0

    I would like to create a new minor release to ship our latest work.

    https://github.com/easyrdf/easyrdf/releases/edit/untagged-aa30be1dad1c73a5e8b3 (only for collaborators)

    Content so far:

    Bug fix release with a few improvements and changes in Composer dependencies.
    
    **Highlights:**
    * Composer: 
      * changed ARC2 from `~2.2` to `^2.4` (#347)
      * replaced `sami/sami` with `code-lts/doctum`
      * added the following required PHP extensions: ext-pcre, ext-xmlreader, lib-libxml
    * Accept an array of properties in get/getLiteral/getResource methods, fixes #325 (#326)
    * Add support for parsing large SPARQL XML Results (#357)
    
    **Highlights for EasyRdf developers:**
    * added .editorconfig (#340)
    * added a basic Docker setup to improve local development and testing (#334)
    * added `CONTRIBUTING.md`
    

    As far as I can see there are a few things to do before the release:

    • [x] adapt milestones
    • ~~based on composer.json this lib requires "ext-mbstring" ~~which isn't part of PHP 8 anymore (and might cause errors)~~ We could replace it with symfony/polyfill-mbstring to allow support for all available PHP versions (7.1+)~~

    What do you think?

    CC @njh @osma @zozlak

    new release 
    opened by k00ni 9
  • RDF*

    RDF*

    RDF* was adopted by most major RDF vendors during 2019-2020, facilitating the processing of reifications such as

    <<:George :workedAt :IBM>> :during 2020 .

    It would be nice if the feature would find its way in RDF libraries as well.

    feature help wanted wont fix 
    opened by robertbbb 9
  • PHP 8.1 compatibility fixes

    PHP 8.1 compatibility fixes

    This pull request is a systematic approach to the EasyRdf PHP 8.1 compatibility issues. Instead of depending solely on tests, a static code analyzer phpstan has been used to detect all incompatibilities.

    As a side effect fixes for other problems reported by the code analyzer have been provided like making docstring type hints in line with the code, resolving broken inheritance of ARC/JSON and RdfPhp serialisers/parsers, declaring few undeclared class properties, etc.

    Last but not least examples and example tests have been fixed both for PHP 8.0/8.1 incompatibilities and for changes in the data they rely upon so that make test reports no errors nor warnings.

    It's worth noting the adjustments required for the PHP 8.1 compatibility introduce backward-incompatible API changes. ArrayAccess interface offsetSet() and offsetUnset() methods must return void while in EasyRdf they sometimes returned a value. I don't expect it to affect many users and this behavior hasn't been covered by tests but it means an EasyRdf release incorporating this pull request will require EasyRdf major version bump.

    opened by zozlak 0
  • Adding Collection node to graph

    Adding Collection node to graph

    Hi @njh,

    Thanks very much for work on this great library.

    I'm using EasyRdf to create graphs from php code. Mainly using methods Graph::resource(), Resource::addResource(), Resource::addLiteral(), etc.

    It seems to me that I cannot instantiate a Collection node in the same way.

    This issue request to have a method to create a Collection node in the graph and allow to add/remove items from the collection.

    opened by Michiel-s 0
  • TTL parser fails if a)is defined using prefix and b)property has

    TTL parser fails if a)is defined using prefix and b)property has "." in property name (e.g. myprefix:myprop.detail)

    The ttl parser seems to fail when a property has . in it's name.

    Tested with converted

    @prefix :      <http://example.com/entities#> .
    @prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
    @prefix Resources: <http://example.com/Resources#> .
    <https://example.com/data/Report/40b98c1d-9f2e-4914-828f-6b9dc9002523>
            a       :Report ;
    Resources:Report.conclusion   "Not great!"@en-us
    .
    

    Error! Turtle Parse Error: object for statement missing on line 7, column 19

    Removing the . from Report.conclusion => Reportconclusion or removing prefix => <http://example.com/Resources#Report.conclusion> and everything works...

    Any ideas?

    opened by billyk18278 0
  • Support for pretty printing JSON results

    Support for pretty printing JSON results

    Currently when you serialize as JSON or JSON-LD types, the output ends up as a single line of text; It'd be great to make use of the JSON_PRETTY_PRINT flag to json_encode to pretty print the output.

    I believe we'd need to add https://github.com/easyrdf/easyrdf/blob/main/lib/Serialiser/Json.php#L73 (I'm not sure what the equivalent would be for JSON-LD)

    This would make it easier to read the output JSON — currently I have to copy it and then do pbpaste | jq in my terminal to read it.

    opened by ThisIsMissEm 0
  • Normal context in framing

    Normal context in framing

    I want to serialized a graph in JSONLD with the option of framing with a frame like this

          $frame = (object) [
                '@context' => 'https://schema.org/',
                '@type' => 'schema:LodgingReservation',
                (object) [
    
                ],
            ];
    

    to have a "@context" : "https://schema.org/" in my JSONLD for Google to recognize because I already try to do with

      $frame2 = (object) [
                '@context' => (object) [
                         'schema' => 'https://schema.org/',
                ],
                '@type' => 'schema:LodgingReservation',
                (object) [
    
                ],
            ];
    

    but Google don't recognize the JSONLD generated. With the first frame, the JSON generated is "{"@context":"https://schema.org/" ,"@graph":[]}" and the second frame, the JSONLD generated is {"@context":{"schema":"https://schema.org/"},"@graph":[ data graph ]} .

    To avoid this I have to use 2 frame and 2 graph where for the first graph I serialized with a frame with the context alone and for the second graph I serialized with the $frame2 and after I use json_decode on the 2 JSONLD to transform them in array. Now, with the array I do a array_slice to remove the '@context' of the second graph and then merge them to have a JSONLD that Google can recognize.

    Do you have an alternative method to do what I want ?

    opened by nguyenj-c 0
Releases(1.1.1)
  • 1.1.1(Dec 2, 2020)

  • 1.1.0(Nov 30, 2020)

    Bug fix release with a few improvements and changes in Composer dependencies.

    Overview:

    • Composer:
      • changed ARC2 from ~2.2 to ^2.4 (#347)
      • replaced sami/sami with code-lts/doctum
      • added the following required PHP extensions: ext-pcre, ext-xmlreader, lib-libxml
    • Accept an array of properties in get/getLiteral/getResource methods, fixes #325 (#326)
    • Add support for parsing large SPARQL XML Results (#357)
    • Made Parser class abstract, to be in line with Serialiser class (#328)
    • Fixed "Sparql\Client uses invalid parameters for Zend\Http\Client->setHeaders" (#335)
    • Fixed undefined index path in Http\Client::request (#271, #368)

    Highlights for EasyRdf developers:

    • added .editorconfig (#340)
    • added a basic Docker setup to improve local development and testing (#334)
    • added CONTRIBUTING.md
    Source code(tar.gz)
    Source code(zip)
    easyrdf-1.1.0.tar.gz(452.28 KB)
  • 1.0.0(Jul 14, 2020)

    Major new features

    • Minimum version of PHP is now PHP version 7.1, PHP 5.x is no-longer supported
    • Usage without composer is not supported anymore
    • Library is loaded via PSR-4 autoloader now
    • The Redland PHP extension is no-longer supported

    Enhancements

    • $graph->isA() can take full IRIs as second parameter (only qname was accepted earlier, see issue #215)
    • Accept HTTP-header depends on SPARQL-query type (see issues #231, #226)
    • It is possible to set alternate default Resource class via Graph::setDefaultResourceClass() (see issue #243)
    • When calling Graph::load() set the HTTP Accept header to the desired format
    • The RDF/PHP and RDF/JSON specifications were added to the documentation
    • Added text/xml and application/xml MIME types to RDF/XML format
    • Added additional namespaces from W3C RDFa context
    • Speeding up the turtle parser by optimising the mb_substr calls
    • Added support for compressed response body in HTTP client
    • Updated to PHP CodeSniffer v3
    • Updated to Sami v4 for API documentation
    • Updated to PHPUnit v7

    API changes

    • Classes are renamed like this: EasyRdf_Parser_TurtleEasyRdf\Parser\Turtle. With a single exception: EasyRdf_NamespaceEasyRdf\RdfNamespace (because namespace is a keyword in PHP)
    • EasyRdf expects HTTP-client objects compatible with ZendFramework 2.x instead of 1.x now. (zend-http is added to require-dev so tests for it are always run)
    • Resource implements ArrayAccess interface now (see #242)
    • Now using PHP Type Hints in some classes, which avoids having to do type checks
    • Serialiser class is now abstract
    • Implement the ArrayAccess Interface in Resource

    Bug Fixes

    • Fixes that add compatibility for PHP 7.4
    • Unicode-strings are properly encoded in n-triples documents (see #219)
    • RdfPhp parser validates its input (see #227)
    • Timeout is applied to response-times, not only connection-times (see #202)
    • $graph->get() is reliable after $graph->delete() now (see #239, #241)
    • Fix for running Graphviz tests against newer versions of Graphviz
    • Fixed for when the HTTP server doesn't return Reason-Phrase in the status (see #321)
    • Corrections to RDF format URIs
    • Fixes for format guessing, so it works with SPARQL-style PREFIX and BASE
    • Turtle serialiser improvements and fixes
    • Fix for unescaping URIs while parsing ntriples
    • Fixed encoding of unicode literals in ntriples

    Changes to Examples

    • Added index.php to examples folder, to make them easier to navigate
    • Removed artistinfo.php example (BBC Music no longer publishes RDF)
    • Replaced Dbpedialite Villages example with Wikidata Villages example
    • Added Open Graph Protocol example
    • Changed default URI for converter example
    • Fixed namespace for dbpedia categories
    • Fixes for UK Postcode example and changed it to use Open Street Map
    Source code(tar.gz)
    Source code(zip)
    easyrdf-1.0.0.tar.gz(549.77 KB)
  • 0.9.0(Nov 11, 2014)

    Major new features

    • Framing support in EasyRdf_Serialiser_JsonLd
    • JSON-LD Parser

    API changes

    • EasyRdf_Literal_Decimal returns strings, instead of floats to avoid losing precision (see issue #178)
    • EasyRdf_Literal_Decimal requires input-strings which conform to xs:decimal format
    • EasyRdf_GraphStore supports operations over default graph now
    • EasyRdf_Literal typed as xs:double is used for PHP-floats instead of EasyRdf_Literal_Decimal
    • Exceptions thrown from EasyRdf_Graph::resource() use different message-texts now (see issue #159)

    Enhancements

    • Synced list of default namespaces against RDFa Core Initial Context rev.2014-01-17
    • Added support for empty prefixes (see issue #183)
    • EasyRdf_Graph::newAndLoad throws EasyRdf_Http_Exception in case of failure, which gives access to status and response-body. (see issue #149)
    • EasyRdf_Graph and EasyRdf_Resource have 'typesAsResources()' methods now

    Bug Fixes

    • Fix for Turtle serialisation of FALSE (see issue #179)
    • Fix for edge-case in RDF/XML serialisation (see issue #186)
    • SPARQL-queries against endpoints which have query-params in their URL (see issue #184)
    • Float values are properly handled if locale with "other" separator is active
    • Fixed parsing of Turtle-documents with higher utf-8 characters (see issue #195)
    • Namespace-prefixes are compliant with RDFXML QName spec (see issue #185)
    • EasyRdf_Namespace won't generate "short" names with "/" in them anymore (see issue #115)
    • EasyRdf_Parser_RdfXml respects "base" specified for the document (see issue #157)
    • HTML documents are correctly detected now, not as "n-triples" (see issue #206)
    • Accept-headers are formatted in locale-independent fashion now (see issue #208)
    Source code(tar.gz)
    Source code(zip)
    easyrdf-0.9.0.tar.gz(349.74 KB)
Owner
EasyRdf
A PHP library designed to make it easy to consume and produce RDF
EasyRdf
A PHP 7.4+ library to consume the Confluent Schema Registry REST API

A PHP 7.4+ library to consume the Confluent Schema Registry REST API. It provides low level functions to create PSR-7 compliant requests that can be used as well as high level abstractions to ease developer experience.

Flix.TECH 38 Sep 1, 2022
A Laravel Wrapper for the Binance API. Now easily connect and consume the Binance Public & Private API in your Laravel apps without any hassle.

This package provides a Laravel Wrapper for the Binance API and allows you to easily communicate with it. Important Note This package is in early deve

Moinuddin S. Khaja 7 Dec 7, 2022
This is an implementation of PSR specification. It allows you to send and consume message with Redis store as a broker.

This is an implementation of PSR specification. It allows you to send and consume message with Redis store as a broker.

Enqueue 35 Nov 4, 2022
A Symfony bundle built to schedule/consume repetitive tasks

Daily runs Code style Infection PHPUnit Rector Security Static analysis A Symfony bundle built to schedule/consume repetitive tasks Main features Exte

Guillaume Loulier 98 Jan 4, 2023
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
Phalcon Builder - is a packaging system that make it easy and quick to build Phalcon packages such as rpms, debs, etc. Phalcon's distribution that hosted at PackageCloud.

Phalcon Builder - is a packaging system that make it easy and quick to build Phalcon packages such as rpms, debs, etc. Phalcon's distribution that hos

The Phalcon PHP Framework 26 Oct 7, 2022
Tailwind UI is a Tailwind CSS component library designed by the authors of Tailwind CSS

Tailwind UI is a Tailwind CSS component library designed by the authors of Tailwind CSS. This is a Winter CMS plugin that provides a custom, TailwindUI-based skin for the backend.

Winter CMS 9 Dec 19, 2022
Laravel package to make it easy to use the gorgeous emojis from EmojiOne

laravel-emojione Laravel package to make it easier working with the gorgeous emojis from EmojiOne. Remember to read the EmojiOne Free License and prov

Christoffer Korvald 140 Nov 29, 2022
A status monitor for Elite Dangerous, written in PHP. Designed for 1080p screens in the four-panel-view in panel.php, and for 7 inch screens with a resolution of 1024x600 connected to a Raspberry Pi.

EDStatusPanel A status monitor for Elite Dangerous, written in PHP. Designed for 1080p screens in the four-panel-view in panel.php, and for 7 inch scr

marcus-s 24 Oct 4, 2022
Snuffleupagus is a PHP 7+ and 8+ module designed to drastically raise the cost of attacks against websites, by killing entire bug classes

Snuffleupagus is a PHP 7+ and 8+ module designed to drastically raise the cost of attacks against websites, by killing entire bug classes

Julien Voisin 625 Jan 3, 2023
This library uses GD and EXIF (optional) PHP extensions so make sure you have them installed.

simple and fast image processing class that can downscale, compress and convert images using php-gd native functions

Leon 8 Jul 15, 2022
Jump is yet another self-hosted startpage for your server designed to be simple, stylish, fast and secure.

Jump Jump is yet another self-hosted startpage for your server designed to be simple, stylish, fast and secure. Features Fast, easy to deploy, secure

Dale Davies 309 Dec 27, 2022
An extremely customizable BuildBattle mini-game designed for scalability and simplicity.

BuildBattle An extremely customizable BuildBattle mini-game designed for scalability and simplicity. Features Customisable messages and scoreboard Mul

null 11 Sep 18, 2022
Simple PHP/Laravel app that displays Todoist tasks in a view designed for a Kindle Touch

productivity-dashboard Just a simple PHP/Laravel app that retrieves (so far) tasks from Todoist and displays them in a simple view designed for a Kind

null 7 Dec 9, 2022
Simple PHP/Laravel app that displays Todoist tasks in a view designed for a Kindle Touch

productivity-dashboard Just a simple PHP/Laravel app that retrieves (so far) tasks from Todoist and displays them in a simple view designed for a Kind

null 3 Dec 27, 2021
PHP Web User Queue designed to run on shared hosting

WebUserQueue Introduction This is a web user queueing system written in PHP with a MySQL backend designed to run on shared hosting. It was designed to

Chris 0 Aug 13, 2022
Sslurp is a simple library which aims to make properly dealing with SSL in PHP suck less.

Sslurp v1.0 by Evan Coury Introduction Dealing with SSL properly in PHP is a pain in the ass and completely insecure by default. Sslurp aims to make i

Evan Coury 65 Oct 14, 2022
A PHP Library To Make Your Work Work Easier/Faster

This Is A Php Library To Make Your Work Easier/Faster,

functionality 2 Dec 30, 2022
This is a community-based project designed in the view of R.V.R & J.C College of Engineering hostel mess maintenance.

Hostel-Maintenance-System Introduction This is a community-based project designed in the view of R.V.R & J.C College of Engineering hostel mess mainte

 Datta Sai Mallipeddi 1 Oct 23, 2021