Wednesday, October 29, 2008

Back to Basic

Php-er,

Berapa banyak dari kita yg mau jadi expert ehh malahan jadi nya brantakan, sana sini coding harus diperbaiki krn kurang rapi atau kurang tepat. Pengalaman gw sendiri yahh ga jauh beda. Dan gw berhenti sejenak dan berpikir sambil koreksi. Ada apa dengan gw?

Bukankah kita semakin byk coding semakin berpengalaman dan lebih jeli dlm perencanaan, so minim utk hal perbaikan dlm hal kerapian dan extendable... Tp justru kebalikannya semakin kita maju semakin byk yg harus di rubah. Ok ini pertanda baik krn kita tau apa yg salah dan kita perbaiki.

Semakin dipikirin dan dievaluasi ternyata permasalahan paling mendasar gw sering lupakan yaitu perencanaan, perencanaan dan perencanaan yg lebih matang lagi. Sehingga kita bisa meminimalisasi hal2 yg gw sebutin di atas.

Jadi memang kita harus kembali ke hal yg paling mendasar. Yang dimana kita sering kali kita lupakan krn kita berpikir kita udah di tingkat advance dan gw ga perlu lg yg basic. Dan lagi-lagi basic nya adalah code clarity.

Kita diajarin dan ditekanin standard coding guidelines. Yg terkadang kita suka langgar alhasil kerjaan 5 bulan lalu ngebug dan waktu di buka kita nya yg stress.
Tongkrongin monitor just to figure out what the heck these sections for...

Penghujung artikel ini don't hestitate to check this one out Standard Coding Guidelines

Sunday, October 12, 2008

Work Horse


Php-er,

Pada artikel kali ini, gw mau bagiin pengalaman yang mungkin di alami oleh byk coder2 lain nya. Pengalaman gw, harus mengetik perintah dan logika yg sama berulang2, lost focus dari suatu/bbrp logika, lupa kunci yg menghubungkan dari suatu proses ke proses yg lainnya yg pada intinya menghabiskan byk waktu.

Ok, artikel sebelum ini gw pernah sebutin "Work Smart", begini ceritanya pilah2 logika2 tersebut menjadi bagian yg lebih kecil dan bentuk mereka menjadi fungsi. Dan ketika ada fungsi yg sama/mirip kegunaannya bingo! Itu dia, kita buat 1 file global dan simpan fungsi tsb disana. Sehingga kita hanya perlu memanggil dan menggunakan nya kembali.

Dan pada artikel ini akan gw bagiin pengalaman gw dlm membentuk fungsi2 tsb. Apa saja yg perlu diperhatikan:

1. variable input
2. daur hidup

Kita mulai dari variable input, penamaan dan cakupan harus diperhatikan contoh:


function showInfo($name1, $name2, $name3){

...
}


dimana $name1 adl first name, $name2 adl nick name dan $name3 adl last name. Variable benar tetapi kurang tepat. Seharusnya variable di gunakan showInfo($firstName, $nickName, $lastName), maka coder akan lebih mudah memasukan input utk variable fungsi ini.

Daur hidup, dimana fungsi sebanyak mungkin dpt mengakomodasi coder utk proses suatu logika, misal


function showInfo($firstName, $nickName, $lastName){

...
}


Diperlukan utk proses prompt ke user, ucapan selamat datang dan ucapan sampai jumpa.
Tanpa fungsi ini kita harus menuliskan:


echo $firsName;
...


secara berulang kali tetapi dengan fungsi kita cukup panggil showInfo($firstName, $nickName, $lastName);

Di penghujung artikel ini ada 1 pertanyaan Code yg menjadi WorkHorse atau anda?

Contoh applikasi nyata dpt di donlod disini

GBU, code for life, code with ethic.

Saturday, August 23, 2008

Word from Me


Php-er,

Mungkin byk dari kita mau produktivitas meningkat, yg berarti pekerjaan makin cepat selesai dan project semakin byk yg bisa diterima. Dan arti nya more money!
Caranya Berdoa, work hard and work smart.

Ok work hard, jgn nyerah dan pacu terus semangat. Work Smart nahh ini yg akan gw bahas lebih jauh... Mungkin lo dah sering denger bagaimana utk menulis coding yg baik bla bla... Inget baik dan lakukan semua itu. Karena secara pengalaman itu telah terbukti.
Dan khusus nya terapin sistim Management yg baik yaitu POAC, Planning Organizing Actuating and Controling. Hahahhaha kok management ikutan? Ini penting kalo lo mau work smart!

Planning adalah dimana kita mendesain seluruh draft code kita sebelum kita mulai coding. Sehingga life cycle si code bisa bertahan lama mungkin gampang nya seperti template. Jadi bisa di pake berulang2 so kita ga perlu mikirin ulang semua logika yg sudah pernah gunakan.

Organizing adalah dimana kita memilah2 struktur code kita mengikuti metode MVC. Models dimana semua fungsi2 yg berhubungan dengan koneksi DB. Controllers dimana semua fungsi2 calculation processing dll. Dan views dimana semua template ato yg berhubungan dengan hasil tampilan output lainnya.

Actuating adalah dimana kita mengimplementasikan sluruh code yg telah di tulis sehingga berjalan sebagaimana mesti nya dlm arti ini code harus ada di models dan itu harus ada view jadi be Consistent! Bekerja sesuai dengan jadwal yg telah diatur oleh diri sendiri supaya kita bisa mencapai deadline.

Controling adalah dimana seluruh pekerjaan telah berlangsung atau telah selesai. Dan bagian ini adalah bagian penuh dengan challenge dan disini lah ujian utk mengetahui apakah anda seorang coder. Karena bagian ini adalah bagian debug! Dimana pekerjaan kita akan di evaluasi oleh user dan ketika hit buG! Wow... ini ujian mu coderZ...

Jikalau seluruh guideline diikuti maka seharusnya proses debug tidak terlalu sukar, krn kita telah menulis code yg jelas dan rapi. Dan lebih mudah menulis code ketimbang memastikan nya berjalan sebagaimana seharusnya.

Gbu, Coding with Ethic, Coding for Life...

Tuesday, July 29, 2008

Reference Magic


Php-er,

Kali ini gw akan bahas ttg reference variable. Ok, mungkin udah byk yg tau dan gunain. Moga aja ini bisa refresh akan kegunaan dan kehandalannya. Heheheeh oke emg hebat nya dimana seh? Hebatnya reference variable value nya bukan hasil copy, jadi seperti alias saja, dan ngebantu banget utk nulis code yg rapi.


Contoh:

---------------------------------------------------------------------------
function testReference(&$refVar){

$refVar++;
}

function testNonReference($nonRefVar){

$refVar++;
}

$var1 = 0;
$var2 = 0;

testReference($var1);

testNonReference($var2);

echo $var1;
echo $var2;

---------------------------------------------------------------------------
Output:
1
0




Gimana ngerti? Fungsi testReference tidak mengembalikan value tetapi $var1 dari 0 menjadi 1. Mengapa $var1 brubah dan $var2 tidak? Begini utk testReference parameter nya adalah &$refVar dimana refVar hanyalah "alias" dari $var1 jadi mereka itu terletak di alamat memory yg sama, ini bahasa susah nya, gampang nya lain nama tapi 1 item. Jadi apapun perubahan $var1 begitu pula dgn $refVar wonk mereka 1.

Lain hal nya $var2 dgn $nonRefVar sbg paramater nya testNonReference. Value dair $var2 di copy ke variable baru yg namanya $nonRefVar, jadi mereka lain nama lain item juga. Bahasa susah nya $var2 memliki alamat memory yg berbeda dgn $nonRefVar.
Dan apapun perubahan yg terjadi di $var2 tidak langsung mngubah $nonRefVar, bgt pun sebaliknya.

Kalo masih juga ga ngerti hummm... mending merujuk ke manual nya php.net smoga lo lbh bs ngerti dari baca manual ketimbang artikel gw. Anyway gw blm kasih liat kehebataanya ok ini dia. Yang pertama adalah reference tidak mengcopy value source variable nya ke variable yg dituju, disini adl si "alias"nya. Jadi mengurangi waktu proses pastinya dan reference bisa bantu kita utk coding lbh rapi.


Donlod oracleDb.php di artikel sebelumnya. Dan ini perbaikan utk lbh jadi rapi dan pendek.

kalo dulu deklarasi sendQuery(string $query, boolean $isFetch, boolean $isDebug)
maka skg akan digantikan. Oleh execFetchQuery(string $query, integer &$nrows, array &$result, boolean $isDebug = _IS_DEBUG)
dgn $isDebug default. Penggunaan nya

$query = "SELECT * ".
"FROM MY_DB ";
execFetchQuery($query,
$nrowsMyQuery,
$resultMyQuery);

if($nrowsMyQuery > 0){

echo $resultMyQuery["MY_FIELD"][0];
}else{

/* Bla bla bla... */
}


Thats the magic work, pertama $nrowsMyQuery di passed by reference jadi proses yg terjadi di dlm fungsi execFetchQuery() akan mempengaruhi langsung $nrowsMyQuery.
Dan execFetchQuery sendiri proses nya adalah:


function execFetchQuery($query,
&$nrows,
&$result,
$isDbg = _IS_DEBUG){

/* Bla bla bla..*/

$s = OCIParse($this->conn, $query);
$r = @OCIExecute($s, OCI_DEFAULT);

/* Bla bla bla..*/

$nrows = oci_fetch_all($s, $result);

/* Bla bla bla..*/
}


Di dlm fungsi nya ga ada nama $nrowsMyQuery dan fungsi hanya return value true utk success dan false kalo failed. Lohh jadi hasil yg di passed ke $nrowsMyQuery dan $resultMyQuery dari mana??? Nah liat tuh parameter fungsi nya &$nrows dan &$result.
Jadi $nrows adl "alias"nya dari $nrowsMyQuery dan jg utk $result. Gimana? Mantap!!!

Sekiranya article ini bisa membantu. Gbu...

Coding for life, coding with ethic.

Monday, July 21, 2008

Harmonious Combination


Php-er,

Sorry article ttg simple spreadsheet kemarin terhapus dan gw ga ada pertinggalnya.
Anyway simple spreadsheet hasil perpaduan JS+PHP bisa di download simple_spreadsheet.v.0.8

Have fun, Gbu.

Coding for life, coding with ethic.

Stock Method


Php-er,

I've been working on severals stock reporting and processing. And i've tried many ways to achieve one. And finally i've came with final. This is it check it out.


Source code:


require_once 'classCol/misc.php';
require_once 'classCol/classStockCalc.php';

/**
* Example: Lets say we have 5 stock entry.
* We arrange them in this format
* DATE---QTY---PRICE---VALUE---REFERENCE
* where: "---" is delimiter.
* Dont worry if one of the value is negative
* since the filter will only take --- exactly.
*
*/
$isDbg = _IS_DEBUG;
$CStockCalc = new stockCalc;

$egTx = array("STOCK_DATE" => array("01-06-2008",
"02-06-2008",
"03-06-2008",
"04-06-2008",
"05-06-2008"),
"QTY" => array("1000",
"2000",
"1000",
"2000",
"1000"),
"PRICE" => array("200",
"400",
"300",
"400",
"250"),
"VALUE" => array("200000",
"800000",
"300000",
"800000",
"250000"),
"REFERENCE" => array("000001/STKOUT/06-2008",
"000002/STKOUT/06-2008",
"000003/STKOUT/06-2008",
"000004/STKOUT/06-2008",
"000005/STKOUT/06-2008",
"000006/STKOUT/06-2008"));

$szEgTx = sizeof($egTx["REFERENCE"]) - 1; //downtop loop, subs by one
for($iTx = $szEgTx; $iTx >= 0; $iTx--){ //where $iTx >= 0

$dataTx = $egTx["STOCK_DATE"][$iTx] ."---".
$egTx["QTY"][$iTx] ."---".
$egTx["PRICE"][$iTx] ."---".
$egTx["VALUE"][$iTx] ."---".
$egTx["REFERENCE"][$iTx];

$CStockCalc->addDetails($dataTx);
}

$qtyOut = 2500;

//calculate the FIFO
$CStockCalc->calcFifo($qtyOut);

$resQtyOut = $CStockCalc->getQtyOutDetails();

$resQtyBal = $CStockCalc->getQtyBalDetails();

dbgInfo("resQtyOut",$resQtyOut["QTY"],$isDbg);
dbgInfo("resQtyOut",$resQtyOut["VALUE"],$isDbg);
dbgInfo("resQtyBal",$resQtyBal["QTY"],$isDbg);
dbgInfo("resQtyBal",$resQtyBal["VALUE"],$isDbg);


Yup, itu aja. Silahkan method nya dipilih sendiri utk fifo, lifo ato average.
Full source code bisa di download disini stockCalc. Artikel selanjutanya akan bahas mengupas classStockCalc ini.

Gbu.

Coding for life, coding with ethic.

Monday, July 14, 2008

Less Design


Hello Php-er,

Hari ini abit out of topic, gw frustasi abis ama yg namanya CSS. Gw grogi kalo liat org lain bgt Hebat nya ngeramu CSS spy page nya jadi ciamik. Karena gw udah cuba utk yg kesekian kali nya gw gagal. Entah krn gw lack of artistic senses ato kurang ilmunya.

Anyway gw udah cuba pake editor Nvu. Huh... org lain hasilnya keren and jreng abess, tapi gw utk buat tampilan form login udah ampir 2 minggu ga jadi2

Walau gw merasa menyebalkan tapi gw ada belajar hal2 baru. Terutama utk Design.
Kadang gw berpikir, mungkin jg byk PHP-ers out there, kalo applikasi nya ciamik mestinya udah cukup. Hahahaha tetapi ternyata gw salah. Sapa yg mau mampir kalo page lo brantakan?? Walau sana sini nya canggih? Setidaknya design minimal harus ada.

Nah utk gw design minimal udah gw usahakan dengan keras, tapi ada aja yg komentar duhh mata gw "sakit" liat tampilan elo. Yup gw akuin aja emg gw tidak begitu bisa utk masalah design. Dan gw mau terus belajar. Gw obok inet punya CSS references dan cari template utk gw pelajarin dan modifikasi. Mohon doa restu nya .

Ok itu aja dolo. Gbu all.

Coding for life, Coding with ethic.

Sunday, July 13, 2008

Long Absent with simple framework


Guys sorry, it has been a while since the last entry yahhh...
Utk project search4Gold mungkin ga bisa dilanjutin, sorry for the inconsistency.
Karena gw lagi fokus abis2 an sama project ERP gw.

Gw ada sedikit cerita2 ini ttg pencarian framework yg sesuai dgn gw.
Ternyata dari QPhp, CakePhp dan trakir CodeIgniter, tak ada satupun dari
mereka yg buat gw jatuh hati.

Kenapa gw perlu waktu utk bljr dan waktu nya tidak sebentar. Gw perlu yg instant,
atau paling tidak yg waktu bljr nya minim. Sebenernya sempet mau pakai QPhp.
Karena utk framework nya sendiri bisa dicomot2 utk di taruh di class template yg sdg
gw gunakan. Alas itupun ga bisa dijalani krn ada bbrp yg menurut gw hummm...
it is too much. Alhasil gw modif sana sini jadi frustasi :(

Akhirnya gw putusin utk membuat framework sendiri. Tidak sepenuh nya scope framework.
Tetapi setidaknya gw uda ga perlu melakukan pengungalan thd code2 yg biasa nya gw harus
copy paste terus dan muncul nya berulang. Khusus nya utk melakukan koneksi dan
query ke database. Nanti gw akan kasih liat bagaimana gw buat nya.

Class yg gw buat tidak kompleks setidaknya memenuhi yg gw mau. Tidak jelimet,
byk config, bla bla... Gw lbh seneng dan gw rasa org lain yg baca dan gunakan juga lbh tidak
ribet. Tidak perlu meluangkan waktu terlalu banyak utk menggunakannya dan krn sifatnya
masih minimalis, kesempatan utk mengembang kan class nya lbh besar.

file nya bisa di download disini classOracleDB.php
Gw akan tunjukan bagaimana framework-like class ini bantu gw.
sebelumnya utk melakukan koneksi dan query gw pake:


if( $conn = OCILogon($userName, $userPwd, $userSid)){
$query = "select something".
"from here";
$s = OCIParse($conn,$query);
$r = OCIExecute($s, OCI_DEFAULT);
bla bla...

OCILogoff($conn);
}else{
echo "DB connection error";
OUT();
}

dan stl ada framework:

$COracleDb = new oracleDb;
$COracleDb->init($userName,
$userPwd,
$userSid,
_NO_COMMENT);

if($COracleDb->connect()){
$query = "select something".
"from here";
$COracleDb->sendQuery($query,
_IS_FETCH,
$isDbg);
bla.. bla..

$COracleDb->dc();
}


Ini quick brief dari simple framework gw. Kalo elo donlod and liat
isi dari class oracleDb nya masih ada bbrp fungsi yg didalam nya
seperti : debug_backtrace utk nunjukin query elo spy bisa lo test
di CLI ato client nya oracle ato DB server lainnya. Dan kelebihannya adalah
kalo elo mau tambah fungsionalitas dari method2 yg ada, fungsi2 class,
lo tinggal tambahin di class nya saja. Jadi elo ga perlu tambahin scr manual
ke t4 yg elo perlukan.

Gw bs seperti ini karen gw udah kerja dgn 200 files lbh utk project ERP gw.
Jadi kalo ada perubahan gila dolo nya gw udah kayak pejantan tangguh,
modifin tuhh file2 yg gunakan fungsi2 tertentu. Thx God akhir nya Dia
bisa kasih gw jalan keluar yg terbaik. Thx Jesus! You are AWESOME!!!

Ok guys sekian dolo. God bless you all and keep coding.

Coding for life, coding with ethic.

Wednesday, May 14, 2008

CLASS101- Artikel 3


Ini adalah artikel terakhir dari serangkaian class101. Artikel ini akan membahasa teknik yg lebih lanjut antara lain: menempatkan code class di file yg terpisah dari code main... Dan jangan kaget karena artikel ini juga lsg memperlihatkan bagaimana "class-in-action", utk aplikasi yg saya lampirkan adalah project saya... searchEngine :D, project "search4Gold" walau masih primitif.

Aplikasi yg dibahas akan dimulain dari tahap primitif sampai dengan penyempurnaan dan disini akan terlihat bgaimana class membantu dlm pengambangan project. Jika ada masukan silahkan ato mungkin code di copy dan dikembang saya lebih senang... berikan feedback elo kalo perlu lo bisa kasih hasil pengembangan elo dan diposting disini. Langsung aje...

Buat dolo file class nya... Inget utk mempermudah taruh ke-2 file pada directory yg sama kecuali anda sudah mahir dlm pemberian "../../../namaFileMu"

file: classSearchEngine.php
/**
* A primitive search engine
* it searches for needle from a string by comparing char by char
*
* @author Adesanto Asman
* @version 1.0
* @license freeware
* @package search4Gold
*/

/**
* Variables of searchEngine
* @package varsSearchEngine
*/
class varsSearchEngine{

/**
* @var boolean TRUE = Case sensitive, FALSE = no case :D
*/
var $case;

/**
* @var string string we tried to search for
*/
var $needle;

/**
* @var integer how many file?
*/
var $nFiles;

/**
* @var integer search results
*/
var $schFound;

/**
* @var array filenames
*/
var $filename = array();

/**
* @var array the results are store here
*/
var $schResult = array("FILE_NAME" => array(),
"FILE_LINE" => array(),
"FILE_STRING" => array());

/**
* @var boolean flag of class
*/
var $status;
}

/**
* Methods of searchEngine
* @package mthSeacrhEngine
* @see varsSearchEngine
*/
class mthSearchEngine extends varsSearchEngine{

/**
* it searches char-by-char
* @see $needle, $case
* @param string $needle the string we tried to search
* @param string $string the file string we search from
* @param boolean $case is it case sensitive?
* @return boolean
*/
function searchEngine($needle, $string, $case){

$maxLenNeedle = strlen($needle); // Get needle length. It is important to ease the search
$maxLenString = strlen($string); // Get String length. It is important to set the max search loop
$match = FALSE;
if($case == 0){ //not case sensitive

$needle = strtolower($needle);
$string = strtolower($string);
}
for($i = 0; $i < $maxLenString; $i++){ if($needle[0] == $string[$i]){ //if the first char of needle match with the string then loop as much as the needle' length if(($maxLenString - $i) >= $maxLenNeedle){
//before we continue check if the remainded chars not lower than
//the needle length

$match = TRUE;
for($ix = 1; $ix < $maxLenNeedle; $ix++){ if($needle[$ix] != $string[($i+$ix)]){ $match = FALSE; } } if($match == TRUE){ //echo "We found the string you looking for ".$needle." --- ".$string." //\n"; return TRUE; } }else{ //echo "No Luck!\n"; return FALSE; } } } //echo "No Luck!\n"; return FALSE; } /** * init the filename, keyword, search string and how many files from... * @see $filename, $needle, $case, $nFiles * @param string $filename * @param string $needle * @param string $string * @param boolean $case * @param integer $nFiles */ function initSearchEngine( $filename, $needle, $case, $nFiles){ for($i = 0; $i < $nFiles; $i++){ $this->filename[$i] = $filename[$i];
}
$this->nFiles = $nFiles;
$this->needle = $needle;
$this->case = $case;
}

/**
* start the search
* it copies all fetched info into array $schResult and integer $schFound
* @see $schResult, $schFound
* @param void
*/
function searchNow(){

$schFound = 0;
for($i = 0; $i < $this->nFiles; $i++){
//foreach file name do search string perline of file

$lnFile = 1;
$fh = fopen($this->filename[$i],'r') or
die("can't open ".$this->filename[$i]." : ".$php_errormsg." ");
while($strFile = fgets($fh)) {

if(mthSeacrhEngine::searchEngine($this->needle, $strFile, $this->case) == TRUE){
//if we found one then copy the info to schResult

$this->schResult["FILE_NAME"][$schFound] = $this->filename[$i]; //copy file name
$this->schResult["FILE_LINE"][$schFound] = $lnFile; //copy file line
$this->schResult["FILE_STRING"][$schFound] = $strFile; //copy file string
$schFound++;
}
$lnFile++;
}
}
$this->schFound = $schFound;
}

/**
* Print the results
* @param void
*/
function searchPrint(){

for($i = 0; $i < $this->schFound; $i++){

echo "We found needle: \"".$this->needle."\" at ".
"(".$this->schResult["FILE_NAME"][$i]." : ".
$this->schResult["FILE_LINE"][$i]."
) ".
$this->schResult["FILE_STRING"][$i]." \n";
}
echo "\n".
"We have ".$this->schFound." results for \"".$this->needle."\" keywords\n";
}
}

$filename = array("../../tocmenu_821/upentrytodb.php",
"../../tocmenu_821/stock_process.php",
"../../tocmenu_821/trans_process.php");
$needle = "STK_NUM";
$case = FALSE;
$nFiles = sizeof($filename);

$schMe = new mthSearchEngine;
$schMe->initSearchEngine( $filename, $needle, $case, $nFiles);
$schMe->searchNow();
$schMe->searchPrint();
Pembahasan:

Kita mulai dari mainSearchEngine.php dolo dari yg sedikit dolo baru masuk ke yg sedikit lebih byk parameter nya...
String $filename = array("test.txt"); <-- disini lo masukin nama2 file yg mau lo search... Loh KOK!!! primitif amat, lahh khan gw udah bialng ini masih primitif! String $needle <-- string yg mau lo cari Boolean $case TRUE|FALSE <-- case sensitif ga?? Oh nooo positif hamil dehh :D Integer $nFiles <-- byk nya file yg lo definisikan di $filename. Yup... ok kita udah bisa search file... :D Artikel selanjutnya dah bukan class-101 tetapi adalah pengembangan modul ini... Kita buat search engine ini makin aduhai... Suggestions and Critics are very welcome...

Download file lengkap disini

Sunday, May 11, 2008

CLASS-101 Artikel 2

Oke lanjut... kali
ini tentang bagaimana lo mengembangkan suatu class. Dengan "extends" keyword.
Caranya:



File: classUser.php

/**
* Class Section
*/

class USER{

var $nama;

function nmGue($nama){

$this->nama = $nama;
}

function siapeGue(){

echo "NAMA : ".$this->nama."\n";
}
}

class extUSER extends USER{

var $umur;

function initExtUSER($nama, $umur){

$this->nama = $nama;
$this->umut = $umur;
}

function dataGue(){

echo "NAMA : ".$this->nama."\n";
echo "UMUR : ".$this->umur."\n";
}
}

/**
* End of Class section
*/

$class101 = new USER;
$class101->nmGue("Adesanto Asman");
$class101->siapeGue();
$class102 = new extUSER;
$class102->initExtUSER("Ade","26");
$class102->dataGue();

/**
*end of main section
*/

OUTPUT:
NAMA : Adesanto Asman
NAMA : Ade
UMUR : 26
WOW! Gimana lo ngerti? Jadi gini $class101 sama spt penjelasan artikel
pertama gw nahh utk $class102 adalah object pengembangan dari class USER
oleh class extUSER. Begini extUser ga punya variable $nama, tapi kenapa bisa
ada hahahahah karena dia adalah pengembangan dari class USER jadi
object dan method USER bisa diakses oleh extUSER selama
variable dan method USER dibuat public lain hal nya kalo di protected.
Biar lo ngerti nehh lo ke
sini


Artikel 3 akan langsung ke contoh real yg bisa lo lsg pake....

Saturday, May 10, 2008

CLASS-101 Artikel 1

Oke kita lsg aje dehh... Sesuai topik artikel ini bakalan bahas gimana lo buat sebuah class dalam php.
Sebisa mungkin stl lo plototin nih artikel trus NYOBAIN coding di t4 elo, bisa nambah referensi...
Untuk yg udah jago alias dah jadi mbah nya PHP tolong dikoreksi tulisan gw dan kasih masukan supaya bisa lebih improved! Kalo kasih kritik jgn Lupa SARAN!!!

File: classUser.php

/**
* Class Section
*/
class USER{
   var $nama;

     function nmGue($nama){
       $this->nama = $nama;
     }

   function siapeGue(){
       echo "NAMA : ".$this->nama."\n";
   }
}
/**
* End of Class section
*/

/**
* main section
*/
class101 = new USER;
$class101->nmGue("Adesanto Asman");
$class101->
siapeGue();
/**
*end of main section
*/
}

OUTPUT:
NAMA: Adesanto Asman

gimane bingung... ok pelototin sekali lagi... gini penjelasannya
pertama lo buat class elo nahh $nama adalah variable dari class USER dimana akses nya adalah publik...
Duhh lo ga tau publik itu apa okelahh gw bahas dikit dalam php ada yg istilah nya visibility yaitu PUBLIC/PRIVATE/PROTECTED nahh utk gampang nya lo klik ke sini capek gw kalo harus ketik ulang yg sperti di link itu.... KENAPA?? Bahasa inggris trus lo dumel?? tips gw pelajarin bahasa inggris setidak nya supaya lo bisa baca referensi yg lebih mendalam. Silahkan lo komplen kalo gw ngomong begini...

Lanjut... didalem class USER ada 2 fungsi kalo panggilan keren mereka adalah METHOD, yg pertama adalah untuk memberikan data (initialize) ga ngerti inggris nya duhh mending lo kudu nyari kamus elektronik! dimana?? GOOGLE gila! oke... disini variable class di berikan data dengan cara $this->nama inget nama dengan $this-> menyatakan ini adalah variable class dan $nama adalah parameter method... nahh bentar... kembali ke public/private/protected variable $this->nama adalah publik jadi tanpa method pun lo bisa aja lsg kasih dia data di main section dengan cara $class101->nama = "Adesanto Asman"... booom!!! dah ngerti sukur kalo iya..

Method yg kedua adalah utk menampilkan isi data daripada $this->nama... nahhh sampe sini makin bingung ato tamabah ilmu? moga2 nambahh... Artikel selanjutnya akan memabahas gimana lo taruh class section dan main section di dalam file yg terpisah udah tau?? bagus. Lo belom? oke lanjut ke artikel ke 2


WELCOME

Thx Lord for giving me the chance to write...

Horeee... Setelah sekian lama benti nulis akir nya balik juga...
Kali ini topik utk seluruh tulisan gwadalah PHP for life, dimana gw akan membagikan pengalaman gw.
Semoga apa yang menjadi tulisan gw bisa bantu IT'ers indo utk lebih maju...

Dan satu lagi sekirannya tulisan gw bisa jadi referensi ato digunakan lsg ke aplikasi real... Ok kita mulai aja dariapada ngoceh bau!