PHPackages                             nazir/iofiles - 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. [File &amp; Storage](/categories/file-storage)
4. /
5. nazir/iofiles

ActiveLibrary[File &amp; Storage](/categories/file-storage)

nazir/iofiles
=============

Class for handling file (read, write, upload, move, download, resize image, crop, add watermark, etc)

v1.0.2(9y ago)070MITPHPPHP &gt;=5.3.2

Since Feb 5Pushed 9y ago1 watchersCompare

[ Source](https://github.com/NazirArifin/IOFiles)[ Packagist](https://packagist.org/packages/nazir/iofiles)[ RSS](/packages/nazir-iofiles/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (3)Dependencies (1)Versions (3)Used By (0)

IOFiles
=======

[](#iofiles)

Menghandle beberapa hal umum yang berhubungan dengan file seperti save, read, move, upload, force download, zip, extract, resize image, crop image, watermark, dsb. Tidak semua fungsi dalam Filesystem PHP ada dalam class ini.

Tabel Isi / Table of Contents
-----------------------------

[](#tabel-isi--table-of-contents)

1. [Inisialisasi Object Baru](#--inisialisasi-object-baru)
2. [Operasi Pada File](#--operasi-pada-file)
3. [Upload File](#--upload-file)
4. [Operasi ZIP](#--operasi-zip)
5. [Operasi Gambar / Image](#--operasi-gambar--image)

Instalasi / Installation
------------------------

[](#instalasi--installation)

Unduh file dalam folder scr atau gunakan composer dengan perintah:

```
$ composer require nazir/iofiles
```

Penggunaan / Usage
------------------

[](#penggunaan--usage)

### - Inisialisasi Object Baru

[](#--inisialisasi-object-baru)

```
use \IOFiles\IOFiles;
$iofiles = new IOFiles;
\\ jika tanpa use maka $iofiles = new \IOFiles\IOFiles;
```

setelah ini object menggunakan beberapa public method sebagai berikut:

### - Operasi Pada File

[](#--operasi-pada-file)

#### a. Menggandakan file (*copy*)

[](#a-menggandakan-file-copy)

```
$iofiles->copy($file, $destination);
```

#### b. Memindah file ke lokasi baru (*move*)

[](#b-memindah-file-ke-lokasi-baru-move)

```
$iofiles->move($oldfile, $newfile);
```

#### c. Mengubah nama file (*rename*)

[](#c-mengubah-nama-file-rename)

```
$iofiles->rename($oldfile, $newfile);
```

#### d. Menghapus file (*delete*)

[](#d-menghapus-file-delete)

```
$iofiles->delete($file);
```

#### e. Memaksa *browser* mendownload file (*force download*)

[](#e-memaksa-browser-mendownload-file-force-download)

```
$iofiles->download($file);
```

Fungsi ini harus dipanggil sebelum ada output apapun karena dia akan mengeset beberapa header.

#### f. Gzip file

[](#f-gzip-file)

```
$iofiles->gz_file($file);
```

File hasil gzip akan diletakkan bersebelahan dengan file sumber dengan nama `filesumber.gz`

#### g. Lihat properti file (*properties*)

[](#g-lihat-properti-file-properties)

```
$iofiles->get_attrib($file, [$flags]);
```

`$flag` bisa berisi string salah satu atribut berikut atau array berisi kumpulan atribut (jika semua semua atribut akan di-*return*):

- `'size'` - ukuran file (dalam bytes)
- `'name'` - nama file
- `'type'` - jenis file
- `'path'` - lokasi path file
- `'perms` - hak akses pada file
- `'read'` - apakah file dapat dibaca (true/false), menggunakan PHP is\_readable() lebih baik
- `'write'` - apakah file dapat ditulis (true/false), menggunakan PHP is\_writeable() lebih baik
- `'accessed'` - kapan terakhir file diakses dengan format `(Y-m-d H:i:s)`
- `'modified'` - kapan terakhir file diubah dengan format `(Y-m-d H:i:s)`

Contoh penggunaan yang valid adalah:

```
$iofiles->get_attrib('index.php', 'size');
$iofiles->get_attrib('index.php', array('size', 'perms');
```

#### h. Lihat ekstensi file (*extension*)

[](#h-lihat-ekstensi-file-extension)

```
$iofiles->get_type($file)
```

Mendapatkan ekstensi dari file di UPPERCASE. Contoh `index.php` -&gt; `'PHP'`

#### i. Mencari file (*find*)

[](#i-mencari-file-find)

```
$iofiles->find($keyword, [$directory]);
```

`$directory` adalah folder dimana file dicari, defaultnya adalah *current\_directory* (.). Return array nama file jika ada file yang sesuai.

#### j. Mencari file (*search*)

[](#j-mencari-file-search)

```
$iofiles->search($keyword, [$directory]);
// sama dengan $iofiles->find(..) :D
```

#### k. Membaca isi file (*read*)

[](#k-membaca-isi-file-read)

```
$iofiles->read($file, [[[$returnType], [$length]], [$readType]]);
```

- `$returnType` : dengan nilai valid **1** (output berupa *string*), **2** (output berupa *array* dengan pemisah baris sebagai delimiter).
- `$length` : bytes maksimal pembacaan file, defaultnya adalah sesuai ukuran file
- `$readType` : mode baca dengan nilai **1** (mode text), **2** (mode biner)

#### l. Menulis data ke file (*write*)

[](#l-menulis-data-ke-file-write)

```
$iofiles->write($file, [[$content], [$mode]]);
```

`$mode` bisa diisi dengan nilai `'ab'` alias *append* (default), `'wb'` alias *overwrite*, dsb. **Warning**: tidak ada validasi jika mode yang dimasukkan invalid. Lihat dokumentasi di PHP untuk mode yang valid.

### - Upload File

[](#--upload-file)

#### a. Konfigurasi (*configuration*)

[](#a-konfigurasi-configuration)

```
$iofiles->upload_config($config);
```

Harus dipanggil sebelum proses upload dimulai. `$config` berisi array dengan nilai valid sebagai berikut:

- `'max_size'` - ukuran maksimum file, juga dibatasi di `php.ini`
- `'max_filename'` - ukuran maksimum nama file
- `'allowed_types'` - ekstensi yang diperbolehkan, contoh: `'jpg|jpeg|png'`
- `'upload_path'` - lokasi untuk meletakkan file hasil upload
- `'overwrite'` - (true/false)
- `'encrypt_name'` - (true/false) apakah nama file baru diganti nama acak

Contoh penggunaan yang valid adalah:

```
$iofiles->upload_config(
    array(
        'allowed_types' => 'docx|pdf',
        'overwrite' => true,
        'encrypt_name' => true
    )
);
$iofiles->upload('userfile');
```

#### b. Proses Upload (*uploading*)

[](#b-proses-upload-uploading)

```
$iofiles->upload([$field]);
```

`$field` adalah nama yang dikirim untuk input file (defaultnya: `'userfile'`). **Pastikan memanggil fungsi ini SETELAH** `$iofiles->upload_config()`.

#### c. Mendapatkan parameter upload (**get params**)

[](#c-mendapatkan-parameter-upload-get-params)

```
$iofiles->upload_get_param($paramName);
```

Beberapa informasi saat upload dapat dipanggil dengan menggunakan fungsi ini menggunakan nilai sebagai berikut:

- `'file_temp'` - nama file temp saat upload
- `'file_size'` - ukuran file yang diupload
- `'file_type'` - jenis file
- `'orig_name'` - nama file asli
- `'file_ext'` - ekstensi file
- `'file_name'` - nama hasil upload (terutama jika `encrypt_name` bernilai `true`

#### d. Mendapatkan error saat upload (*show error*)

[](#d-mendapatkan-error-saat-upload-show-error)

```
$iofiles->upload_show_error();
```

### - Operasi ZIP

[](#--operasi-zip)

#### a. Mampatkan file dengan ZIP (*zip compress*)

[](#a-mampatkan-file-dengan-zip-zip-compress)

```
$iofiles->zip_compress($file, [$zipName]);
```

`$file` bisa berisi *string* (satu file) atau *array* (beberapa file). Hasil zip akan diletakkan bersebelahan dengan file sumber.

#### b. Ekstraksi ZIP (*zip extraction*)

[](#b-ekstraksi-zip-zip-extraction)

```
$iofiles->zip_extract($zipfile, $destdir);
```

### - Operasi Gambar / Image

[](#--operasi-gambar--image)

#### a. Konfigurasi (*configuration*)

[](#a-konfigurasi-configuration-1)

```
$iofiles->image_config($config);
```

Harus dipanggil sebelum proses operasi gambar dimulai. `$config` berisi array dengan nilai valid sebagai berikut:

- `'source_image'` - gambar yang akan dioperasikan
- `'new_image'` - nama file baru hasil operasi
- `'width'` - lebar baru gambar (untuk *resize*)
- `'height'` - tinggi baru gambar (untuk *resize*)
- `'quality'` - kualitas gambar (0-100)
- `'maintain_ratio'` - menjaga rasio gambar (true/false)
- `'rotation_angle'` - sudut rotasi (\*hanya untuk rotasi gambar)
- `'wm_type'` - jenis watermark, (`'text'`, `'overlay'`)
- `'wm_use_drop_shadow'` - watermark dengan drop shadow (true/false) default false
- `'wm_use_truetype'` - watermark dengan font truetype (true/false) default false
- `'wm_text'` - teks untuk dijadikan watermark
- `'wm_overlay_path'` - path gambar untuk dijadikan watermark
- `'wm_font_path'` - path font jika menggunakan truetype
- `'wm_font_size'` - ukuran font watermark
- `'wm_vrt_alignment'` - letak watermark secara vertikal, (`'T'` untuk atas, `'M'` untuk tengah, dan `'B'` untuk bawah)
- `'wm_hor_alignment'` - letak watermark secara horizontal, (`'L'` untuk kiri, `'C'` untuk tengah, `'R'` untuk kanan)
- `'wm_font_color'` - warna font watermark dengan kode hexa, contoh `'#ffffff'`
- `'wm_shadow_color'` - warna shadow watermark, dengan kode hexa
- `'wm_shadow_distance'` - jarak shadow dengan teks asli
- `'wm_opacity'` - opasitas watermark (untuk gambar) dengan nilai 1-100 Contoh penggunaan yang valid adalah:

```
$iofiles->image_config(
    array(
        'source_image' => 'yourimage.png',
        'maintain_ratio' => true,
        'wm_type' => 'text',
        'wm_text' => 'Copyright 2017'
    )
);
```

#### b. Memotong gambar (*crop*)

[](#b-memotong-gambar-crop)

```
$iofiles->image_crop();
// pastikan image_config sudah dipanggil
```

#### c. Mengubah ukuran gambar (*resize*)

[](#c-mengubah-ukuran-gambar-resize)

```
$iofiles->image_resize();
```

#### d. Memutar gambar (*rotate*)

[](#d-memutar-gambar-rotate)

```
$iofiles->image_rotate();
```

#### e. Lakukan watermark (*image watermark*)

[](#e-lakukan-watermark-image-watermark)

```
$iofiles->image_watermark();
```

#### f. Efek berkaca (*image mirror*)

[](#f-efek-berkaca-image-mirror)

```
$iofiles->image_mirror();
```

#### g. Dapatkan error saat proses (*show error*)

[](#g-dapatkan-error-saat-proses-show-error)

```
$iofiles->image_show_error();
```

#### h. Bersihkan proses (*clear*)

[](#h-bersihkan-proses-clear)

```
$iofiles->image_clear();
```

Untuk memastikan bahwa semua bersih maka panggil fungsi ini ketika proses selesai atau ketika akan melakukan proses operasi gambar lagi.

Kredit? / Credits
-----------------

[](#kredit--credits)

Beberapa fungsi diadaptasi dari kode di [CodeIgniter](http://codeigniter.com)

License / Lisensi
-----------------

[](#license--lisensi)

MIT **Free Software**

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

3431d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7fd0f94ca9c988eb61973c72fe163fb4501f8dedc4beab9cb8ccb523b44f0926?d=identicon)[nazir](/maintainers/nazir)

---

Top Contributors

[![NazirArifin](https://avatars.githubusercontent.com/u/1496816?v=4)](https://github.com/NazirArifin "NazirArifin (11 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/nazir-iofiles/health.svg)

```
[![Health](https://phpackages.com/badges/nazir-iofiles/health.svg)](https://phpackages.com/packages/nazir-iofiles)
```

###  Alternatives

[venveo/craft-compress

Create smart zip files from Craft assets on the fly

124.7k](/packages/venveo-craft-compress)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
