erenkucukersoftware/powerful-php

⚡ Laravel Helpers, Collections and Js like object oriented chaining for Native PHP

v1.0.0 2021-06-15 17:47 UTC

This package is not auto-updated.

Last update: 2022-05-18 20:56:59 UTC


README

License: MIT Twitter: yerenkucuker

⚡ Laravel Helpers, Collections and Js like object oriented chaining for Native PHP

Install

composer require erenkucukersoftware/powerful-php

🚀 Usage

Object Oriented Chaining

Example 1 :

Functional Approach
$snakeCase = strtolower(
    preg_replace('/(.)(?=[A-Z])/u', '$1_', 
        preg_replace('/\s+/u', '', 
            ucwords('HelloWorld')
        )
    )
);
             
var_dump($snakeCase); // "hello_world"
Object Oriented Approach
//powerfulphp

$snakeCase = 
    pipe('Hello World')
    ->ucwords(_)
    ->preg_replace('/\s+/u', '', _)
    ->preg_replace('/(.)(?=[A-Z])/u', '$1_', _)
    ->strtolower(_)
    ->var_dump;
//
// string(11) "hello_world"
//

Example 2 :

Passing Value Between Pipes

To pass a value as an argument to a function, use the underscore (_) character :

pipe('hello')
    ->str_replace('o', '', _)
    ->var_dump; // "hell"

Example 3 :

One Parameter Usage

You can omit parentheses if only one argument is used:

pipe('some')
    ->is_array
    ->dd; // bool(false) 

Example 4 :

Values
$context = pipe('hello')->strtoupper;

var_dump($context);
// object(Fun\Pipe\Pipe)#8 (1) { ... } 

var_dump($context());
// string(5) "HELLO"

Example 5 :

Namespaces

Calling single function from namespace

pipe()
    ->use('Some\\Namespace')->foo // Call "\Some\Namespace\foo()"
    ->foo // Call "\foo()"
;

Calling multiple function from namespace

pipe()
    ->use('Some\\Namespace', fn($pipe) => 
        $pipe
            ->a // Call "\Some\Namespace\a()"
            ->b // Call "\Some\Namespace\b()"
    )
    ->a // Call "a()"
;

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Author

👤 Eren Küçüker

Show your support

Give a ⭐️ if this project helped you!

68747470733a2f2f63352e70617472656f6e2e636f6d2f65787465726e616c2f6c6f676f2f6265636f6d655f615f706174726f6e5f627574746f6e4032782e706e67

📝 License

Copyright © 2021 Eren Küçüker.
This project is MIT licensed.