Belajar Konsep OOP Dengan Bahasa Pemrograman PHP

download Belajar Konsep OOP Dengan Bahasa Pemrograman PHP

of 13

  • date post

    19-Jul-2015
  • Category

    Documents

  • view

    664
  • download

    0

Embed Size (px)

Transcript of Belajar Konsep OOP Dengan Bahasa Pemrograman PHP

Belajar konsep OOP dengan bahasa pemrograman PHP Lesson IDiposting oleh Ivo Idham Perdameian pada 28 September 2011Tinggalkan komentar (1)Menuju ke komentar

Banyak sekali artikel dan tutorial yang membahas pembelajaran konsep OOP, namun hal itu masih terasa tidak memenuhi atau boleh dikatakan artikel dan tutorialnya tidak memuaskan. Nah dalam tutorial saya kali ini saya ingin membahas hal tersebut secara sederhana yang mudah dipahami untuk pemula dalam belajar konsep OOP dengan bahasa pemrograman PHP dan tutorial ini merupakan tutorial yang berkelanjutan dan saya akan bahas secara tuntas, jadi tunggu aja kelanjutan tutorial berikutnya karena tulisan ini hanya sekedar pengantar dari pembahasan yang panjang , setelah tutorial ini kita akan membuat source

code sebagai bentuk implementasi dari pembahasan dari artikel/tutorial yang dibahas, so stay upto date via rss juga boleh. Pengertian singkat OOPOOP (Object Oriented Programming) adalah sebuah konsep pemograman yang berbasis objek, OOPmerupakan terobosan baru dalam pemrograman setelah pemrograman prosedural, pemrograman modular dan pemrograman abstraksi data.

Kenapa harus OOP?OOP memberikan kemudahan bagi programmer dalam pembuatan sebuah program, memberikan fleksibilitas yang lebih,kemudahan penggunaan program, dan dipakai luas dalam teknik piranti lunak skala besar. Selain itu dengan pemograman OOP kode yang dibuat akan lebih mudah dikembangkan dan dirawat dalam arti seorang programer bisa menambah sebuah objek baru tanpa harus menggangu dan merubah modul yang lain. Berikut ini keuntungan dari penggunaan OOP dalam pemograman : 1. 2. 3.

Reusability (kemampuan untuk digunakan kembali). Kode yang dibuat dapat digunakan kembali di aplikasi atau programlainnya.

Extensibility (Kemampuan untuk dapat dikembangkan). Kita dapat membuat method yang baru atau mengubah yangsudah ada sesuai dengan yang kita inginkan tanpa harus membuat kode dari awal.

Maintainability (Kemampuan untuk mudah dikelola), kode yang sudah dibuat lebih mudah untuk di maintain/manage.Apabila aplikasi yang dibuat adalah aplikasi dengan skala besar dan apabila terjadi error atau kesalahan maka dengan OOP hal tersebut mudah ditangani karena pemograman yang menggunakan OOP sudah modularitas(memecahkan program yang besar menjadi bagian-bagian kecil) sehingga perbaikan cukup pada modulmodul tertentu saja tanpa harus mengubah modul yang lainnya.

Empat konsep utama OOPDalam pemograman OOP, ada empat hal yang harus diperhatikan karena hal tersebut merupakan konsep vital dari OOP tersebut. Berikut ini konsep tiga konsep utama tersebut: 1. 2. 3. 4.

Encapsulation/pembungkusan, merupakan penyembunyian informasi melalui private danprotected. Inheritance/pewarisan, adalah kemampuan untuk membuat class turunan yang mewarisi propertydan method dari kelasinduk.

Abtraction/abtraksi, adalah sebuah konsep yang merupakan representasi abstrak dari konsep dalam pemograman,misalnya objek mobil merupakan representasi abstrak dari mobil dalam dunia nyata.

Polymorphism/banyak bentuk, seorang programer bisa memakai method dengan nama yang sama pada class-class yangberbeda.

Untuk sementara cukup sampai di sini dulu, lain waktu saya akan menulis kelanjutannya.

\

[share] Membuat central authentication server di PHP

Kemarin ada yang PM ane, tanya gimana cara bedain aplikasi internal sama external. Karena itu sekalian ane bahas aja disini, gimana cara pisahin beberapa aplikasi, dan sekaligus melakukan single logon untuk mereka.

Untuk keperluan ini, yang ane pakai adalah: 1. webserver: Nginx, tetapi apache juga bisa 2. PHP 5.3 3. libssl untuk openssl 4. mysql 5. libcurl Ini adalah contoh config file nginx yang digunakan pada CAS server:Code:

http { server { listen 80; root /srv/cas/public; index index.php index.html index.htm; server_name localhost; location / { try_files $uri $uri/ /index.html /index.php; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } }

server { listen 8000; root /srv/cas/internal; location / { try_files $uri $uri/ /index.html; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } } } Jadi pada nginx, dia akan listen pada port 80 dan 8000. Kemudian kita bisa membuat firewall untuk memblokir port 8000 agar tidak bisa diakses dari internet, jadi hanya aplikasi yang bisa menggunakan port 8000 untuk internal. Dengan config diatas, apabila nginx diakses melalui http://ipaddress/ maka dia akan serve file dari /srv/cas/public. Dan apabila diakses melalui http://ipaddress:8000/ maka dia akan serve file dari /srv/cas/internal. Sekarang, database... Untuk contoh, ane pake database yang cukup simple saja.. dibutuhkan minimal 3 tabel untuk ini. Informasi yang ane contohkan juga hanya nama user. Tabel applicationCode:

id: varchar(50) key: text key adalah untuk menampung public key dari aplikasi agan. Tabel ticketsCode:

id: char(15) -> untuk menampung id tiket uid: varchar(50) -> asosiasi tiket dan user Mungkin bisa ditambahkan expired date? Jadi ticket yang kelamaan ga diakses akan dihapus dengan sendirinya. Bisa gunakan cron dengan mysql cleanup.sql untuk membersihkan tiket tiket ini. Tabel usersCode:

uid: varchar(50) name: varchar(200) pwd: char(200) Sesuaikan panjang pwd dengan password yang akan agan encrypt. Modul encryption bisa agan buat sendiri dengan implement ICasEncryption interface. Kemudian kita akan membuat modul untuk melakukan CAS authentication. Pertama adalah config modul yang dibutuhkan. Jelas, kita membutuhkan sebuah server, dan database untuk authentication.PHP Code:

class ConnectionConfig { private $host; private $user; private $pass; private $schema;

function __construct($host, $user, $pass, $schema) { $this->host = $host; $this->user = $user; $this->pass = $pass; $this->schema = $schema; } public function getHost() {return $this->host;} public function setHost($host) {$this->host = $host;} public function getUser() {return $this->user;} public function setUser($user) {$this->user = $user;} public function getPass() {return $this->pass;} public function setPass($pass) {$this->pass = $pass;} public function getSchema() {return $this->schema;} public function setSchema($schema) {$this->schema = $schema;} }PHP Code:

class ConfigObject { private $connection; private $apps; private $tickets; private $user; function __construct() { $this->apps = 'applications'; $this->tickets = 'tickets'; $this->user = 'users'; $this>connection = new ConnectionConfig('localhost', 'root', '', 'cas'); } public function getConnection() {return $this->connection;} public function setConnection($host, $user, $pass, $schema) { $cn = new ConnectionConfig($host, $user, $pass, $schema); $this->connection = $cn; } public function getApps() {return $this->apps;} public function setApps($apps) {$this->apps = $apps;} public function getTickets() {return $this->tickets;} public function setTickets($tickets) {$this->tickets = $tickets;} public function getUser() {return $this->user;} public function setUser($user) {$this->user = $user;} } Ini untuk config di CAS server nantinya. Cukup mudah dimengerti kan? masih simple sekali class-nya. Sekarang, kita perlu sebuah file encryption yang harus dibuat untuk melakukan authentication.PHP Code:

interface ICasEncryption { public function getSalt($text);

public function encrypt($text, $salt); public function createSalt(); } class CasEncryption implements ICasEncryption { public function getSalt($text) { return ""; } public function encrypt($text, $salt) { return md5($text); } public function createSalt() { return ""; } } Terserah agan mau encrypt seperti apa, tetapi harus implement ICasEncryption, karena itu yang akan digunakan oleh CasServer untuk compare password. Untuk contoh, ane buat encryption biasa, dengan md5, tanpa salt. Silahkan merubahnya supaya lebih saktiLast edited by magico; 04-07-2011 at 01:59 AM..QUOTE KaskusAd - Create an KasAD / Buat Iklan KasAD

04-07-2011, 01:04 AM

#2

magicokaskus addict UserID: 50559 8 Join Date: Jul 2008 Posts: 3,979

Sekarang, kita akan masuk ke main module, yaitu CasServerPHP Code:

class CasServer { private $config; private $connection; public function getConfig() {return $this->config;} public function setConfig($config) { if ($config instanceof ConfigObject) $this->config = $config; } public function __construct() { $this->config = new ConfigObject(); $this->connection = NULL; } private function connect() { if ($this->connection) {return true;} $connect = $this->config->getConnection(); $this->connection = new mysqli($connect>getHost(), $connect->getUser(), $connect->getPass(), $connect>getSchema()); return true; } private function createTicket($uid) { $ticket = 'T'.uniqid(); $this->connect(); $config = $this->config;

$conn = $this->connection; $conn->real_query("INSERT INTO {$config>getTickets()} (id, uid) VALUES ('$ticket', '$uid')"); return $ticket; } public function createuser($uid, $name, $pass, $encryption) { $this->connect(); $conn = $this->connection; //sanitize $uid = $conn->real_escape_string($uid); $pass = $conn->real_escape_string($pass); $config = $this->config; if (!$encryption instanceof ICasEncryption) { trigger_error("ERROR: Need ICasEncryption object"); } //Periksa userid $result = $conn->query("SELECT count(uid) FROM {$config>getUser()} WHERE uid = '$uid'"); $row = $result->fetch_array(); if ($row[0] == 0) { //Tidak ada duplikat //Encrypt password $salt = $encryption->createSalt(); $enc = $encryption->encrypt($pass, $salt); //insert $conn->real_query("INSERT INTO {$config>getUser()} (uid, name, pwd) VALUES ('$uid', '$name', '$enc'