Phalcon adalah framework open source yang cukup populer di kalangan developer. Phalcon menggunakan kombinasi bahasa pemrograman PHP dan C. Makanya, Phalcon memiliki cara kerja yang berbeda dari framework lainnya.
Meski sedikit berbeda, Phalcon memudahkan Anda membuat program yang lebih ringkas dan efisien. Soalnya, bahasa pemrograman C di Phalcon bisa menggunakan beberapa fitur framework secara penuh hanya dengan beberapa function saja.
Nah, di artikel ini Anda akan belajar tutorial Phalcon dari instalasi, konfigurasi, dan juga pembuatan dasar program dari Phalcon. Yuk simak artikelnya!
Apa itu Phalcon?
Phalcon adalah framework PHP open source dengan performa tinggi berkat arsitektur Model View Controller (MVC) yang dipakainya. Tidak hanya itu saja, Phalcon juga dikenal sebagai framework pertama yang menerapkan Object Relational Mapping (ORM) pada bahasa pemrograman C.
Berikut ini adalah grafik perbandingan Phalcon dengan framework populer lainnya. Di sini kami akan berikan gambaran kenapa Phalcon berbeda dari framework populer lainnya seperti Yii dan framework Laravel.
Yii | Laravel | Phalcon | |
Type of Project | Yii membantu untuk membuat project skala besar. Contohnya, forum, portal, CMS, RESTful web services, dan lain-lain. | Laravel digunakan untuk membangun web apps. Laravel dikenal dengan framework yang memiliki syntax yang indah dan canggih. | Phalcon digunakan untuk merancang berbagai proyek. |
Database Support | Yii mendukung semua database relational dan non-relational. | Laravel mendukung semua jenis database relational. | Phalcon juga termasuk framework yang support database relational dan non-relational. |
Language | Framework Yii murni ditulis dalam bahasa pemrograman PHP. | Laravel ditulis dalam bahasa pemrograman PHP dan menggunakan arsitektur MVC. | Phalcon ditulis menggunakan bahasa pemrograman PHP dan C. |
Scalability | Yii cukup stabil untuk project kecil dan menengah. | Laravel sangat stabil dan dapat digunakan untuk semua jenis project, dari yang kecil hingga besar. | Phalcon hanya dapat digunakan untuk project menengah. |
Performance | Relatif rendah | Tinggi tetapi masih kurang dibandingkan dengan Phalcon. | Memiliki performa tinggi. |
Cara Install Phalcon
Untuk melakukan instalasi Phalcon pada VPS dan Shared Hosting, Anda hanya perlu menginstall beberapa ekstensi PHP yang memiliki ukuran file yang kecil. Jadi, tidak akan memakan banyak ruang atau space. Namun, untuk melakukan instalasi ini Anda membutuhkan akses root pada VPS atau Shared Hosting.
Agar lebih mudah yuk simak penjelasannya berikut.
1. Install Phalcon pada VPS Ubuntu
Pastikan server Anda sudah terinstal Apache, MySQL, PHP, dan Composer. Apabila Anda belum melakukan instalasi dari keempat aplikasi tersebut Anda dapat mengikuti tutorial instalasinya pada artikel yang berjudul cara install LAMP di Ubuntu.
Setelah Anda berhasil melakukan instalasi LAMP, tambahkan ekstensi Phalcon pada server Anda dengan cara tambahkan command.
curl -s https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh | sudo bash
Selanjutnya, aktifkan tools developer Phalcon terlebih dulu. Caranya, buka direktori var/www. dengan menggunakan perintah berikut.
cd /var/www
Kemudian, pakai perintah berikut untuk membuat file composer.json didalam direktori var/www.
nano composer.json
Perintah di atas akan menampilkan tampilan blank hitam. Kemudian, copy dan paste code di bawah ini ke dalam file composer.json.
{
"require-dev": {
"phalcon/devtools":
"~3.2"
}
}
Setelah Anda menambahkan kode di atas, simpan file dengan cara tekan CTRL+X. Lalu masukkan perintah berikut untuk melanjutkan proses instalasi.
composer install
Selanjutnya cek apakah instalasi yang Anda lakukan berhasil, caranya dengan masukkan perintah berikut ke dalam command line server Anda.
phalcon
Maka output dari perintah di atas akan seperti berikut.
Phalcon DevTools (3.2.12)
Available commands:
info (alias of: i)
commands (alias of: list, enumerate)
controller (alias of: create-controller)
module (alias of: create-module)
model (alias of: create-model)
all-models (alias of: create-all-models)
project (alias of: create-project)
scaffold (alias of: create-scaffold)
migration (alias of: create-migration)
webtools (alias of: create-webtools)
serve (alias of: server)
console (alias of: shell, psysh)
Setelah instalasi berhasil, Anda bisa membuat project Phalcon dengan menggunakan VPS Anda. Untuk membuat project baru, caranya masuk ke dalam direktori var/www/html dengan menggunakan perintah berikut.
cd /var/www/html
Kemudian, masukkan perintah berikut untuk membuat project Phalcon pertama Anda. Nama demophalcon adalah nama folder yang akan digunakan untuk menyimpan file-file dari framework.
phalcon create-project demophalcon
Untuk memastikan proses pembuatan project pertama Anda berhasil, akses URL domain/IP Server Anda. Maka tampilannya akan seperti gambar di bawah ini:
Untuk melakukan instalasi Phalcon di Shared Hosting, caranya agak berbeda dan jauh lebih mudah.
Pertama, install Phalcon devtools menggunakan Composer yang telah terinstal secara otomatis di dalam Shared Hosting. Lalu untuk melakukan instalasi tersebut Anda perlu mendapatkan akses Shared Hosting via SSH. Beberapa penyedia layanan Hosting akan memberikan langsung akses tersebut. Tetapi ada juga yang harus request ke team CS terlebih dahulu.
Setelah Anda mendapatkan akses Shared Hosting via SSH, cek lokasi Anda saat ini dengan menggunakan perintah pwd. Apabila perintah tersebut menampilkan hasil seperti berikut maka Anda berada di lokasi public_html.
-bash-4.1$ pwd
/home/YOUR_USERNAME
Selanjutnya buat file composer.json di dalam direktori public_html, dengan menggunakan perintah berikut.
nano composer.json
Lalu masukkan kode berikut ke dalam file tersebut dan simpan menggunakan perintah CTRL+X.
{
"require-dev": {
"phalcon/devtools":
"~3.2"
}
}
Untuk menjalankan proses instalasi Phalcon menggunakan Composer gunakan perintah berikut.
composer install
Setelah proses instalasi selesai, Anda bisa melakukan cek apakah instalasi Anda berhasil atau tidak dengan cara masukkan perintah berikut.
phalcon
Maka outputnya akan seperti berikut:
Phalcon DevTools (3.2.12)
Available commands:
info (alias of: i)
commands (alias of: list, enumerate)
controller (alias of: create-controller)
module (alias of: create-module)
model (alias of: create-model)
project (alias of: create-project)
scaffold (alias of: create-scaffold)
migration (alias of: create-migration)
webtools (alias of: create-webtools)
serve (alias of: server)
console (alias of: shell, psysh)
Selanjutnya masuk ke dalam direktori public_html, lalu buat project baru dengan menggunakan perintah berikut.
phalcon create-project demophalcon
Setelah proses selesai, coba akses domain Anda yang terhubung dengan hosting. Maka domain tersebut akan menampilkan seperti gambar berikut.
Belajar Phalcon dalam 9 Langkah
Setelah tahu bagaimana cara install Phalcon PHP di hosting Anda, pastinya Anda ingin belajar tutorial Phalcon dengan lebih lengkap. Di bawah ini, Anda akan menemukan sembilan tahapan belajar Phalcon framework.
1. Memahami Struktur Folder Phalcon
Setelah selesai membuat project baru pada direktori, Anda akan langsung melihat tampilan file project yang baru Anda buat. File tersebut digunakan untuk melakukan pengembangan aplikasi. Nah, untuk lebih jelasnya kami akan bahas beberapa fungsi dari folder tersebut.
- App: Folder app berisi file inti yang digunakan untuk merancang web apps. Seluruh file seperti config, controllers, library, migration, models, dan view ada di dalam folder app. Untuk lebih detailnya kami akan menjelaskan juga isi dari folder app.
- Config: Folder ini digunakan untuk melakukan semua konfigurasi yang diperlukan untuk web apps. Di folder config ini Anda bisa menambahkan third party, library, atau membuat koneksi database dengan menambahkan beberapa kode ke dalam folder config.
- Controllers: Folder ini berisi semua request dari program. Folder ini juga menampilkan hasil respons request ke dalam tampilan program.
- Library: Folder ini berisi library dari third party eksternal yang Anda gunakan.
- Migrations: Folder ini memuat file yang harus Anda edit dan tambahkan ketika ingin melakukan migrasi data.
- Models: Folder ini digunakan untuk melakukan beberapa konfigurasi pada database.
- Views: View adalah folder yang berisi tampilan interface dari program. Misalnya, halaman dan konten.
- Cache: Folder ini mencakup semua data yang berhubungan dengan caching program.
- Public: Folder ini berisikan file asset yang terdiri dari CSS, JavaScript, gambar yang akan di-upload, meta data, dan data semantara yang akan digunakan untuk mengembangkan web apps.
2. Memahami Direktori Config Program Phalcon
Seperti yang sudah dijelaskan pada pembahasan sebelumnya, folder config berisi file-file yang digunakan untuk melakukan konfigurasi data di dalam web apps. Di dalam folder config terdapat tiga file yaitu config.php, loader.php, dan services.php. Untuk lebih jelasnya berikut penjelasannya.
Config.php
File ini digunakan untuk konfigurasi database dan konektivitas antara file/folder lainnya.
<?php
/*
* Modified: prepend directory path of current file,
because of this file own different ENV under between Apache and command line.
* NOTE: please remove this comment.
*/
defined('BASE_PATH') || define('BASE_PATH', getenv('BASE_PATH') ?:
realpath(dirname(__FILE__) . '/../..'));
defined('APP_PATH') || define('APP_PATH', BASE_PATH . '/app');
return new \Phalcon\Config([
'database' => [
'adapter' => 'Mysql',
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'test',
'charset' => 'utf8',
],
'application' => [
'appDir' => APP_PATH . '/',
'controllersDir' => APP_PATH . '/controllers/',
'modelsDir' => APP_PATH . '/models/',
'migrationsDir' => APP_PATH . '/migrations/',
'viewsDir' => APP_PATH . '/views/',
'pluginsDir' => APP_PATH . '/plugins/',
'libraryDir' => APP_PATH . '/library/',
'cacheDir' => BASE_PATH . '/cache/',
'baseUri' => '/demo1/',
]
]);
Saat Anda baru pertama menggunakan Phalcon untuk membuat project, pastikan Anda telah mengubah konfigurasi pada file config.php. Terutama pada database, ubah ketiga kode ini dengan nama database, username dan password yang Anda gunakan.
'username' => 'Isi dengan Username database Anda',
'password' => 'Isi dengan nama password Anda',
'dbname' => 'isikan dengan nama database Anda',
Loader.php
File ini digunakan untuk memperluas class \Phalcon\Loader(). Class Loader biasanya digunakan untuk mendaftarkan direktori baru. Berikut ini contoh kodenya.
<?php
$loader = new \Phalcon\Loader();
/**
* We're a registering a set of directories taken from the configuration file
*/
$loader->registerDirs( [
$config->application->controllersDir,
$config->application->modelsDir
]
)->register();
Services.php
File service.php yang ada di dalam folder config digunakan sebagai wadah dari semua permintaan yang ada di Phalcon. File ini akan membantu dalam memulai semua layanan seperti koneksi database, pengaturan cookie, membuat new session, dan menghubungkan dengan database NoSQL. Berikut ini adalah contoh kode dari file service.php.
<?php
use Phalcon\Mvc\View;
use Phalcon\Mvc\View\Engine\Php as PhpEngine;
use Phalcon\Mvc\Url as UrlResolver;
use Phalcon\Mvc\View\Engine\Volt as VoltEngine;
use Phalcon\Mvc\Model\Metadata\Memory as MetaDataAdapter;
use Phalcon\Session\Adapter\Files as SessionAdapter;
use Phalcon\Flash\Direct as Flash;
/**
* Shared configuration service
*/
$di->setShared('config', function () {
return include APP_PATH . "/config/config.php";
});
/**
* The URL component is used to generate all kind of urls in the application
*/
$di->setShared('url', function () {
$config = $this->getConfig();
$url = new UrlResolver();
$url->setBaseUri($config->application->baseUri);
return $url;
});
/**
* Setting up the view component
*/
$di->setShared('view', function () {
$config = $this->getConfig();
$view = new View();
$view->setDI($this);
$view->setViewsDir($config->application->viewsDir);
$view->registerEngines([
'.volt' => function ($view) {
$config = $this->getConfig();
$volt = new VoltEngine($view, $this);
$volt->setOptions([
'compiledPath' => $config->application->cacheDir,
'compiledSeparator' => '_'
]);
return $volt;
},
'.phtml' => PhpEngine::class
]);
return $view;
});
/**
* Database connection is created based in the parameters defined in the configuration
file
*/
$di->setShared('db', function () {
$config = $this->getConfig();
$class = 'Phalcon\Db\Adapter\Pdo\\' . $config->database->adapter;
$connection = new $class([
'host' => $config->database->host,
'username' => $config->database->username,
'password' => $config->database->password,
'dbname' => $config->database->dbname,
'charset' => $config->database->charset
]);
return $connection;
});
3. Menggunakan Controller
Controller digunakan untuk membantu mengimplementasikan logika pemrograman PHP untuk menulis program dan membuat kerangka halaman website. Controller juga berfungsi sebagai perantara model dan view.
Nah, pada Phalcon lokasi Controller berada di app/Controller. Setelah Anda menemukan folder controller buat file baru dengan nama IndexController.php lalu tambahkan kode di bawah ini.
<?php
use Phalcon\Mvc\Controller;
class IndexController extends Controller
{
public function indexAction()
{
echo '<h1>Hello!</h1>';
}
}
Kemudian untuk melihat hasilnya Anda bisa mengaksesnya dengan menggunakan URL domain atau IP server Anda. Kemudian tambahkan nama folder project Anda.
https://URL-domain.com/nama-folder
Maka tampilan outputnya akan seperti gambar di bawah ini.
4. Menghubungkan Controller dengan View
Untuk menghubungan antara Controller dengan View, Anda cukup menambahkan kode function yang ada di View ke dalam Controller.
Pertama-tama buat file index.phtml di dalam direktori app/view/index, kemudian masukkan masukkan kode di bawah ke dalam file tersebut.
<?php echo "<h1>Hello!</h1>";
Lalu tambahkan kode di bawah ini ke dalam file IndexController.php yang telah Anda buat sebelumnya.
<?php
use Phalcon\Mvc\Controller;
class IndexController extends Controller
{
public function indexAction()
{
}
}
Output saat Anda mengakses browser akan sama saja seperti sebelumnya. Sebab, langkah ini hanya akan memisahkan kode View dan Controller. Tujuan memisahkan kedua kode tersebut agar program lebih terstruktur karena menggunakan konsep MVC.
5. Membuat fitur Sign Up
Untuk membuat fitur Sign Up, pertama edit file Index.phtml yang ada di dalam direktori app/view. Lalu tambahkan kode di bawah ini ke dalam file tersebut.
<!DOCTYPE html>
<html>
<head>
<title>Tutorial Phalcon</title>
</head>
<body>
<h1>Hello!</h1>
<a href="/signup">Sign Up Here!</a>
</body>
</html>
Kode di atas akan memunculkan tampilan seperti di bawah ini.
Kedua, agar fitur Sign Up bisa digunakan tambahkan file controllers baru dengan nama SignupController.php di dalam folder app/controller. Lalu tambahkan kode di bawah ini ke dalam file tersebut.
<?php
use Phalcon\Mvc\Controller;
class SignupController extends Controller
{
public function indexAction()
{
}
}
Ketiga, buat tampilan interface untuk input nama, email dan submit button. Tambahkan folder signup ke dalam folder app/view. Lalu buat file baru dengan nama index.phtml di dalam folder signup dan masukkan kode di bawah ini.
<h2>Sign up using this form</h2>
<?php echo $this->tag->form("signup/register"); ?>
<p>
<label for="name">Name</label>
<?php echo $this->tag->textField("name"); ?>
</p>
<p>
<label for="email">E-Mail</label>
<?php echo $this->tag->textField("email"); ?>
</p>
<p>
<?php echo $this->tag->submitButton("Register"); ?>
</p>
</form>
Maka tampilannya akan seperti gambar di bawah ini.
6. Membuat Model untuk Fitur Sign Up
Sebelum membuat model yang digunakan untuk konfigurasi fitur Sign Up, Anda harus menambahkan tabel baru dengan nama users. Lalu masukkan query di bawah ini untuk membuat tabel baru serta isinya.
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(70) NOT NULL,
`email` varchar(70) NOT NULL,
PRIMARY KEY (`id`)
);
Untuk mencari lokasi folder model ada di app/models. Lalu tambahkan file baru dengan nama User.php dan tambahkan kode di bawah ini ke dalam file tersebut.
<?php
use Phalcon\Mvc\Model;
class Users extends Model
{
public $id;
public $name;
public $email;
}
Kode di atas digunakan untuk menyimpan data id, nama, dan email yang didaftarkan ke dalam database.
7. Menyimpan Data Menggunakan Model
Kemudian Anda perlu mengubah kode yang ada di dalam file SignupController.php, dengan kode yang ada di bawah ini.
<?php
use Phalcon\Mvc\Controller;
class SignupController extends Controller
{
public function indexAction()
{
}
public function registerAction()
{
$user = new Users();
// Store and check for errors
$success = $user->save(
$this->request->getPost(),
[
"name",
"email",
]
);
if ($success) {
echo "Thanks for registering!";
} else {
echo "Sorry, the following problems were generated: ";
$messages = $user->getMessages();
foreach ($messages as $message) {
echo $message->getMessage(), "<br/>";
}
}
$this->view->disable();
}
}
Kode function registerAction() digunakan untuk menyimpan dan mengirimkan data ke database.
Apabila Anda berhasil mendaftarkan user baru maka Anda akan mendapatkan tampilan Thanks for registering!
Jika user yang Anda daftarkan sudah ada di dalam database, sistem akan otomatis memberikan peringatan bahwa email yang Anda gunakan sudah terdaftar.
8. Menyimpan dan Menampilkan Data User
Langkah selanjutnya adalah membuat kode untuk menyimpan data user yang terdaftar dan menampilkannya di halaman website. Untuk menampilkannya, tidak akan dibuat satu-satu tetapi program akan dibuat untuk langsung mengambil data user dari database.
Selanjutnya untuk mengambil data user dari database, Anda perlu mengubah kode yang ada di IndexController.php dengan kode di bawah ini.
<?php
use Phalcon\Mvc\Controller;
class IndexController extends Controller
{
/**
* Welcome and user list
*/
public function indexAction()
{
$this->view->users = Users::find();
}
}
Kemudian Anda perlu mengubah file yang ada di dalam folder view tepatnya di views/index/index.phtml. Di dalam file tersebut, kami akan memberikan variabel $users. Variabel $users adalah nama dari tabel users yang ada di database Anda.
Untuk menampilkan data dari database, masukkan kode di bawah ini ke dalam file index.phtml.
<?php
echo "<h1>Hello!</h1>";
echo $this->tag->linkTo(["signup", "Sign Up Here!", 'class' => 'btn btn-primary']);
if ($users->count() > 0) {
?>
<table class="table table-bordered table-hover">
<thead class="thead-light">
<tr>
<th>#</th>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="3">Users quantity: <?php echo $users->count(); ?></td>
</tr>
</tfoot>
<tbody>
<?php foreach ($users as $user) { ?>
<tr>
<td><?php echo $user->id; ?></td>
<td><?php echo $user->name; ?></td>
<td><?php echo $user->email; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
<?php
}
Kode diatas akan memunculkan tampilan website seperti gambar di bawah ini.
9. Menambahkan elemen Bootstrap
Agar tampilan dari tabel di atas dapat terbaca dengan jelas, tambahkan elemen bootstrap di dalam file index.phtml. Ubah kode yang ada di dalam app/views/index.phtml dengan kode di bawah ini.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Phalcon Tutorial</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<?php echo $this->getContent(); ?>
</div>
</body>
</html>
Dari kode di atas, Anda akan mendapatkan tampilan yang lebih indah dan rapi seperti gambar berikut.
Selamat! Sekarang Anda berhasil membuat web apps sederhana! Lengkap dengan fitur signup dan tampilan data pendaftar dari database ke halaman website.
Baca Juga: Belajar CodeIgniter Dasar
Sudah Siap Pakai Phalcon Framework?
Phalcon adalah framework terbaik yang sering digunakan oleh developer untuk mengembangkan web apps. Dengan performa yang tinggi, Anda dapat membuat website yang ringan. Terlebih lagi, Phalcon adalah framework yang ditulis dengan bahasa C yang memiliki tingkat keamanan lebih baik dibandingkan bahasa pemrograman lain.
Dalam panduan ini ada telah mempelajari dasar-dasar Phalcon. Selain itu, kami juga menunjukkan kepada Anda struktur folder Phalcon dan bagaimana Anda dapat membuat website sederhana dengan Phalcon.
Apabila saat Anda mempraktikan cara diatas dan menemukan error pada tutorial ini, jangan sungkan untuk menanyakan di kolom komentar. Selamat mencoba dan semoga berhasil!