PHP code example of lyhty / macros
1. Go to this page and download the library: Download lyhty/macros library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
lyhty / macros example snippets
$query = User::query()->selectKey();
$query->toSql(); // "select `id` from `users`"
$query = User::query()->selectRawArr([
'concat(`id`, "-", `name`) as id_name',
'concat(`email`, "-", `name`) as email_name'
]);
// 🤩
$query->first()->toArray(); // ["id_name" => "1-Matti", "email_name" => "[email protected] "]
// Instead of:
$query = User::query()->selectRaw('concat(`id`, "-", `name`) as id_name, concat(`email`, "-", `name`) as email_name');
// 🤢
$data = new Collection([1,2,3]);
$data->mergeMany([4], [5], [6]); // [1, 2, 3, 4, 5, 6]
$data = User::query()->get();
$data->pick(['id', 'name', 'metadata.loggedIn'])->toArray();
// [[1, "Matti Suoraniemi", true], [2, "Foo Bar", false]]
$data->pick(['id', 'name', 'metadata.loggedIn'], 1)->toArray();
// [
// ["id" => 1, "name" => "Matti Suoraniemi", "loggedIn" => true],
// ["id" => 2, "name" => "Foo Bar", "loggedIn" => false]
// ]
$data->pick(['id', 'name', 'metadata.loggedIn'], 2)->toArray();
// [
// ["id" => 1, "name" => "Matti Suoraniemi", "metadata" => ["loggedIn" => true]],
// ["id" => 2, "name" => "Foo Bar", "metadata" => ["loggedIn" => false]]
// ]
use Illuminate\Database\Eloquent\Model;
$data = new Collection([
\App\Models\User::class,
\App\Models\Game::class,
\App\Models\Console::class,
\App\Models\Hobby::class,
]);
$data->whereExtends(Model::class)->count(); // 4
use App\Contracts\PlayableOnConsole;
$data = new Collection([
\App\Models\User::class,
\App\Models\Game::class,
\App\Models\Console::class,
\App\Models\Hobby::class,
]);
$data->whereImplements(PlayableOnConsole::class)->toArray(); // ["App\Models\Game"]
use Illuminate\Notifications\Notifiable;
$data = new Collection([
\App\Models\User::class,
\App\Models\Game::class,
\App\Models\Console::class,
\App\Models\Hobby::class,
]);
$data->whereUses(Notifiable::class)->toArray(); // ["App\Models\User"]
Arr::associate(['foo']); // ["foo" => null]
Arr::associate(['foo', 'bar' => []], []); // ["foo" => [], "bar" => []]
Arr::associate(['foo', 'bar' => []], fn () => Arr::random(['foo', 'bar'])); // ["foo" => "foo", "bar" => []]
Arr::associate([fn () => Str::reverse('foo'), 'bar' => []]); // ["oof" => null, "bar" => []]
Arr::combine(['foo', 'zoo'], ["bar", "gar"]); // ["foo" => "bar", "zoo" => "gar"]
Arr::combine(['foo', 'zoo'], ["bar"]); // ["foo" => "bar", "zoo" => null]
$array = ['foo' => 'bar', 'zoo' => 'gar'];
Arr::fillKeys($array, ['foo', 'zoo'], null); // ["foo" => null, "zoo" => null]
Arr::fillKeys($array, ['foo', 'zoo', 'boo'], null); // ["foo" => null, "zoo" => null, "boo" => null]
Arr::fillKeys($array, ['foo', 'zoo', 'boo'], null, true); // ["foo" => null, "zoo" => null]
$array = ['foo', 'bar'];
(string) Arr::implode($array, ' ')->upper(); // "FOO BAR"
Arr::zip(['foo' => 'bar', 'zoo' => 'gar'], ':'); // ["foo:bar", "zoo:gar"]
Arr::unzip(['foo:bar', 'zoo:gar'], ':'); // ["foo" => "bar", "zoo" => "gar"]
Str::explodeReverse('games.platforms.name', '.', 2)->toArray(); // ['games.platforms', 'name']
// Whereas normal explode function would do:
explode('.', 'games.platforms.name', 2); // ['games', 'platforms.name']
Str::wrapWith('foo', ':'); // ":foo:"
Str::wrapWith('bar', '<', '>'); // "<bar>"
Str::wrapWith('!zoo', '!'); // "!zoo!"
Str::wrapWith(':foo', ':'); // ":foo:"
Str::wrap(':foo', ':'); // "::foo:"
Str::of('games.platforms.name')->explodeReverse('.', 2)->toArray(); // ['games.platforms', 'name']
// Whereas normal explode function would do:
Str::of('games.platforms.name')->explode('.', 2)->toArray(); // ['games', 'platforms.name']
(string) Str::of('foo')->upper()->wrapWith(':'); // ":FOO:"
(string) Str::of('bar')->upper()->wrapWith('<', '>'); // "<BAR>"
(string) Str::of('!zoo')->upper()->wrapWith('!'); // "!ZOO!"
$dates = CarbonPeriod::between('yesterday', 'today')->collect();
$dates->first()->toDateTimeString(); // "2022-06-14 00:00:00"