Skip to content

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

Notifications You must be signed in to change notification settings

erenkucuker/powerful-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Welcome to Powerful PHP 🦾

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!

📝 License

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

About

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

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published