MVC dengan PHP

04/07/2009 at 9:40 pm Tinggalkan komentar

MVC structure??? ud gw bahas pada post sebelumnya…🙂. Oje curhatan kali ini tentang PHP penulis ud kasi post dr awal berhubung gak ada yg nanya ya ud ke tingkat mahir aja klo gitu. Tp tetep aja karna penulis newbie maklum aja klo gak canggih aplikasinya…

Penulis coba kasi tutorial yg coba penulis terjemahkan dan d praktekan dari website http://zfsite.andreinikolov.com/

Langsung aja ke step-by step aplikasi web dengan PHP menggunakan Framework MVC.  Langkah awal yang harus dilakukan adalah membuat struktur direktory untuk penggunaan zend-framework MVC (zfm) kurang lebih seperti ini….

1

pada gambar diatas struktur zfm dapat anda buat sesuai selera anda mau meletakan model, view, dan controller tetapi file yang dibuat harus terstruktur scriptnya. di situlah kelebihan menggunakan zfm, selain aplikasi menjadi lebih aman dan fleksibel. Antara source control dengan tampilan tidak campur aduk seperti web php yang tidak menggunakan zfm. Pada folder public di situ merupakan root dari aplikasi yang akan kita buat.

pada root public tersebut kita akan menaruh file .htacces sebagai bagian dari website untuk hak akses publik. Buat file .htacces tersebut kedalam direktory public/.htacces. Untuk isi dari file tersebut ada 2 cara yang bisa di implementasikan. yang pertama seperti ini.

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

dan yang kedua adalah seperti ini….

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1

pada langkah selanjutnya adalah buat file pada dir public/index.php. Lalu isi file tersebut dengan script berikut :

< ?php
require '../application/bootstrap.php';

lalu bagian dir /application/bootstrap.php di isi dengan file berikut ini :

< ?php

// For our dev environment we will report all errors to the screen
error_reporting(E_ALL | E_STRICT);
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);

// Set our timezone
date_default_timezone_set('Asia/Jakarta');   

// Add /library and /application directory to our include path
$siteRootDir = dirname($_SERVER['DOCUMENT_ROOT']);

set_include_path(
    $siteRootDir . '/library' . PATH_SEPARATOR
    . $siteRootDir . '/application' . PATH_SEPARATOR
    . get_include_path()
);

// Turn on autoloading, so we do not include each Zend Framework class
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();;

// Create registry object and setting it as the static instance in the Zend_Registry class
$registry = new Zend_Registry();
Zend_Registry::setInstance($registry);

// Load configuration file and store the data in the registry
$configuration = new Zend_Config_Ini($siteRootDir . '/configuration/config.ini', 'main');
Zend_Registry::set('configuration', $configuration);

// Construct the database adapter class, connect to the database and store the db object in the registry
$db = Zend_Db::factory($configuration->db);
$db->query("SET NAMES 'utf8'");
Zend_Registry::set('db', $db);
// set this adapter as default for use with Zend_Db_Table
Zend_Db_Table_Abstract::setDefaultAdapter($db);

// Setup the Front Controller, disable the error handler, set our controller directories
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->addModuleDirectory($siteRootDir . '/application/modules');
//we want the front controller to return the response, instead of emitting it automatically
$frontController->returnResponse(true); 

/*
 * We want to set the encoding to UTF-8, so we won't rely on the ViewRenderer action helper by default,
 * but will construct view object and deliver it to the ViewRenderer after setting some options.
 */
$view = new Zend_View(array('encoding'=>'UTF-8'));
$viewRendered = new Zend_Controller_Action_Helper_ViewRenderer($view);
Zend_Controller_Action_HelperBroker::addHelper($viewRendered);

// Now we initialize the Zend_Layout object with MVC support
Zend_Layout::startMvc(
    array(
        'layoutPath' => $siteRootDir . '/application/layouts',
        'layout' => 'main'
    )
);

// run the dispatch, get the response and send it to the client
$response = $frontController->dispatch();
$response->setHeader('Content-Type', 'text/html; charset=UTF-8', true);
$response->sendResponse();

Perhatikan setiap baris script diatas…  file ini merupakan file pembaca struktur direktori dan konfigurasi keseluruhan. Jika kita merubah file struktur zfm maka struktur script ini target direktorinya pun harus di ganti sesuai dengan direktory yang anda buat…. klo saran untuk programmer newbie ikutin aja dulu yang ini..🙂.

langkah selanjutnya adalah pembuatan file configurasi database. Anda tinggal memasukannya ke dalam data  direktori configuration/config.ini dengan isi file sebagai berikut :

[main]
;Database connection settings
db.adapter=Mysqli
db.params.host=localhost
db.params.username=root
db.params.password=
db.params.dbname=zendlearn

data diatas adalah setting local yang ada d komputer penulis. Maklum pake windust jadi gak ada passwordnya itu database😀. Bagusnya sey kudu pake.. berhubung ini cuma local paling yang bisa ambil data gw cuma pemilik broadband gw yang ip-nya satu line sm gw…untuk setiap webhosting beneran mah pasti pake… Lanjut gak penting bgt ini.

Selanjutnya adalah pembuatan file html dan di taruh pada direktori application/layouts/main.phtml isinya sebagai berikut

< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Zf Site</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="container">
<div id="header"><h1>Zf Site</h1></div>

<div id="main-holder">
<div id="main">
< ?php echo $this->layout()->content ?>
</div>

<div id="subnav">
<h2>Sub-Nav Column</h2>
<p>Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. </p>
</div>
</div>

<div id="extra">
<h2>Extra Column</h2>
<p>Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. </p>
<p>Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. Lorem ipsum sit dolor amet. </p>
</div>

<div id="footer">footer placeholder</div>

</div>
</body>
</html>

file css untuk html di simpen di public/style.css karna file root terletak di public jadi file tersebut berada pad direktory ini. isinya….

body { margin: 0; padding: 0; background-color: #ACBEBF; }
#container { width: 760px; margin: 10px auto; background-color: #778384;}

#header { width: 760px; float: left; color: #E6FDFF;}
#main-holder { width: 600px; float: left; }
#extra { width: 150px; float: right; }
#main { width: 440px; float: right; }
#subnav { width: 150px; float: left; }
#footer { width: 760px; float: left; text-align: center;}

dan selajutnya adalah tempat class atau fungsi yang di gunakan pada direktory application/modules/default/controllers/IndexController.php isinya….

< ?php

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {

    }
}

Nah, coba deh di jalanin…. error kan. Sama punya penulis juga error…. hehehe😀. Nah disinilah titik dari pembelajaran kali ini programmer newbie harus mampu mencoba menganalisa script yang telah ada untuk di telaah dan di pahami isi dari apa yang dimaksud dari script-script diatas…. Nanti penulis jika gak terlalu sibuk bgt lg buat aplikasi yang bisa jalan. Maklum yew lg nulis skripsi ney… Nanti pasti di lanjut.

Lupa di bilangin… siapin dulu tool – tool yang akan di gunakan buat zfm. zfm ini memiliki struktur yang mirip seperti JVM pada java. Tolong donlot dulu untuk library zfm klik disini nah nanti gw akan coba lanjutin lg curhatnya. Sholat shubuh dulu ney……

<?php

require ‘../application/bootstrap.php’;

Entry filed under: Uncategorized. Tags: .

Buat Simple Servlet menggunakan Eclipse IDE acho-lab Part I : Intro Simple Project Accounting

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Gw Ney..


  • Chat With Me
  • Email Yadi Acho

  • For Education Only....

    Blog Stats

    • 5,679 hits

    %d blogger menyukai ini: