Kursus Membuat Web

iklan

Membuat Method (OOP) dengan PHP (PHP versi 5.6.x dan 7.0.x)

Method dalam suatu class dideklarasikan sama seperti membuat sebuah function.

Membuat METHOD

Berikut ini adalah contoh kita membuat satu method sapa().

<?php
	class orang
	{
		function sapa()
		{
			echo "Hallo Dunia!";
		}
	}
?>

Function method_exists()

Untuk mengecek apakah suatu method sudah dideklarasikan atau belum kita bisa menggunakan function method_exists().

<?php
	class orang
	{	
		function sapa()
		{
			echo "Hallo Dunia!";
		}
	}
?>
<!doctype html>
<html lang="id">
	<head>
		<title>Method</title>
		<meta charset="UTF-8">
	</head>
	<body>
	<?php
		$guru = new orang;
		echo "Apakah method sapa() ada ? " .(method_exists($guru, 'sapa')?'true':'false') ."<br>";
		echo "Apakah method sapa() ada ? " .(method_exists('orang', 'sapa')?'true':'false');
	?>
	</body>
</html>

Jika kode diatas kita jalankan di browser maka akan keluar seperti ini :

  • Apakah method sapa() ada ? true
  • Apakah method sapa() ada ? true

method_exists($guru, 'sapa') disini yang dicek adalah method sapa() pada object guru, dan hasilnya adalah true, karena pada object guru terdapat method sapa(). Ingat ! object guru adalah instance dari class orang, didalam class orang kita mendeklarasikan method sapa().

method_exists('orang', 'sapa') disini yang dicek adalah method sapa() pada class orang, dan hasilnya adalah true, karena pada class orang terdapat method sapa().

Memanggil Method

Cara memanggil method dalam suatu class seperti ini :

<?php
	$guru->sapa();
?>

Buat kode lengkap seperti ini dan jalankan di browser !

<?php
	class orang
	{	
		function sapa()
		{
			echo "Hallo Dunia!";
		}
	}
?>
<!doctype html>
<html lang="id">
	<head>
		<title>Method</title>
		<meta charset="UTF-8">
	</head>
	<body>
	<?php
		$guru = new orang;
		$guru->sapa();
	?>
	</body>
</html>

Jika kode diatas dijalankan di browser maka outputnya ini :

  • Hallo Dunia!

Function get_class_methods().

Kita bisa melihat semua method yang di deklarasikan dalam suatu class dengan menggunakan function get_class_methods().

Untuk memudahkan pemahaman mari kita buat kode seperti di bawah ini :

<?php
	class orang
	{	
		function sapa()
		{
			echo "Hallo Dunia!";
		}
	}
?>
<!doctype html>
<html lang="id">
	<head>
		<title>Method</title>
		<meta charset="UTF-8">
	</head>
	<body>
	<?php
		$guru = new orang;
		echo "<pre>" .print_r(get_class_methods('orang'),true)."</pre>";
	?>
	</body>
</html>

Jika kode diatas kita jalankan di browser maka akan keluar seperti ini :

Array
(
    [0] => sapa
)

Itulah method yang ada di dalam class orang, hanya ada satu method dengan nama sapa().

Method dapat memiliki argumen / parameter dan return nilainya.

Berikut ini kita akan buat satu method dengan dua buah argumen / parameter.

<?php
	class orang
	{	
		function nama_lengkap($nama_depan,$nama_belakang)
		{
			return $nama_depan ." " .$nama_belakang;
		}
	}
?>
<!doctype html>
<html lang="id">
	<head>
		<title>Method</title>
		<meta charset="UTF-8">
	</head>
	<body>
	<?php
		$guru = new orang;
		echo $guru->nama_lengkap("Muhammad","Falah");
	?>
	</body>
</html>

Jika kode diatas kita jalankan di browser maka akan keluar seperti ini :

  • Muhammad Falah

Pemangilan method yang memiliki argumen / parameter, maka kita juga harus memasukkan nilai untuk argumen / parameter yang terdapat pada method tersebut. Pada contoh diatas method nama_lengkap() memiliki dua buah argumen / parameter, maka cara memanggil method tersebut seperti ini : $guru->nama_lengkap("Muhammad","Falah"); nilai "Muhammad" adalah untuk argumen / parameter pertama dan nilai "Falah" untuk argumen / parameter yang kedua.

Jika kita memanggil method seperti ini $guru->nama_lengkap("Muhammad"); maka akan memunculkan error Warning: Missing argument 2 for orang::nama_lengkap(), called in ..., Notice: Undefined variable: nama_belakang in ...., hal ini karena kita tidak memasukkan nilai untuk argumen yang kedua yaitu nama_belakang.

Method dapat memiliki argumen / parameter dengan nilai default.

Pada contoh diatas, ketika kita membuat suatu method yang memiliki argumen / parameter, maka kita harus memasukkan nilai setiap argumen / parameter yang ada, jika tidak maka akan memunculkan pesan error. Nah, kita bisa juga membuat method yang memiliki argumen / parameter dimana kita bisa menetapkan nilai default untuk masing-masing argumen / parameter, sehingga jika method tersebut dipanggil dan nilai argumen / paramternya tidak diisi, maka nilai yang diberikan adalah nilai yang sudah ditentukan diawal.

Untuk memudahkan pemahaman, buatlah kode seperti dibawah ini :

<?php
	class orang
	{	
		function nama_lengkap($nama_depan = "Muhammad",$nama_belakang = "Falah")
		{
			return $nama_depan ." " .$nama_belakang;
		}
	}
?>
<!doctype html>
<html lang="id">
	<head>
		<title>Method</title>
		<meta charset="UTF-8">
	</head>
	<body>
	<?php
		$guru = new orang;
		echo $guru->nama_lengkap();
	?>
	</body>
</html>

Jika kode diatas kita jalankan di browser maka akan keluar seperti ini :

  • Muhammad Falah

Pada kode diatas, kita memanggil method tanpa memberikan nilai untuk tiap argumen / parameter, tetapi kode tidak error dan memunculkan hasil keluaran sesuai dengan nilai default yang kita telah ditetapkan.

Function call_user_func().

Kita bisa juga memanggil method dengan menggunakan function call_user_func().

Berikut ini contohnya :

<?php
	class orang
	{	
		function nama_lengkap($nama_depan , $nama_belakang)
		{
			return $nama_depan ." " .$nama_belakang;
		}
	}
?>
<!doctype html>
<html lang="id">
	<head>
		<title>Method</title>
		<meta charset="UTF-8">
	</head>
	<body>
	<?php
		$guru = new orang;
		echo call_user_func(array($guru,'nama_lengkap'),'Muhammad','Falah');
	?>
	</body>
</html>

Jika kode diatas kita jalankan di browser maka akan keluar seperti ini :

  • Muhammad Falah

Function call_user_func_array().

Kita bisa juga memanggil method dengan menggunakan function call_user_func_array().

Berikut ini contohnya :

<?php
	class orang
	{	
		function nama_lengkap($nama_depan , $nama_belakang)
		{
			return $nama_depan ." " .$nama_belakang;
		}
	}
?>
<!doctype html>
<html lang="id">
	<head>
		<title>Method</title>
		<meta charset="UTF-8">
	</head>
	<body>
	<?php
		$guru = new orang;
		echo call_user_func_array(array($guru,'nama_lengkap'),array('Muhammad','Falah'));
	?>
	</body>
</html>

Jika kode diatas kita jalankan di browser maka akan keluar seperti ini :

  • Muhammad Falah

Mengakses variabel global dari Method.

Variabel yang posisinya (letaknya) diluar class, disebut variabel global. Sebuah method tidak bisa mengakses variabel yang bersifat global, jika kita mengakses variabel global pada method dalam suatu class, maka akan memunculkan Notice: Undefined variable:

Coba buat kode seperti dibawah ini lalu jalankan di browser :

<?php
	class orang
	{	
		function global_var($katakan)
		{
			$nama;
			echo $nama .' mengatakan ' .$katakan;
		}
	}
?>
<!doctype html>
<html lang="id">
	<head>
		<title>Method</title>
		<meta charset="UTF-8">
	</head>
	<body>
	<?php
		$guru = new orang;
		$nama = "Muhammad Falah"; // ini disebut variabel global
		echo $guru->global_var("Hallo");
	?>
	</body>
</html>

Maka hasil keluarnya adalah seperti ini :

  • Notice: Undefined variable: nama in D:\myweb\oop\method6.php on line 7
  • mengatakan Hallo

Untuk dapat mengakses variabel yang sifatnya global tersebut kita bisa menggunakan keyword "global"

Buatlah kode seperti dibawah ini, lalu jalankan !

<?php
	class orang
	{	
		function global_var($katakan)
		{
			global $nama; // gunakan keyword global untuk mengakses varibel global
			echo $nama .' mengatakan ' .$katakan;
		}
	}
?>
<!doctype html>
<html lang="id">
	<head>
		<title>Method</title>
		<meta charset="UTF-8">
	</head>
	<body>
	<?php
		$guru = new orang;
		$nama = "Muhammad Falah"; // ini disebut variabel global
		echo $guru->global_var("Hallo");
	?>
	</body>
</html>

Jika kode diatas kita jalankan di browser maka akan keluar seperti ini :

  • Muhammad Falah mengatakan Hallo

Sekarang variabel global bisa digunakan dalam method di suatu class.

Selanjutnya kita akan membahas tentang pseudo variabel $this.

muhammad falah

Saya Muhammad Falah, jika Anda ingin langsung belajar dengan Saya, silakan ikuti kursus membuat web yang Saya bimbing atau ikuti Saya di :

Muhammad Falah Youtube Channel Muhammad Falah LinkedIn Muhammad Falah Google Plus Muhammad Falah Twitter Muhammad Falah Facebook

copy right © 2015