PHP Classes

PHP Optional Chaining: Chain class function calls preventing errors

Recommend this page to a friend!
     
  Info   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 91 All time: 9,935 This week: 660Up
Version License PHP version Categories
php-optionals 1.0MIT/X Consortium ...7Language, PHP 7
Description 

Author

This class can chain class function calls preventing errors.

It provides a wrapper to a given object so all calls to that object will go through this class in such way can in can queue chained calls to the wrapped object.

The class can all functions of the boxed object that were queued all at once by calling the unbox function of the box object of this class.

Innovation Award
PHP Programming Innovation award nominee
September 2019
Number 3


Prize: One subscription to the PDF edition of the PHP Architect magazine
Chaining is an approach used by many developers to make a sequence of calls to the functions of the same object by returning the object again to the next function call, so the developer has to write less code to call all the functions in a sequence.

The problem of this approach is that if one of the function calls fails, it may not return the object, thus breaking the sequence.

This package provides a workaround this problem by wrapping the function calls in a "box" class that can queue the function calls and call one function after another, unless one function fails.

Manuel Lemos
Picture of Axel Pardemann
  Performance   Level  
Name: Axel Pardemann <contact>
Classes: 11 packages by
Country: Mexico Mexico
Age: 42
All time rank: 187220 in Mexico Mexico
Week rank: 206 Up4 in Mexico Mexico Up
Innovation award
Innovation award
Nominee: 3x

Details

<div align="center">

<h1>PHP Optionals</h1>
<p align="center">
    <a href="https://packagist.org/packages/norse-blue/optionals"><img alt="Stable Release" src="https://img.shields.io/packagist/v/norse-blue/optionals.svg?style=flat-square&label=release&logo=packagist&logoColor=eceff4&colorA=4c566a&colorB=5e81ac"></a>
    <a href="https://travis-ci.com/norse-blue/php-optionals"><img alt="Build Status" src="https://img.shields.io/travis/com/norse-blue/php-optionals.svg?style=flat-square&label=build&logo=travis-ci&logoColor=eceff4&colorA=4c566a&colorB=88c0d0"></a>
    <a href="https://php.net/releases"><img alt="PHP Version" src="https://img.shields.io/packagist/php-v/norse-blue/optionals.svg?style=flat-square&label=php&logo=php&logoColor=eceff4&colorA=4c566a&colorB=b48ead"></a>
    <a href="https://codeclimate.com/github/norse-blue/php-optionals"><img alt="Maintainability" src="https://img.shields.io/codeclimate/maintainability/norse-blue/php-optionals.svg?style=flat-square&label=maintainability&logo=code-climate&logoColor=eceff4&colorA=4c566a&colorB=88c0d0"></a>
    <a href="https://codeclimate.com/github/norse-blue/php-optionals"><img alt="Test Coverage" src="https://img.shields.io/codeclimate/coverage/norse-blue/php-optionals.svg?style=flat-square&label=coverage&logo=code-climate&logoColor=eceff4&colorA=4c566a&colorB=88c0d0"></a>
    <a href="https://packagist.org/packages/norse-blue/optionals"><img alt="Total Downloads" src="https://img.shields.io/packagist/dt/norse-blue/optionals.svg?style=flat-square&label=downloads&logoColor=eceff4&colorA=4c566a&colorB=88c0d0"></a>
    <a href="https://github.com/norse-blue/php-optionals/blob/master/LICENSE.md"><img alt="License" src="https://img.shields.io/github/license/norse-blue/php-optionals.svg?style=flat-square&label=license&logoColor=eceff4&colorA=4c566a&colorB=a3be8c"></a>
</p>

</div> <hr>

PHP Optionals is a PHP library that allows you to chain method calls or access properties of an object while preventing errors from occurring.

Installation

>Requirements: >- PHP 7.3+

Install this package using Composer:

composer require norse-blue/optionals

Usage

To get more in-depth knowledge about this package, please refer to the Official Documentation.

Changelog

Please refer to the CHANGELOG.md file for more information about what has changed recently.

Contributing

Contributions to this project are accepted and encouraged. Please read the CONTRIBUTING.md file for details on contributions.

Credits

Security

Please review our security policy to know how to report security vulnerabilities within this package.

Support the development

Do you like this project? Support it by donating

<a href="https://www.buymeacoffee.com/axelitus"><img src="docs/assets/images/buy-me-a-coffee.svg" width="180" alt="Buy me a coffee"></img></a>

License

This package is open-sourced software licensed under the MIT license.


  Files folder image Files (37)  
File Role Description
Files folder image.changelog (3 files)
Files folder image.github (4 files, 1 directory)
Files folder imagedocs (2 files, 3 directories)
Files folder imagesrc (1 file, 1 directory)
Files folder imagetests (2 files, 1 directory)
Accessible without login Plain text file .codeclimate.yml Data Auxiliary data
Accessible without login Plain text file .editorconfig Data Auxiliary data
Accessible without login Plain text file .phpcs.xml.dist Data Auxiliary data
Accessible without login Plain text file .styleci.yml Data Auxiliary data
Accessible without login Plain text file .travis.yml Data Auxiliary data
Accessible without login Plain text file CHANGELOG.md Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file LICENSE.md Lic. License text
Accessible without login Plain text file php-optionals.sublime-project Data Auxiliary data
Plain text file phpinsights.php Class Class source
Accessible without login Plain text file phpstan.neon.dist Data Auxiliary data
Accessible without login Plain text file phpunit.xml.dist Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation
Accessible without login Plain text file SECURITY.md Data Auxiliary data

  Files folder image Files (37)  /  .changelog  
File Role Description
  Accessible without login Plain text file CHANGELOG-0.0.0.md Data Auxiliary data
  Accessible without login Plain text file CHANGELOG-0.1.0.md Data Auxiliary data
  Accessible without login Plain text file UNRELEASED.md Data Auxiliary data

  Files folder image Files (37)  /  .github  
File Role Description
Files folder imageISSUE_TEMPLATE (3 files)
  Accessible without login Plain text file CODE_OF_CONDUCT.md Data Auxiliary data
  Accessible without login Plain text file CONTRIBUTING.md Data Auxiliary data
  Accessible without login Plain text file FUNDING.yml Data Auxiliary data
  Accessible without login Plain text file PULL_REQUEST_TEMPLATE.md Data Auxiliary data

  Files folder image Files (37)  /  .github  /  ISSUE_TEMPLATE  
File Role Description
  Accessible without login Plain text file BUG_REPORT.md Data Auxiliary data
  Accessible without login Plain text file FEATURE_REQUEST.md Data Auxiliary data
  Accessible without login Plain text file QUESTION_DISCUSSION.md Data Auxiliary data

  Files folder image Files (37)  /  docs  
File Role Description
Files folder imageassets (2 directories)
Files folder imagesections (2 files)
Files folder image_sass (1 directory)
  Accessible without login Plain text file index.md Data Auxiliary data
  Accessible without login Plain text file _config.yml Data Auxiliary data

  Files folder image Files (37)  /  docs  /  assets  
File Role Description
Files folder imageimages (1 file)
Files folder imagejs (1 file)

  Files folder image Files (37)  /  docs  /  assets  /  images  
File Role Description
  Accessible without login Plain text file buy-me-a-coffee.svg Data Auxiliary data

  Files folder image Files (37)  /  docs  /  assets  /  js  
File Role Description
  Accessible without login Plain text file search-data.json Data Auxiliary data

  Files folder image Files (37)  /  docs  /  sections  
File Role Description
  Accessible without login Plain text file examples.md Data Auxiliary data
  Accessible without login Plain text file usage.md Data Auxiliary data

  Files folder image Files (37)  /  docs  /  _sass  
File Role Description
Files folder imagecustom (1 file)

  Files folder image Files (37)  /  docs  /  _sass  /  custom  
File Role Description
  Accessible without login Plain text file custom.scss Data Auxiliary data

  Files folder image Files (37)  /  src  
File Role Description
Files folder imageFunctions (1 file)
  Plain text file SchroedingerBox.php Class Class source

  Files folder image Files (37)  /  src  /  Functions  
File Role Description
  Accessible without login Plain text file box.php Aux. Auxiliary script

  Files folder image Files (37)  /  tests  
File Role Description
Files folder imageHelpers (2 files)
  Plain text file SchroedingerBoxTest.php Class Class source
  Plain text file TestCase.php Class Class source

  Files folder image Files (37)  /  tests  /  Helpers  
File Role Description
  Plain text file CatObject.php Class Class source
  Plain text file CatPropertyObject.php Class Class source

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:91
This week:0
All time:9,935
This week:660Up