CodeIgniter 4 (pre-alpha)

CodeIgniter 4 is On The Way

Saya sangat senang mendengar bahwa CodeIgniter 4 sedang dalam masa pembuatan. Saya merupakan salah satu penggemar dari  framework  CodeIgniter PHP ini. Framewoork ini sedang menderita akhir-akhir ini bahwa itu tidak dipertahankan dengan perkembangan PHP terbaru, tidak memiliki namespace, tidak HMVC. Bahkan banyak yang mengacu pada  framework lain seperti Laravel atau Symphony. Saya bertahan karena banyak client saya yang memiliki perangkat lunak berbasis pada CodeIgniter server back-end.

 

CodeIgniter 4(Pre-alpha) bukan CodeIgniter 3

Sejak BCIT(British Columbia Institute of Technology) mengambil CodeIgniter di bawah perlindungan mereka kereta masuk gerak lagi. CodeIgniter versi 3 melihat cahaya itu dan sangat banyak kompatibel dengan versi 2. Bahkan dengan mengubah modal di sini dan di sana Anda bisa bermigrasi aplikasi dalam “sekejap”. Baru-baru ini CodeIgniter 4 telah dibuka untuk umum dalam versi prealpha. Kami mengambil pandangan pada seberapa jauh itu. Hal ini secara bebas direncanakan berada dalam versi produksi putaran tersedia April 2017.

Nah hal pertama yang saya perhatikan adalah bahwa ia memiliki beberapa perubahan. Bahkan pada awalnya sekilas tidak terlihat seperti CodeIgniter seperti yang biasa kita gunakan. BCIT memutuskan untuk membersihkan ship, tidak ada untuk membangun kembali ship. Karena dokumentasi adalah murni sebagai perkembangan itu sendiri, butuh waktu untuk mencari tahu bagaimana semuanya cocok di ship baru yang disebut CodeIgniter 4, yang hanya akan menjalankan dimulai dengan versi PHP 7. Figur pertama keluar jika penyedia host anda mendukung atau jika diinstal server lokal anda sendiri. CodeIgniter 4 TIDAK kompatibel dengan CodeIgniter 3.

Hal pertama yang saya perhatikan adalah bahwa sekarang semuanya berhubungan dengan namespace. Tidak ada lagi $this-> load-> model ( ‘sesuatu’) tetapi anda harus mengenal “use” dan referensi “Back Slashed” dan namespace.

 

Apa yang tetap dan apa yang hilang ?

Dalam review kecil dan tidak lengkap ini saya tidak akan berbicara tentang “pandangan”, karena saya belum sampai sejauh itu. Saya akan berbicara tentang “pandangan” dalam artikel selanjutnya karena saya akan mengikuti perkembangan dari CodeIgniter versi 4.

CodeIgniter masih merupakan MVC (model-view-controller) framework dan tim pengembang sangat jelas tentang HMVC (hierarchical-model-view-controller), tidak akan dilaksanakan. HMVC adalah kumpulan triad MVC tradisional beroperasi sebagai salah satu aplikasi. Setiap triad benar-benar independen dan dapat mengeksekusi tanpa kehadiran yang lain.

Apa yang Anda akan lihat langsung adalah struktur jalan yang berbeda. Anda sekarang akan menemukan “application”, “system” dan path “public”. Yang perlu penjelasan. Ide di balik semua ini adalah bahwa “public” path harus menjadi path root aplikasi web Anda. Ini berarti bahwa “system” dan “applications” akan disembunyikan dari mata publik. Ini meningkatkan keamanan. Juga di belakang mata publik adalah “writeable” folder, yang memiliki akses tulis, tetapi tidak langsung dapat diakses oleh URL.

 

Tidak ada perbedaan dalam objek pemuatan

CodeIgniter memperlakukan pemuatan Model, Libraries dan obyek lainnya dengan cara yang sama. Auto loading Model atau Libraries serta obyek lain yang bisa dilakukan dalam “autoload.php” di folder “config”. Ada yang Anda miliki dalam konstruktor array $psr4 dan array $ classMap, yang dapat digunakan untuk autoload objek. Tidak ada perbedaan antara class pada autoloading. Anda harus memberitahu apa namespace dan di mana dapat ditemukan.

1

 

 

 

Contoh di atas menunjukkan bagaimana alias namespace dibuat untuk objek non-CodeIgniter di folder “thirdparty” dalam folder “aplikasi”.

 

Memuat Model dan Perpustakaan di controller

 

Kutipan di bawah (dari working application) menunjukkan bagaimana Anda memuat model dan libraries di controller.

Sampel memiliki class model bernama “TmdbModel” dan kelas libraries bernama “Tmdb”. Perhatikan “penggunaan” deklarasi. Anda harus terbiasa dengan itu (saya lakukan), tetapi Anda akan terbiasa untuk itu dengan cepat. Saya harus mendeklarasikan “CodeIgniter \ HTTP \” interface untuk saya dapat mengetahui kesalahan pada parent construct ketika saya tidak menambahkan $Request dan variabel $response. Hanya meninggalkan parameter keluar tidak berhasil.

2

Seperti yang Anda lihat class model dan class library dinyatakan sebagai objek baru. Anda tidak menggunakan $ this-> load-> model yang dan $ this-> load-> library lagi, yang sebenarnya juga menciptakan objek.

Baris terakhir kode dalam sampel di atas adalah helper (‘download’). Ini adalah cara untuk memuat helper. Di sini saya memiliki “download” helper, yang saya salin dari CodeIgniter 3 inti dalam folder aplikasi saya “helpers”. Dalam versi final saya berharap bahwa banyak helpers inti dari versi 3 akan menjadi bagian dari inti dari versi 4.

 

Database dan Input

Class database telah dimodifikasi sedikit. Beberapa fungsi telah hilang dan beberapa ada metode yang berbeda (tapi mungkin tidak semuanya diimplementasikan).

  • $query->num_rows() sudah di modifikasi menjadi :

          count($query->getResult())

  • $query->firstRow()sudah di modifikasi menjadi :

          $row = $query->getRow(0);

  • $query->result() sudah di modifikasi menjadi :

          $query->getResult()

  • $this->db->insert(‘table’, $record) sudah di modifikasi menjadi :

          $this->db->table(‘table’)->insert($record);

  • Input class diganti dengan request class ini berarti bahwa :

          $search = $this->input->post(‘search’);

               Menjadi

          $search = $this->request->getPost(‘search’);

 

Libraries sebagai interface Untuk class non-CodeIgniter

Saya menggunakan class library sebagai interface untuk third party atau class seperti TCPDF (karya PDF) atau PHPExcel (karya Excel). Saya meletakkan isi seperti paket third party dalam folder “third party” (seperti sekarang “thirdparty“) dan membuat class library CodeIgniter yang memperluas main class third party. Saya memiliki library bernama “Tmdb” dan di folder thirdparty saya memiliki script php “tmdb-v3.php” yang tidak ada hubungannya dengan CodeIgniter dan berisi class dengan panggilan TMDB API. Sampel di bawah ini menunjukkan bagaimana saya melakukannya di CodeIgniter 4.

3

referensi TMDB_API di autoload.php di folder “config” (penting !!!)

4

Penggunaan dalam model (TmdbModel.php)

5

 

 

Kint, var_dump pada steroid 

Saya sangat antusias dengan integrasi Kint ke CodeIgniter. Layanan ini memberikan cara mudah untuk membuang variabel dengan cara yang menakjubkan. Anda hanya mengaktifkannya dengan mengubah index.php di folder publik.

$useKint = true;

Setelah itu diaktifkan, Anda hanya dapat menggunakan “d” (dump) dan “dd” (dump-die) berfungsi untuk membuang variabel Anda. Hasilnya terlihat seperti ini:

KINT, var_dump on steriods

 

 

Development, Testing dan Produksi

CodeIgniter memberikan kemungkinan untuk mengatur environment Anda. Anda dapat melakukannya dengan mengubah file .htaccess Anda. Anda dapat menggunakan “development“, “testing” atau “production“.

     # Mengatur environment yang CodeIgniter jalankan dibawah di bawah.

     SetEnv CI_ENV  development 

Dengan parameter set ini, ini akan menggunakan sesuai boot dari aplikasi / config / folder booting. Toolbar diaktifkan secara default dalam environment apapun kecuali “production”. Ini akan ditampilkan setiap kali CI_DEBUG terus menerus didefinisikan dan nilai itu adalah positif. Ada kemungkinan bahwa fitur ini tidak akan bertahan sampai versi final. Itu akan menjadi pitty, karena itu menunjukkan informasi yang berguna. Mungkin harus opsional dengan konstan lain seperti CI_DEBUG_TBAR.

8

 

 

Github dan Dokumentasi

Anda bisa mendapatkan CodeIgniter 4 (pre-alpha) dari Github: https://github.com/bcit-ci/CodeIgniter4.

 

Membuat dokumentasi pada sistem Windows

Itu sedikit dari teka-teki untuk mendapatkan dokumentasi dari repositori Github dikonversi ke format HTML. Dalam folder: “user_guide_src” di repositori Github Anda akan menemukan instruksi tentang cara menginstal dokumentasi, yang secara default tidak dalam format html.

Di bawah ini saya telah menambahkan beberapa petunjuk tambahan untuk pengguna Windows. Setelah Anda telah mengeksekusi langkah-langkah ini Anda dapat mengikuti petunjuk di petunjuk di repositori Github.

 

Ganti <drive> dengan drive identifier di mana Anda telah menginstal Python f.e. “C:”.

  • Instal Python (2.7.2) dari: http://python.org/download/releases/2.7.2/
  • Setelah menginstal Python Anda akan menemukan easy_install executable dalam direktori: <drive>: \ Python27 \ scripts
  • Anda bisa mendapatkan “make” executable dengan memasang MinGW dari: http://www.mingw.org/wiki/Getting_Started. Cara termudah adalah dengan menginstal installer grafis dan kemudian setelah diinstal dan mulai manajer instalasi MinGW, pilih saja paket msys-base. Dengan pilihan menu: instalasi-> Terapkan perubahan Anda dapat menginstal file yang dibutuhkan.
  • Pastikan Anda memiliki berikut ini di path Anda sebelum  membuat html:
    • <Drive>: \ Python27
    • <Drive>: \ Python27 \ scripts
    • <Drive>: \ MinGW \ msys \ 1.0 \ bin
  • Setelah memodifikasi path di variabel environment Anda, tutup kotak DOS dan buka kembali, path anda diubah sekarang sudah diterapkan. Sekarang ikuti petunjuk di repositori Github tentang cara untuk melakukan ‘make’.

Cara termudah untuk mendapatkan dokumentasi yang dihasilkan di browser Anda adalah dengan membuat folder “user_guide” di folder “public” dan copy folder “html” dari folder “build” ke folder itu. Anda kemudian dapat membukanya dengan: http: // <yourserver> / user_guide.

 

Ke mana CodeIgniter akan membawa kita, dan dirinya sendiri?

Saya sangat senang setelah melihat sekilas pertama di CodeIgniter 4. Apakah akan meyakinkan pengembang CodeIgniter saat ini untuk membuat melompat ke kerangka PHP sepenuhnya didesain ulang? Atau akan para pengembang yang ada mencari kerangka kerja yang sebanding. Bagi saya itu terlihat sangat menjanjikan karena dalam satu aspek masih sangat banyak CodeIgniter, tidak memiliki banyak untuk ekstra yang membuat semua sangat kompleks untuk melaksanakan. Itulah salah satu hal yang saya tidak suka tentang LARAVEL misalnya. Saya hanya ingin mengatakan kepada semua developer CodeIgniter di luar sana, pantau terus CodeIgniter dan lihat apa update mendatang akan membawa dan bahkan mungkin lebih baik; cobalah.

Satu artikel tidak cukup untuk mengatakan segala sesuatu yang datang dengan CodeIgniter baru, tapi katakanlah itu sebuah awal. Saya sangat bersemangat. Saya akan menerbitkan beberapa artikel lebih lanjut tentang perkembangan saya  buat.

Comments

comments