TUTORIAL PHALCON PHP UNTUK PEMULA
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 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:
2. Install Phalcon pada Shared Hosting
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.
Sumber
Referensi
Komentar
Posting Komentar