David Kurniawan A Technical Content Writer at Niagahoster, specializing in Virtual Private Servers (VPS), WordPress, and Internet Marketing. David is eager to help people to improve their business on the internet.

Tutorial Phalcon PHP untuk Pemula [Terlengkap]

10 min read

PHP Terbaik Manakah Pilihanmu

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.

YiiLaravelPhalcon
Type of ProjectYii 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 SupportYii mendukung semua database relational dan non-relational.Laravel mendukung semua jenis database relational.Phalcon juga termasuk framework yang support database relational dan non-relational.
LanguageFramework 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.
ScalabilityYii 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.
PerformanceRelatif rendahTinggi 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:

install phalcon php

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.

install phalcon framework

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.

controller tutorial phalcon

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.

mmebuat signup dengan phalcon

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.

tampilan signup form

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!

David Kurniawan A Technical Content Writer at Niagahoster, specializing in Virtual Private Servers (VPS), WordPress, and Internet Marketing. David is eager to help people to improve their business on the internet.

Leave a Reply

Your email address will not be published. Required fields are marked *