URL Dinamik untuk Framework Laravel dan Code Igniter

July 24, 2013 by · Leave a Comment 

Framework PHP Laravel dan Code Igniter menggunakan URL aplikasi yang didefinisikan pada file konfigurasi masing-masing framework. Konfigurasi alamat aplikasi ini akan dipakai oleh framework untuk menghasilkan alamat URL seperti pada form, link, dan kebutuhan framwork lainnya.

Pada framework Laravel, konfigurasi ini bisa dilihat pada file app/config/app.php dengan baris kode seperti di bawah ini

'url' => 'http://localhost',

sedangkan pada framework Code Igniter, konfigurasi bisa dilihat pada file application/config/config.php dengan baris kode seperti di bawah

$config['base_url']	= 'http://localhost/';

Aplikasi umumnya didevelop di komputer dengan URL localhost dan akan dipindahkan ke hosting yang berbeda URL nya dengan komputer pada saat developing. Ketika memindahkan aplikasi ke web server, terpaksa kita harus mengganti alamat URL. Jika mengganti secara manual, akan sangat merepotkan terutama jika sering memindah-mindahkan file. Dengan variabel spesial PHP, alamat URL bisa diganti agar lebih dinamis menyesuaikan dengan alamat URL aplikasi.

Untuk Laravel, potongan kode di atas bisa diganti menjadi

'url' => 'http://'.$_SERVER['SERVER_NAME'],

sedangkan untuk Code Igniter menggunakan konfigurasi di bawah ini

$config['base_url']	= 'http://'.$_SERVER['SERVER_NAME'];

Debug WordPress untuk Fungsi yang Deprecated

December 13, 2012 by · Leave a Comment 

Sehari kemaren saya berusaha mengupdate WordPress saya dari versi 3.4 ke versi 3.5. Sayangnya sejak WordPress versi 3.3 yang lalu, saya tidak bisa mengupdate secara otomatis. Saya hanya memperoleh error dengan kode 500 (Internal Error) ketika saya membuka tautan untuk update otomatis. Terpaksa pada beberapa versi kemaren termasuk update ke versi 3.5, saya melakukan update manual (download lalu timpa pada file WordPress yang lama).

Karena penasaran link update masih belum jalan juga, saya berniat melakukan analisis untuk mencari tau penyebab erornya WordPress saya. Untuk memulai proses analisis (debug), kita perlu mengaktifkan WordPress agar mengeluarkan eror yang dihasilkan oleh php. Tambahkan baris berikut pada wp-config.php.

1
2
3
4
5
6
/** File: wp-config.php **/
/** Debug **/
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', true);
@ini_set('display_errors',1);

Ternyata dari hasil debug, banyak eror yang dihasilkan oleh plugin dan themes yang saya pakai. Kebetulan themes dan plugin tersebut banyak yang tidak ada update terbarunya. Seiring dengan perkembangan WordPress, banyak fungsi-fungsi yang deprecated atau sudah tidak dipakai lagi dan digantikan oleh fungsi lain. Satu-satunya cara untuk memperbaiki plugin dan themes tersebut adalah dengan mengganti fungsi-fungsi tersebut dengan fungsi yang lebih baru.

Namun sayangnya, konsep WordPress dalam menjebak eror (error catch) sangat tidak memudahkan user dalam mencari tau letak error yang sebenarnya. Ketika Wordpres menampilkan eror, maka baris eror yang ditunjukkan adalah baris untuk menampilkan eror tersebut, bukan baris error yang sesungguhnya.

Screenshot from 2012-12-12 15:11:11 1

Akhirnya saya menemukan sebuah cara untuk mengakali WordPress menampikan baris eror yang sebenarnya.

Langkah pertama yang kita lakukan adalah mengingat atau menuliskan fungsi yang deprecated yang ditunjukkan pada layar browser. Contoh pada gambar di atas adalah fungsi get_current_theme() yang sudah tidak dipakai lagi dan harus digantikan dengan fungsi wp_get_theme().

Lalu buka file wp-includes/deprecated.php dan cari baris dengan nama fungsi tersebut. Lalu rename fungsi tersebut, cukup dengan menambahkan beberapa string di depan atau di belakang nama fungsi tersebut. Pada contoh di bawah ini, saya merename fungsi get_current_theme menjadi test_get_current_theme. Setelah itu simpan perubahan yang sudah dilakukan.

Screenshot from 2012-12-12 15:12:40

Selanjutnya kita harus mereload halaman yang tadi menunjukkan eror tersebut. Kali ini, WordPress tidak lagi menampilkan pesan eror bahwa fungsi pada wordpress sudah deprecated, namun WordPress akan menujukkan eror yang sebenarnya, yaitu baris yang memakai fungsi deprecated tersebut.

Screenshot from 2012-12-12 15:16:59 1

Langkah selanjutnya adalah membuka file yang ditunjukkan pada error tersebut dan mengganti fungsi lama dengan fungsi yang baru. Dalam kasus di atas, fungsi get_current_theme diganti dengan fungsi wp_get_theme pada file themes/core/tools/theme-options.php baris ke 9.

Screenshot from 2012-12-12 15:18:56

Setelah selesai memperbaiki banyak plugin dan themes yang eror, akhirnya saya bisa membuka halaman update WordPress tanpa ada masalah sedikitpun. Jangan lupa untuk menonaktifkan debug pada file wp-config.php dengan mengganti nilai true menjadi false.

Ekstraksi File PHAR (PHP Archive)

November 1, 2012 by · 1 Comment 

Pagi ini saya hendak menginstall dan mencoba PHPUnit, framework untuk mengetest kode PHP yang kita buat ketika masa development. Ada 3 cara untuk menginstall PHPUnit, pertama menggunakan PEAR, kedua dengan menggunakan composer, dan ketiga adalah menggunakan format PHAR.

Saya rasa saya dulu pernah menggunakan metode PEAR, tinggal jalankan beberapa baris perintah, maka semua file akan terdownload secara otomatis. Namun entah mengapa ketika saya mencoba PHPUnit dengan Pear, instalasinya berlangsung agak lama, jadi saya skip dan saya langsung mencoba cara lain. Saya lebih memilih mendownload format PHAR daripada menggunakan composer. Hal ini saya lakukan karena saya sendiri belum menginstall Composer itu sendiri dan saya belum pernah mencobanya 🙂

Format PHAR ternyata adalah text biasa dengan potongan kode-kode PHP yang ditulis dalam 1 file. Ini dilakukan agar semua paket berada dalam 1 file saja. Masalahnya adalah bagaimana mengekstrak paket Phar ini agar kembali seperti paket biasa, baik itu dalam format php ataupun direktori-direktori yang ada dalam file phar tersebut.

Dari beberapa sumber di internet, ternyata ada konverter online untuk mengubah format .phar menjadi format .zip atau .tar (http://unphar.com/). Namun jika tidak ada koneksi internet, maka konversi harus dilakukan secara offline. Konversi offline sebenarnya bisa dilakukan dengan membuat skrip php agar bisa mengekstrak file tersebut, namun karena saya pikir akan memakan waktu agak lama, lebih baik mencari tools yang siap pakai saja. Saya mendapatkan info bahwa kita bisa mengekstrak file phar dengan menggunakan bantuan Empir (http://empir.sourceforge.net/). Empir adalah file php yang bisa mengubah file php menjadi phar atau sebaliknya.

Download file Empir dan ekstrak ke dalam sebuah direktori. Hasil ekstrak akan menghasilkan sebuah file bernama empir. Lalu file dengan format .phar yang akan diekstrak ditempatkan dalam 1 folder dengan file yang Empir yang diekstrak tadi. Kamu harus memastikan bahwa perintah ‘php’ bisa dijalankan melalui terminal atau command-line. Lalu jalankan perintah berikut:

#format perintah
php -dphar.readonly=0 empir extract <phar_file> [extract_path]
 
D:\Empir>php -dphar.readonly=0 empir extract phpunit.phar phpunit

Nanti file akan diekstrak ke dalam direktori yang telah kita tentukan.

Kecepatan Eksekusi PHP

December 31, 2011 by · Leave a Comment 

Uji coba ini cuma estimasi saja dan tidak menyimpulkan apapun, cuma pengen tau kecepatan kalkulasi dengan menggunakan PHP itu seperti apa.

1
2
3
4
5
6
7
8
9
10
<?php
    $result=0;
    $loop=100000000; 
	$start = microtime(true);
	for($i=0; $i<$loop; $i++){
		$result=$result+$i;
	}
	$end = microtime(true);
    echo "Pengulangan sebanyak ".$loop." kali<br />";
	echo "Durasi: ".($end-$start)." detik";

Hasil

Pengulangan sebanyak 100000000 kali
Durasi: 26.762096881866 detik

Dengan jumlah pengulangan sebanyak 100 juta kali, PHP menghasilkan sebuah nilai dengan durasi 26 detik.

Saya berencana melakukan kalkulasi matriks yang membutuhkan pengulangan yang sangat banyak. Namun dengan jumlah pengulangan yang lebih sedikit, mungkin saya bisa memperkirakan estimasi waktu yang dibutuhkan oleh PHP untuk mengolah data tersebut 🙂

Next Page »