PHPackages                             rkwp/object-iterable-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. rkwp/object-iterable-laravel

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

rkwp/object-iterable-laravel
============================

A utility library for ObjectIterable and global function.

v1.0.7(1y ago)332PHP

Since Oct 19Pushed 1y ago1 watchersCompare

[ Source](https://github.com/rezaawp/object-iterable-datatype-laravel)[ Packagist](https://packagist.org/packages/rkwp/object-iterable-laravel)[ RSS](/packages/rkwp-object-iterable-laravel/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (9)Used By (0)

Sejarah Singkat ObjectIterable
==============================

[](#sejarah-singkat-objectiterable)

ObjectIterable saya buat karena kebutuhan kerja saya, saya tidak ingin ketika saya akses data array berdasarkan key / property harus case sensitive

Fungsi:

- ObjectIterabe akan membantu kamu untuk mengabaikan case sensitive ketika mencoba akses array.
- ObjectIterabe otomatis mengconvert array menjadi class (class disini bisa berperilaku seperti array, jadi kamu bisa akses seperti array pada umumnya)

    Berikut adalah dokumentasi untuk penggunaan class `ObjectIterable` yang mengonversi array ke objek dan mengabaikan case sensitivity saat mengakses array, serta mendeteksi jika suatu properti adalah array dan mengonversinya secara otomatis ke `RowData`.

Install
-------

[](#install)

```
composer require rkwp/object-iterable-laravel

```

### **Pembuatan ObjectIterable**

[](#pembuatan-objectiterable)

Untuk membuat instance dari `ObjectIterable`, cukup masukkan array yang ingin dikonversi:

```
$array = [
    'NAME' => 'John Doe',
    'email' => 'johndoe@example.com',
    'ADDRESS' => [
        'CITY' => 'New York',
        'ZIP' => '10001',
    ],
];

$objectIterable = objectIterable($array);
```

### **Akses Properti dengan Case Insensitive**

[](#akses-properti-dengan-case-insensitive)

Setelah array dikonversi, Anda dapat mengakses nilai-nilai di dalamnya secara case-insensitive. Misalnya:

```
echo $objectIterable->name; // Output: John Doe
echo $objectIterable->EMAIL; // Output: johndoe@example.com
```

### **Akses Properti yang Merupakan Array**

[](#akses-properti-yang-merupakan-array)

Jika properti berisi array, properti tersebut secara otomatis akan dikonversi menjadi objek `RowData`:

```
echo $objectIterable->address->city; // Output: New York
echo $objectIterable->ADDRESS->ZIP;  // Output: 10001
```

### **Penggunaan dengan `foreach` (Iterator)**

[](#penggunaan-dengan-foreach-iterator)

Anda dapat melakukan iterasi menggunakan `foreach` jika data array sudah di konversi menjadi objectIterable. Berikut contohnya:

```
foreach ($objectIterable as $item) {
    echo $item->name;
    echo $item->email;
    echo $item['email'];
    echo $item['EMAIL'];
}
```

Untuk array di dalam properti, iterasi akan bekerja sama:

```
foreach ($objectIterable->address as $key => $value) {
    echo "$key: $value";
}
```

### **Mengonversi Kembali ke Semi Array**

[](#mengonversi-kembali-ke-semi-array)

Jika Anda ingin mengonversi objek kembali menjadi semi array, gunakan metode `toArray()`:

```
$array = $objectIterable->toArray();
```

### **Mengonversi Kembali ke Array**

[](#mengonversi-kembali-ke-array)

Jika Anda ingin mengonversi objek kembali menjadi array, gunakan metode `forceArray()`:

```
$array = $objectIterable->forceArray();
```

### **Mengonversi ke Laravel Collection**

[](#mengonversi-ke-laravel-collection)

Jika Anda menggunakan Laravel dan ingin memanfaatkan Collection, gunakan metode `toCollect()`:

```
$collection = $objectIterable->toCollect();
```

### **Menggunakan JSON Serialize**

[](#menggunakan-json-serialize)

Anda dapat mengubah instance `ObjectIterable` ke JSON menggunakan `json_encode()`:

```
$json = json_encode($objectIterable); // Menghasilkan JSON dari objek
```

### **ArrayAccess (Akses seperti Array)**

[](#arrayaccess-akses-seperti-array)

`ObjectIterable` dan `RowData` juga mendukung akses seperti array:

```
echo $objectIterable['name']; // Output: John Doe
```

Jika properti merupakan array, maka akan tetap bisa diakses seperti ini:

```
echo $objectIterable['ADDRESS']['CITY']; // Output: New York
```

### **Penghitungan Jumlah Item**

[](#penghitungan-jumlah-item)

Anda dapat menggunakan `count()` untuk mengetahui jumlah elemen dalam `ObjectIterable`:

```
echo count($objectIterable); // Output: jumlah elemen dalam array
```

### **Case Sensitive**

[](#case-sensitive)

Pada awalnya objectIterable ini dibuat untuk mengabaikan case sensitive, namun jika kamu ingin case sensitive, tambahkan parameter kedua menjadi `false`

```
$objectIterable = objectIterable($array, false);
```

### Contoh Kasus

[](#contoh-kasus)

```
$data = [
    'Name' => 'Alice',
    'age' => 30,
    'Address' => [
        'Street' => '123 Main St',
        'City' => 'Wonderland',
    ]
];

$object = objectIterable($data);

echo $object->name; // Alice
echo $object->address->city; // Wonderland

$arrayBack = $object->toArray();
```

Ini adalah cara pemakaian dasar dari class `ObjectIterable` yang Anda buat untuk mengonversi array ke objek dan memberikan akses yang lebih fleksibel dengan fitur case-insensitive serta otomatisasi dalam penanganan properti berjenis array.

Lalu bagaimana untuk definisikan data object?
---------------------------------------------

[](#lalu-bagaimana-untuk-definisikan-data-object)

Mungkin jika kamu sudah terbiasa menggunakan TypeScript sudah tidak asing lagi dengan autocomplete yang membantu kamu mengetahui sebuah objek itu akan return property apa saja. Di TypeScrpt bisa mengggunakan tipe data custom dan interface.

Nah, dengan object iterable juga, berikut cara cara nya:

Setelah itu, daftarkan artisan command di project laravel kamu. Ada di file: `app/Console/Kernel.php`Kemdian tambahkan ini:

```
protected $commands = [
    \RKWP\Commands\GenerateDataTypeAndDataStructure::class
];
```

- Jalankan `php artisan make:data-type {NamaType} {property1,property2} {?isArrayOrNot}`
- Contoh: `php artisan make:data-type Users/User id,name,email,created_at,status,profile` atau `php artisan make:data-type Users/User id,name,email,created_at,status,profile`
- Setalah itu, maka akan terbuat file baru di `app/DataType/Users/TUser.php` yang berisi:

```
