Skip navigation

sedikit reminder untuk behaviour dari php function berikut variable yang ada didalamnya

– satu buah function , banyak return value

function coba($a){
if($a==1){
return 1;
}else if($a==2){
return 2;
}
return 2000;
}

jika <?=coba(1); ?> atau <?=coba(2); ?> outputnya seperti apa? kalau melihat fungsi diatas sepertinya berapapun value parameternya hasil retrun valuenya akan tetap juga 2000, tapi benarkah itu? salah,  begitu sebuah fungsi memberi return value, maka statement dibawahnya tidak dijalankan, alias sama saja dengan exit() (bedanya jika exit() akan memberhentikan keseluruhan proses, maka return cuma memberhentikan proses dalam fungsi tersebut). jadi hati-hati bagi anda yang sering menulis return value di awal2 baris function dan masih ada baris code lagi dibawahnya yang seharusnya dijalankan, maka baris dibawah return value tersebut dianggap tidak ada!!

-statik variable didalam function

kalau yang ini saya banyak terinspirasi dari baris code dari codeIgniter

function cek_statik(){
static $v;
if(!isset($v)){
$v=’haloo’;
}
return $v;
}

berapa kalipun anda memanggil fungsi tersebut value yang dihasilkan akan tetap sama yaitu ‘haloo’ . kemudian anda pasti bertanya apa istimewanya? simpel saja, coba anda bayangkan kalau statement $v=’haloo’; dari contoh saya tersebut diganti dengan ratusan baris code yang juga melakukan akses database mysql , maka alangkah hematnya jika melakukan proses tersebut cuma satu kali meskipun fungsi tersebut  dipanggil berulang2

Advertisements

jika melihat source code dari beberapa opensource cms, mungkin kita yang masih newbie tentang php (seperti saya) bertanya tanya ketika melihat variabel konstant semacam __FILE__  atau __DIR__  dan dari mana datangnya value dari variabel tersebut.  ternyata jika kita coba ‘echo’ kan variabel tersebut ternyata sudah terdapat valuenya, yah misal __FILE__ berisi value tentang nama file plus direktori file php kita. dan variable-variable constant tersebut memang sudah embeded secara default oleh si php dan dinamakan PHP magic Constant.

Sampai PHP 5.3.0 telah terdapat 7 jenis magic constant:
*errr  copas dari sourcenya aja dari sini 😛  *

Name Description
__LINE__ The current line number of the file.
__FILE__ The full path and filename of the file. If used inside an include, the name of the included file is returned. Since PHP 4.0.2, __FILE__ always contains an absolute path with symlinks resolved whereas in older versions it contained relative path under some circumstances.
__DIR__ The directory of the file. If used inside an include, the directory of the included file is returned. This is equivalent to dirname(__FILE__). This directory name does not have a trailing slash unless it is the root directory. (Added in PHP 5.3.0.)
__FUNCTION__ The function name. (Added in PHP 4.3.0) As of PHP 5 this constant returns the function name as it was declared (case-sensitive). In PHP 4 its value is always lowercased.
__CLASS__ The class name. (Added in PHP 4.3.0) As of PHP 5 this constant returns the class name as it was declared (case-sensitive). In PHP 4 its value is always lowercased.
__METHOD__ The class method name. (Added in PHP 5.0.0) The method name is returned as it was declared (case-sensitive).
__NAMESPACE__ The name of the current namespace (case-sensitive). This constant is defined in compile-time (Added in PHP 5.3.0).

biar lebih mudah kita coba saja langsung dengan script dibawah ini

<html>
<head>
</head>
<body>
<?
class Classku{
function getInfo(){
echo ‘baris ke  : ‘.__LINE__.'<br />’;
echo ‘nama file : ‘.__FILE__.'<br />’;
echo ‘nama dir  : ‘.__DIR__.'<br />’;
echo ‘nama function : ‘.__FUNCTION__.'<br />’;
echo ‘nama Class : ‘.__CLASS__.'<br />’;
echo ‘nama Method : ‘.__METHOD__.'<br />’;
echo ‘Name Space : ‘.__NAMESPACE__.'<br />’;
}
}
?>
data tentang file ini :<br />
<?
Classku::getInfo();
?>
</body>
</html>

kebetulan saya memakai php 5.2.x,  jadi untuk __DIR__ dan __NAMESPACES__ tidak ada valuenya, tetapi seperti keterangan diatas, bagi pengguna php < 5.3.0 bisa mendapatkan value dari __DIR__ dengan cara alternatif yaitu dengan memakai dirname(__FILE__).

Have a nice Codes 😀

saya sempat bertanya2 ketika melihat di source bebarapa website, tertulis penamaan file javascript sebagai berikut:

<script language = “javascripts” src=”filejavascripts.js?1.0.2″ >

tampak dalam pemanggilan file javascript di belakang nama filenya nya ada tanda “?1.0.2”. asumsi pertama dari saya itu adalah passing variable untuk javascript *mungkin karena kebiasaan passing variable di php :-P*. akhirnya setelah browsing sana sini ketemu petunjuknya disini di jawaban no 3. kesimpulan pemberian parameter di belakang tanda ? tersebut selain untuk menjelaskan versi/tgl pembuatan dari script juga bertujuan jika terjadi perubahan pada isi script bisa mereload file javascript tsb (sebab kadang browser masih mengambil file script lama dari cache), tentunya dengan merubah parameter di belakang tanda ? lagi.